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