#object-id #arceos #unique-id #container #stores #assigned

nightly no-std flatten_objects

存储编号对象的容器。每个对象都可以分配一个唯一ID。

1 个不稳定版本

0.1.0 2024年7月11日

#1274数据结构

Download history 102/week @ 2024-07-06 121/week @ 2024-07-13 354/week @ 2024-07-20 548/week @ 2024-07-27 173/week @ 2024-08-03

1,226 每月下载量

GPL-3.0-or-later OR Apache-2…

8KB
77

flatten_objects

Crates.io

FlattenObjects 是一个存储编号对象的容器。

对象可以被添加到 FlattenObjects,对象将分配一个唯一ID。该ID可用于稍后检索对象。

示例

use flatten_objects::FlattenObjects;

let mut objects = FlattenObjects::<u32, 20>::new();

// Add `23` 10 times and assign them IDs from 0 to 9.
for i in 0..=9 {
    objects.add_at(i, 23).unwrap();
    assert!(objects.is_assigned(i));
}

// Remove the object with ID 6.
assert_eq!(objects.remove(6), Some(23));
assert!(!objects.is_assigned(6));

// Add `42` (the ID 6 is available now).
let id = objects.add(42).unwrap();
assert_eq!(id, 6);
assert!(objects.is_assigned(id));
assert_eq!(objects.get(id), Some(&42));
assert_eq!(objects.remove(id), Some(42));
assert!(!objects.is_assigned(id));

lib.rs:

FlattenObjects 是一个存储编号对象的容器。

对象可以被添加到 FlattenObjects,对象将分配一个唯一ID。该ID可用于稍后检索对象。

示例

use flatten_objects::FlattenObjects;

let mut objects = FlattenObjects::<u32, 20>::new();

// Add `23` 10 times and assign them IDs from 0 to 9.
for i in 0..=9 {
    objects.add_at(i, 23).unwrap();
    assert!(objects.is_assigned(i));
}

// Remove the object with ID 6.
assert_eq!(objects.remove(6), Some(23));
assert!(!objects.is_assigned(6));

// Add `42` (the ID 6 is available now).
let id = objects.add(42).unwrap();
assert_eq!(id, 6);
assert!(objects.is_assigned(id));
assert_eq!(objects.get(id), Some(&42));
assert_eq!(objects.remove(id), Some(42));
assert!(!objects.is_assigned(id));

依赖项

~72KB