im-lists

Crates.ioim-lists
lib.rsim-lists
version0.8.1
sourcesrc
created_at2021-09-11 23:41:59.266195
updated_at2024-04-08 03:43:28.232476
descriptionPersistent unrolled linked lists and vlists
homepage
repositoryhttps://github.com/mattwparas/im-lists
max_upload_size
id449938
size315,409
Matthew Paras (mattwparas)

documentation

README

im-lists

Actions Status Coverage Status Crate Status Docs Status

An implementation of a persistent unrolled linked list and vlist. This linked list is implemented with a backing of either Arc or Rc, for single or multi-threaded environments. The single threaded list can be found as a List, and the thread-safe implementation can be found as a SharedList. It is generic over smart pointer - so if you would like to use this with a custom smart pointer (i.e. something like a Gc) then you can do so.

An unrolled linked list is a linked list where each node contains a vector of elements. While the algorithmic complexity is the same as a normal naive linked list, storing elements in vectors improves cache locality and also gives practical speed ups on common operations. A Vlist is like an unrolled linked list, however the vector capacity in each node grows exponentially. This also means that operations that need to iterate over nodes run in O(log(n)) time.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

Commit count: 100

cargo fmt