1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#![feature(associated_type_defaults)]
// Tests that a trait with one defaulted and one non-defaulted assoc. type behaves properly.
trait Trait {
type Foo = u8;
type Bar;
}
// `Bar` must be specified
impl Trait for () {}
//~^ error: not all trait items implemented, missing: `Bar`
impl Trait for bool {
//~^ error: not all trait items implemented, missing: `Bar`
type Foo = ();
}
impl Trait for u8 {
type Bar = ();
}
impl Trait for u16 {
type Foo = String;
type Bar = bool;
}
fn main() {
let _: <u8 as Trait>::Foo = 0u8;
let _: <u8 as Trait>::Bar = ();
let _: <u16 as Trait>::Foo = String::new();
let _: <u16 as Trait>::Bar = true;
}
|