caches 0.3.0

This is a Rust implementation for popular caches (support no_std).
Documentation
use caches::{Cache, SegmentedCache};

fn main() {
    let mut cache = SegmentedCache::new(2, 2).unwrap();

    cache.put(1, 1);
    cache.put(2, 2);

    assert_eq!(cache.probationary_len(), 2);
    assert_eq!(cache.protected_len(), 0);

    assert_eq!(cache.get(&1), Some(&1));
    *cache.get_mut(&2).unwrap() = 22;

    assert_eq!(cache.probationary_len(), 0);
    assert_eq!(cache.protected_len(), 2);

    cache.put(3, 3);
    cache.put(4, 4);

    assert_eq!(cache.probationary_len(), 2);
    assert_eq!(cache.protected_len(), 2);

    assert_eq!(cache.peek(&3), Some(&3));
    assert_eq!(cache.peek_mut(&4), Some(&mut 4));

    assert_eq!(cache.probationary_len(), 2);
    assert_eq!(cache.protected_len(), 2);

    assert_eq!(cache.remove(&2), Some(22));
    assert_eq!(cache.len(), 3);

    cache.purge();
    assert_eq!(cache.len(), 0);
}