Module elicit::elicit
[−]
[src]
elicit.rs
Examples
#[macro_use] extern crate elicit; elicit_define!(elicit_my_trait, MyTrait); use self::elicit_my_trait::Elicit as MyTraitElicit; use self::elicit_my_trait::WeakElicit as MyTraitWeakElicit; use self::elicit_my_trait::EnableElicitFromSelf as MyTraitEnableElicitFromSelf; use self::elicit_my_trait::EnableElicitFromSelfField as MyTraitEnableElicitFromSelfField; pub trait MyTrait: ::std::fmt::Debug + MyTraitEnableElicitFromSelf { fn my_function(&self) -> i32; } #[derive( Debug, )] struct MyStruct { _eefsf: MyTraitEnableElicitFromSelfField, my_field: i32, } impl MyTraitEnableElicitFromSelf for MyStruct { enable_elicit_from_self_delegate!(MyTrait, MyTraitElicit, _eefsf); } impl MyTrait for MyStruct { fn my_function(&self) -> i32 { self.my_field } } #[derive( Debug, )] struct MyStructUnuseEnableElicitFromSelf { my_field: i32, } impl MyTraitEnableElicitFromSelf for MyStructUnuseEnableElicitFromSelf { enable_elicit_from_self_delegate!(MyTrait, MyTraitElicit); } impl MyTrait for MyStructUnuseEnableElicitFromSelf { fn my_function(&self) -> i32 { self.my_field } } fn main() { let my0 = MyTraitElicit::new(MyStruct{ _eefsf: MyTraitEnableElicitFromSelfField::default(), my_field: 0i32, }); let my1 = MyTraitElicit::new(MyStructUnuseEnableElicitFromSelf{ my_field: 1i32, }); }