[![crates.io][crates-badge]][crates-url] [![docs.rs][docs-badge]][docs-url] [crates-badge]: https://img.shields.io/crates/v/cds.svg [crates-url]: https://crates.io/crates/cds [docs-badge]: https://img.shields.io/docsrs/cds [docs-url]: https://docs.rs/cds/latest/cds # cds - Collection of Optimized Data Structures `cds` implements handy data structures written for speed, small memory footprint and security. ## What's included? - `SpareMemoryPolicy` - a customizable policy for handling spare memory in collections (allows wiping unused memory to delete potentially sensitive data) - `LengthType` - a customizable type to track collection length (allows creation of very compact collection types) - `ArrayVec` - an array with vector-like API - `ArrayString` - an array with string-like API - `lformat!` - a macro to format a string on stack, without memory allocation (yields an `ArrayString`) - `aformat!` - a macro to format a string on stack, without memory allocation (yields a `Result`) - `SmallVec` - a growable array with optimization for small capacities ## Crate Features - `arrayvec` - enables `ArrayVec` - `arraystring` - enables `ArrayString` - `smallvec` - enables `SmallVec`, implies `alloc`. - `alloc` - enables usage of the standard [alloc] crate - `std`- enables usage of the Rust standard library. Implies `alloc`, and enables implementation of standard traits which are not available in `core`. Without this feature the crate is `no_std`. By default, all optional features are enabled. To build in `no_std` environment, or to avoid compilation of unneeded functionality, use `default-features = false` and choose the required features explicitly. [alloc]: https://doc.rust-lang.org/alloc/ ## Documentation The documentation is at [docs.rs/cds][docs-url] ## Roadmap - `SmallString` - a string with local capacity to avoid heap allocation ## Changelog The changelog is maintained in [CHANGELOG.md](CHANGELOG.md) ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) 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. ## Tags `small` `secure` `vector` `string` `array` `smallvec` `smallstr`