fn foo(a: usize, b: usize) -> usize { a } fn bar() -> usize { 42 } struct S(usize, usize); enum E { A(usize), B { a: usize }, } struct V(); trait T { fn baz(x: usize, y: usize) -> usize { x } fn bat(x: usize) -> usize { 42 } fn bax(x: usize) -> usize { 42 } fn bach(x: usize) -> usize; fn ban(&self) -> usize { 42 } fn bal(&self) -> usize; } struct X; impl T for X { fn bach(x: usize) -> usize { 42 } fn bal(&self) -> usize { 42 } } fn main() { let _: usize = foo; //~ ERROR mismatched types let _: S = S; //~ ERROR mismatched types let _: usize = bar; //~ ERROR mismatched types let _: V = V; //~ ERROR mismatched types let _: usize = T::baz; //~ ERROR mismatched types let _: usize = T::bat; //~ ERROR mismatched types let _: E = E::A; //~ ERROR mismatched types let _: E = E::B; //~ ERROR expected value, found struct variant `E::B` let _: usize = X::baz; //~ ERROR mismatched types let _: usize = X::bat; //~ ERROR mismatched types let _: usize = X::bax; //~ ERROR mismatched types let _: usize = X::bach; //~ ERROR mismatched types let _: usize = X::ban; //~ ERROR mismatched types let _: usize = X::bal; //~ ERROR mismatched types let _: usize = X.ban; //~ ERROR attempted to take value of method let _: usize = X.bal; //~ ERROR attempted to take value of method let closure = || 42; let _: usize = closure; //~ ERROR mismatched types }