Macro cryo::cryo[][src]

macro_rules! cryo {
    () => { ... };
    ($(#[$attr:meta])* let $name:ident: $Cryo:ident< $t:ty $(, $Lock:ty)? > = $init:expr; $($rest:tt)*) => { ... };
    ($(#[$attr:meta])* let $name:ident: $Cryo:ident< $t:ty $(, $Lock:ty)? > = $init:expr) => { ... };
}

Construct a Cryo or CryoMut and bind it to a local variable.

Examples

use cryo::cryo;
cryo!(let cryo: Cryo<u8> = &42);
assert_eq!(*cryo.borrow(), 42);
use cryo::cryo;
let mut var = 42;
{
    cryo!(let cryo: CryoMut<u8> = &mut var);
    *cryo.write() = 84;
}
assert_eq!(var, 84);

The lock implementation can be specified by an extra generic argument. It defaults to LocalLock when unspecified.

use cryo::cryo;
use std::thread::spawn;
cryo!(let cryo: Cryo<_, cryo::SyncLock> = &42);
let borrow = cryo.borrow();
spawn(move || {
    assert_eq!(*borrow, 42);
});