Crates.io | fixed_free_list |
lib.rs | fixed_free_list |
version | 0.2.0 |
source | src |
created_at | 2022-10-31 00:09:17.186338 |
updated_at | 2022-11-07 15:10:04.222949 |
description | A fixed-size free-list with optional key lifetime safety and macroless unique typing. |
homepage | |
repository | https://github.com/rodolphito/fixed_free_list |
max_upload_size | |
id | 701727 |
size | 38,397 |
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.63.0. To start using
fixed_free_list
add the following to your Cargo.toml
:
[dependencies]
fixed_free_list = "0.2"
For additional performance, enable unstable
feature on nightly with
[dependencies]
fixed_free_list = { version = "0.2", features = ["unstable"] }
For additional development-time memory safety verification at the cost of performance, enable strict
feature with
[dependencies]
fixed_free_list = { version = "0.2", features = ["strict"] }
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);
This crate uses unsafe code for performance. It has been extensively fuzz tested with miri to ensure it behaves correctly.
fixed_free_list
is dual-licensed under either:
at your option.
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.