concache/lib.rs
1//! This crate provides two implementations of fast, concurrent, shared hash maps.
2//!
3//! Both implementations provide lock-free implementations that use [lock-free linked list
4//! buckets](https://www.microsoft.com/en-us/research/wp-content/uploads/2001/10/2001-disc.pdf).
5//! Memory is safely destructed and reclaimed using either
6//! [`crossbeam::epoch`](https://docs.rs/crossbeam-epoch/) or a manual _Quiescent-State-Based
7//! Reclamation_ implementation. See the [`crossbeam`] and [`manual`] module documentations
8//! respectively for further details.
9//!
10//! Table resizing is not yet supported in either implementation, but the map will also never fill
11//! due to the linked implementation; instead, performance will decrease as the map is filled with
12//! more keys.
13//!
14//! The crate was written by Aditya Saligrama and Andrew Shen while writing _A practical analysis
15//! of Rust’s concurrency story_ as their 2018 project for [MIT
16//! PRIMES](https://math.mit.edu/research/highschool/primes/program.php).
17
18#![cfg_attr(feature = "bench", feature(test))]
19#![deny(missing_docs)]
20
21extern crate crossbeam as cx;
22
23#[cfg(any(feature = "bench", test))]
24extern crate rand;
25#[cfg(feature = "bench")]
26extern crate test;
27
28pub mod crossbeam;
29pub mod manual;