Macro riddle_common::define_handles [−][src]
macro_rules! define_handles { (< $t:ty > :: $i:ident , $sv:vis $s:ident , $wv:vis $w:ident) => { ... }; (< $t:ident<T> where T: $ta:ident > :: $i:ident , $sv:vis $s:ident<T> , $wv:vis $w:ident<T>) => { ... }; }
Implement CloneHandle trait and define handle types for a given object.
Example
struct SimpleStruct { weak_self: SimpleStructWeak } define_handles!(<SimpleStruct>::weak_self, SimpleStructHandle, SimpleStructWeak); fn main() { let handle: SimpleStructHandle = SimpleStructHandle::new(|weak_self| SimpleStruct { weak_self }); }
Generic Example
struct GenericStruct<T: Clone> { weak_self: GenericStructWeak<T>, value: T, } define_handles!(<GenericStruct<T> where T: Clone>::weak_self, GenericStructHandle<T>, GenericStructWeak<T>); fn main() { let handle: GenericStructHandle<bool> = GenericStructHandle::new(|weak_self| GenericStruct { weak_self, value: true, }); }