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]

[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.

[src]

Returns the current maximum.

Trait Implementations

impl Default for RcIncr
[src]

[src]

Returns the "default value" for a type. Read more

impl Clone for RcIncr
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl !Send for RcIncr

impl !Sync for RcIncr