4 ms·
Here'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 } } f
by xscott 6y ago
Here'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 :-)