8 个版本
0.3.3 | 2023 年 10 月 13 日 |
---|---|
0.3.2 | 2022 年 7 月 23 日 |
0.2.1 | 2021 年 4 月 21 日 |
0.1.1 | 2021 年 1 月 15 日 |
0.1.0 | 2020 年 10 月 27 日 |
#546 在 数据结构 中
16KB
335 行
Subranges
自由区间的区间结构和集合。
示例
use subranges::FreeIntervals;
fn main() {
// new collection with free interval
let free = (0..100).into();
let mut collection = FreeIntervals::new(free);
// fill subrange of free interval
let first = collection.take_exact(32).unwrap();
println!("first: {first}"); // output: first: [0, 32)
// fill other subrange of free interval with alignment
let aligned = collection.take_exact_aligned(32, 10).unwrap();
println!("aligned: {aligned}"); // output: aligned: [40, 72)
// no free subrange with `length == 40`.
let none = collection.take_exact(40);
assert!(none.is_none());
// free `first` intervals with `length == 32`,
// it connects with padding with `length == 8` from aligned interval.
collection.insert(first);
// now we have subrange with `length == 40`.
let some = collection.take_exact(40).unwrap();
println!("some: {some}"); // output: some: [0, 40)
}