struct Point { x: T, y: T, } type PointF = Point; struct Pair { x: T, y: U, } type PairF = Pair; fn main() { let pt = PointF { x: 1, //~^ ERROR mismatched types //~| expected `f32`, found integer y: 2, //~^ ERROR mismatched types //~| expected `f32`, found integer }; let pt2 = Point:: { x: 3, //~^ ERROR mismatched types //~| expected `f32`, found integer y: 4, //~^ ERROR mismatched types //~| expected `f32`, found integer }; let pair = PairF { x: 5, //~^ ERROR mismatched types //~| expected `f32`, found integer y: 6, }; let pair2 = PairF:: { x: 7, //~^ ERROR mismatched types //~| expected `f32`, found integer y: 8, }; let pt3 = PointF:: { //~ ERROR this type alias takes 0 generic arguments but 1 generic argument x: 9, //~ ERROR mismatched types y: 10, //~ ERROR mismatched types }; match (Point { x: 1, y: 2 }) { PointF:: { .. } => {} //~ ERROR this type alias takes 0 generic arguments but 1 generic argument //~^ ERROR mismatched types } match (Point { x: 1, y: 2 }) { PointF { .. } => {} //~ ERROR mismatched types } match (Point { x: 1.0, y: 2.0 }) { PointF { .. } => {} // ok } match (Pair { x: 1, y: 2 }) { PairF:: { .. } => {} //~ ERROR mismatched types } match (Pair { x: 1.0, y: 2 }) { PairF:: { .. } => {} // ok } }