Crates.io | priority-set |
lib.rs | priority-set |
version | 0.1.0 |
source | src |
created_at | 2021-12-11 15:21:14.257707 |
updated_at | 2021-12-11 15:21:14.257707 |
description | A no_std Priority Set |
homepage | |
repository | https://github.com/afonso360/priority-set |
max_upload_size | |
id | 496258 |
size | 29,004 |
priority-set
A fixed size priority set suitable for no_std use.
Example:
#[derive(PartialEq)]
enum Command {
QueryServerA,
QueryServerB,
}
fn main() {
// Create a priority set with 10 slots
let mut p: PrioritySet<Command, 10> = PrioritySet::new();
// Insert two items
p.insert(Priority(10), Command::QueryServerA);
p.insert(Priority(20), Command::QueryServerB);
p.insert(Priority(30), Command::QueryServerA);
// We inserted a duplicate command, so its priority was updated, but no new item was added
assert_eq!(p.len(), 2);
// Pops the highest priority item, which is QueryServerA with Priority(30)
assert_eq!(p.pop(), Some(Command::QueryServerA));
assert_eq!(p.pop(), Some(Command::QueryServerB));
assert_eq!(p.pop(), None);
}
Licensed under either of
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.