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,
    });
}