#[lang = "sized"] pub trait Sized {} trait Foo { type A; type B; fn new(a: Self::A, b: Self::B) -> Self; } struct Baz(i32, f32); impl Foo for Baz { type A = i32; type B = f32; fn new(a: Self::A, b: Self::B) -> Self { Baz(a, b) } } fn main() { Baz::new(123, 456f32); }