Struct incr::RcIncr
[−]
[src]
pub struct RcIncr(_);
The Rc<Cell<_>>
backed storage of RcIncr
provides flexibility in situations
where the counter must be shared among several disparate objects/contexts while
retaining consistentcy between all the references of the count. RcIncr
is not
threadsafe, and even in single-threaded code Rc<Cell<T>>
has some tricky edge
cases, for instance if a Cell<T>
is used as the key to a hash map and the
interior value mutated (fair warning).
Examples
use incr::RcIncr; let mut last = RcIncr::default(); assert_eq!(last.is_new(1), true); let mut xs = Vec::new(); for i in 2..5 { xs.push(last.clone()); xs.last().unwrap().is_new(i); } assert_eq!(last.get(), 4); for x in &xs { assert_eq!(x.get(), 4); }
Methods
impl RcIncr
[src]
pub fn is_new(&self, val: u64) -> bool
[src]
Returns true
if val
is greater than the highest previously observed
value. If val
is a new maximum, it is stored in self
for checks against
future values subsequent calls Self::get(&self)
will return val
until a
new max is observed.
pub fn get(&self) -> u64
[src]
Returns the current maximum.