fixed_free_list 0.3.0

A fixed-size free-list with optional key lifetime safety and macroless unique typing.
Documentation
  • Coverage
  • 100%
    21 out of 21 items documented18 out of 20 items with examples
  • Size
  • Source code size: 43.58 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2.37 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 14s Average build duration of successful builds.
  • all releases: 11s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • atlv24/fixed_free_list
    1 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • atlv24

fixed_free_list

A fixed-size free-list with optional key lifetime safety and macroless unique typing. Please consult the documentation for more information.

The minimum required Rust version for fixed_free_list is 1.85.0. To start using fixed_free_list add the following to your Cargo.toml:

[dependencies]

fixed_free_list = "0.3"

For additional performance, enable unstable feature on nightly with

[dependencies]

fixed_free_list = { version = "0.3", features = ["unstable"] }

For additional development-time memory safety verification at the cost of performance, enable strict feature with

[dependencies]

fixed_free_list = { version = "0.3", features = ["strict"] }

Example

A short example:

use fixed_free_list::FixedFreeList;
let mut list: FixedFreeList<i32, 16> = FixedFreeList::new();
let key = list.alloc(8).unwrap();
assert_eq!(unsafe { *list.get_unchecked(key) }, 8);
let value = unsafe { list.get_mut_unchecked(key) };
*value = 2;
assert_eq!(unsafe { list.free_unchecked(key) }, 2);

Safety

This crate uses unsafe code for performance. It has been extensively fuzz tested with miri to ensure it behaves correctly.

License

fixed_free_list is dual-licensed under either:

at your option.

Your contributions

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.