Module elicit::aelicit [−][src]
aelicit.rs
Examples
#[macro_use] extern crate elicit; aelicit_define!(aelicit_my_trait, MyTrait); use self::aelicit_my_trait::Aelicit as MyTraitAelicit; use self::aelicit_my_trait::WeakAelicit as MyTraitWeakAelicit; use self::aelicit_my_trait::EnableAelicitFromSelf as MyTraitEnableAelicitFromSelf; use self::aelicit_my_trait::EnableAelicitFromSelfField as MyTraitEnableAelicitFromSelfField; pub trait MyTrait: ::std::fmt::Debug + MyTraitEnableAelicitFromSelf { fn my_function(&self) -> i32; } #[derive( Debug, )] struct MyStruct { _eafsf: MyTraitEnableAelicitFromSelfField, my_field: i32, } impl MyTraitEnableAelicitFromSelf for MyStruct { enable_aelicit_from_self_delegate!(MyTrait, MyTraitAelicit, _eafsf); } impl MyTrait for MyStruct { fn my_function(&self) -> i32 { self.my_field } } #[derive( Debug, )] struct MyStructUnuseEnableAelicitFromSelf { my_field: i32, } impl MyTraitEnableAelicitFromSelf for MyStructUnuseEnableAelicitFromSelf { enable_aelicit_from_self_delegate!(MyTrait, MyTraitAelicit); } impl MyTrait for MyStructUnuseEnableAelicitFromSelf { fn my_function(&self) -> i32 { self.my_field } } fn main() { let my0 = MyTraitAelicit::new(MyStruct{ _eafsf: MyTraitEnableAelicitFromSelfField::default(), my_field: 0i32, }); let my1 = MyTraitAelicit::new(MyStructUnuseEnableAelicitFromSelf{ my_field: 1i32, }); }