macro_rules! cell {
( $value:expr ) => { ... };
( [ $nm:expr ] ? $value:expr ) => { ... };
( [ $nm:ident ] $value:expr ) => { ... };
}
Expand description
Convenience wrappers for engine::cell
.
§Optional-name version
In this verion, supply an expression optional_name
of type
Option<Name>
to specify the name for the cell, created by either
cell
or put
, in the case that optional_name
is Some(name)
or
None
, respectively:
let n = name_of_str(stringify!(c));
let c = cell!([Some(n)]? 123);
assert_eq!(get!(c), 123);
assert_eq!(get!(c), force(&c));
let c = cell!([None]? 123);
assert_eq!(get!(c), 123);
assert_eq!(get!(c), force(&c));
§Explicit-names version:
In this verion, use [ name ]
to specify the cell’s name is name
:
let c = cell!([c] 123);
assert_eq!(get!(c), 123);
assert_eq!(get!(c), force(&c));
§Global counter version:
Uses a global counter to choose a unique name. Important note: This may be appopriate for the Editor role, but is never appropriate for the Archivist role.
let c = cell!( 123 );
assert_eq!( get!(c), 123 );
assert_eq!( get!(c), force(&c) );