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

#![cfg_attr(feature = "bench", feature(test))]
#![deny(missing_docs)]

extern crate crossbeam as cx;

#[cfg(any(feature = "bench", test))]
extern crate rand;
#[cfg(feature = "bench")]
extern crate test;

pub mod crossbeam;
pub mod manual;