cds 0.9.0

Collection of Optimized Data Structures
Documentation
[![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`)
- `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`