[][src]Struct spool::ObjectPool

pub struct ObjectPool<T> { /* fields omitted */ }

The default ObjectPool implementation.

Allocation of specified capacity happens completely upfront, and the pool cannot be resized.

Items are eagerly dropped when deleted, so destructors run asap.

See Pool implementation for more information.

use spool::{ ObjectPool, Pool };

//Pool allocates _once_ upfront, with given capacity.
let mut pool = ObjectPool::new(3);

let key1 = pool.insert(1);
let key2 = pool.insert(2);
let key3 = pool.insert(3);

//Over capacity! This panics!
//let key4 = pool.insert(404);

pool.delete(&key2);

//All is well.
let key4 = pool.insert(404);

Trait Implementations

impl<T: Clone> Clone for ObjectPool<T>[src]

impl<T: Debug> Debug for ObjectPool<T>[src]

impl<T: Default> Default for ObjectPool<T>[src]

impl<T: Eq> Eq for ObjectPool<T>[src]

impl<T: Hash> Hash for ObjectPool<T>[src]

impl<T: PartialEq> PartialEq<ObjectPool<T>> for ObjectPool<T>[src]

impl<T> Pool<T> for ObjectPool<T>[src]

fn new(capacity: usize) -> Self[src]

Returns a new, empty pool. Preallocated with specified capacity.

Examples

use spool::{ ObjectPool, Pool };

let pool: ObjectPool<i32> = ObjectPool::new(10);
assert_eq!(pool.capacity(), 10);

fn capacity(&self) -> usize[src]

Returns the maximum capacity of the pool.

Examples

use spool::{ ObjectPool, Pool };

let pool: ObjectPool<i32> = ObjectPool::new(10);
assert_eq!(pool.capacity(), 10);

fn insert(&mut self, value: T) -> PoolKey[src]

Returns a PoolKey corresponding to the inserted item.

Panics

This function panics if pool is full.

Examples

use spool::{ ObjectPool, Pool };

let mut pool = ObjectPool::new(10);
let key = pool.insert("Howdy!");

fn get(&self, key: &PoolKey) -> Option<&T>[src]

Retrieves an Option<&T> corresponding to the PoolKey referenced.

Examples

use spool::{ ObjectPool, Pool };

let mut pool = ObjectPool::new(10);

let key1 = pool.insert("I am going to be removed!");
let key2 = pool.insert("I am going to remain!");

pool.delete(&key1);

assert!(pool.get(&key1).is_none());
assert!(pool.get(&key2).is_some());

fn get_mut(&mut self, key: &PoolKey) -> Option<&mut T>[src]

Retrieves an Option<&T> corresponding to the PoolKey referenced.

Examples

use spool::{ ObjectPool, Pool };

let mut pool = ObjectPool::new(10);

let key1 = pool.insert("I am going to be removed!");
let key2 = pool.insert("I am going to remain!");

pool.delete(&key1);

assert!(pool.get_mut(&key1).is_none());
assert!(pool.get_mut(&key2).is_some());

fn take(&mut self, key: &PoolKey) -> Option<T>[src]

Extracts an Option corresponding to the PoolKey referenced. When an entry is been taken it is removed from the pool.

Examples

use spool::{ ObjectPool, Pool };

let mut pool = ObjectPool::new(10);

let key = pool.insert("Take me!");

assert!(pool.take(&key).is_some());
assert!(pool.get(&key).is_none());

fn delete(&mut self, key: &PoolKey)[src]

Deletes an entry corresponding to the PoolKey referenced. When an entry is been deleted it is removed, however it will not be returned.

Examples

use spool::{ ObjectPool, Pool };

let mut pool = ObjectPool::new(10);

let key = pool.insert("Delete me!");

pool.delete(&key);

assert!(pool.get(&key).is_none());

fn clear(&mut self)[src]

Deletes all entries. No entries will be returned.

Examples

use spool::{ ObjectPool, Pool };

let mut pool = ObjectPool::new(10);

let key1 = pool.insert("Delete me!");
let key2 = pool.insert("Delete me too!");
let key3 = pool.insert("Delete me too!");

pool.clear();

assert!(pool.get(&key1).is_none());
assert!(pool.get(&key2).is_none());
assert!(pool.get(&key2).is_none());

impl<T> StructuralEq for ObjectPool<T>[src]

impl<T> StructuralPartialEq for ObjectPool<T>[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for ObjectPool<T> where
    T: RefUnwindSafe

impl<T> Send for ObjectPool<T> where
    T: Send

impl<T> Sync for ObjectPool<T> where
    T: Sync

impl<T> Unpin for ObjectPool<T> where
    T: Unpin

impl<T> UnwindSafe for ObjectPool<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.