| struct Point<T> { |
| x: T, |
| y: T, |
| } |
| |
| type PointF = Point<f32>; |
| |
| struct Pair<T,U> { |
| x: T, |
| y: U, |
| } |
| |
| type PairF<U> = Pair<f32,U>; |
| |
| 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::<f32> { |
| 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::<i32> { |
| x: 7, |
| //~^ ERROR mismatched types |
| //~| expected `f32`, found integer |
| y: 8, |
| }; |
| |
| let pt3 = PointF::<i32> { //~ ERROR wrong number of type arguments |
| x: 9, //~ ERROR mismatched types |
| y: 10, //~ ERROR mismatched types |
| }; |
| |
| match (Point { x: 1, y: 2 }) { |
| PointF::<u32> { .. } => {} //~ ERROR wrong number of type arguments |
| //~^ 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::<u32> { .. } => {} //~ ERROR mismatched types |
| } |
| |
| match (Pair { x: 1.0, y: 2 }) { |
| PairF::<u32> { .. } => {} // ok |
| } |
| } |