composable-indexes 0.9.0

In-memory collections with composable indexes
Documentation
use crate::{
    ShallowClone,
    core::{Index, Insert, Remove, Seal},
};

/// An index that does nothing, useful when indexing is not needed
#[derive(Clone)]
pub struct Trivial;

impl ShallowClone for Trivial {}

impl<In> Index<In> for Trivial {
    #[inline]
    fn insert(&mut self, _seal: Seal, _op: &Insert<In>) {}
    #[inline]
    fn remove(&mut self, _seal: Seal, _op: &Remove<In>) {}
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::core::Collection;

    #[test]
    fn test_basic() {
        let mut coll = Collection::<u8, _>::new(Trivial);

        let key = coll.insert(1);

        let removed_key = coll.insert(2);
        coll.delete_by_key(removed_key);

        coll.insert(3);

        assert_eq!(coll.get_by_key(key), Some(&1));
        assert_eq!(coll.get_by_key(removed_key), None);
    }
}