#![feature(fn_delegation)] #![allow(incomplete_features)] trait Trait { fn method(&self); const CONST: u8; type Type; #[allow(non_camel_case_types)] type method; } impl Trait for u8 { fn method(&self) {} const CONST: u8 = 0; type Type = u8; type method = u8; } struct Good(u8); impl Trait for Good { reuse Trait::* { &self.0 } // Explicit definitions for non-delegatable items. const CONST: u8 = 0; type Type = u8; type method = u8; } struct Bad(u8); impl Trait for Bad { //~ ERROR not all trait items implemented, missing: `CONST`, `Type`, `method` reuse Trait::* { &self.0 } //~^ ERROR item `CONST` is an associated method, which doesn't match its trait `Trait` //~| ERROR item `Type` is an associated method, which doesn't match its trait `Trait` //~| ERROR duplicate definitions with name `method` //~| ERROR expected function, found associated constant `Trait::CONST` //~| ERROR expected function, found associated type `Trait::Type` } fn main() {}