3 ms·
Tangentially, Rust goes well out of its way to avoid "type inference at a distance". For example, unlike Haskell or most MLs, type inference will not work acros
by shigeo 6y ago
Tangentially, Rust goes well out of its way to avoid "type inference at a distance". For example, unlike Haskell or most MLs, type inference will not work across a function boundary.
- xscott 6y agoHere's one that caught me off guard: #[derive(Debug)] struct Foo<T> { pub bar: T } fn hmm<T>(x: T) -> Foo<T> { Foo { bar: x } } fn main() { let f:Foo<f32> = hmm(1.23); print!("got: {:?}\n", f); } So maybe that's not crossing function boundaries, but the type for the generic "hmm" function as the rvalue is being inferred from the explicitly declared type of the lvalue. I know it's pointless to try and change anyone's mind about this, but I personally find it unsettling :-)