pub struct IdPool { /* private fields */ }
Expand description
Keeps track of free ids within a specified range, handles requests and returns of ids based on internal state.
Internally, a collection of free id ranges is stored. On a request for an id from the pool, the lowest available number will be returned to the caller. Ids can also be returned to the pool to be reused by subsequent id requests.
Examples
// initialize a new pool
let mut pool = IdPool::new();
// request some ids
assert_eq!(Some(1), pool.request_id());
assert_eq!(Some(2), pool.request_id());
assert_eq!(Some(3), pool.request_id());
// return the first id
assert_eq!(Ok(()), pool.return_id(1));
// next request returns recycled first id
assert_eq!(Some(1), pool.request_id());
// subsequent request returns the next free value
assert_eq!(Some(4), pool.request_id());
Implementations
sourceimpl IdPool
impl IdPool
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new IdPool
with a default range, which
starts at 1
and ends at Num::MAX
.
sourcepub fn new_ranged(range: Range<usize>) -> Self
pub fn new_ranged(range: Range<usize>) -> Self
Creates a new IdPool
with the given range.
sourcepub fn used_count(&self) -> usize
pub fn used_count(&self) -> usize
Gets the current count of used ids.
sourcepub fn request_id(&mut self) -> Option<usize>
pub fn request_id(&mut self) -> Option<usize>
Returns a new id or None
if there are no free ids
in the pool.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for IdPool
impl Send for IdPool
impl Sync for IdPool
impl Unpin for IdPool
impl UnwindSafe for IdPool
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more