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