Crate cds

source · []
Expand description

cds is a Collection of Optimized Data Structures.

cds implements optimized data structures and their associated algorithms.

Design and Implementation Principles

  1. Tested - for both correctness and performance
  2. Fast - even if it requires unsafe Rust
  3. Secure - do not unnecessarily hold a copy of (possibly sensitive) user data; allow wiping of unused memory
  4. No malloc - avoid dynamic memory allocation where possible
  5. Compact - allow small memory footprint

Fixed-Capacity Data Structures

Fixed-capacity data structures can be allocated on stack. They do not allocate memory on the heap, and their capacity cannot be dynamically changed.

Hybrid-Capacity Data Structures

Hybrid-capacity data structures use both local and heap capacity. They have some local capacity, which, if not exceeded, avoids heap allocation. Once the amount of needed capacity exceeds the local capacity, a heap allocation is made, existing data is copied to the heap, and the data structure continues its operation from there.

  • SmallVec - a vector with “small size” optimization

Optional Features

  • alloc - enables usage of the standard alloc crate
  • std - implies alloc and enables implementation of std traits which are not available in core. Without this feature the library is no_std.
  • arrayvec - enables ArrayVec
  • arraystring - enables ArrayString
  • smallvec - implies alloc and enables SmallVec

By default, all optional features are enabled. To build in no_std environment, or to avoid compilation of unneeded functionality, disable default features and cherry pick the required features explicitly.

Modules

arraystringarraystring
A string-like array.
arrayvecarrayvec
A vector-like array.
Types for dealing with collections’ length.
Types and functions for dealing with memory.
smallvecsmallvec
A vector with “small size” optimization.

Macros

aformatarraystring
Formats an ArrayString.
array_strarraystring
Creates an ArrayString containing the arguments.
array_vecarrayvec
Creates an ArrayVec containing the arguments.
lformatarraystring
Formats an ArrayString possibly truncating the result.
small_vecsmallvec
Creates a SmallVec containing the arguments.