#[lang = "sized"] pub trait Sized {} trait Foo { type A; fn test(a: Self::A) -> Self::A { a } } struct Bar(i32); impl Foo for Bar { type A = i32; } struct Baz(f32); impl Foo for Baz { type A = f32; } fn main() { let a; a = Bar(123); let b; b = Bar::test(a.0); let c; c = Baz(123f32); let d; d = Baz::test(c.0); }