1 个不稳定版本
0.1.0 | 2023 年 6 月 22 日 |
---|
#1677 in Rust 模式
31KB
430 行
Slots Slice
这是一个旨在提供操作可选值切片实用工具的小型 crate,称为 Slots<T>
。
特性
- 方便地操作可选值切片。
- 对槽位执行操作,例如计数、检查空和满、检索值和条目。
- 创建和分配的宏语法。
使用方法
将预导入模块引入作用域
use slots_slice::prelude::*;
该 crate 的亮点是 SlotsTrait
和 SlotsMutTrait
,它们为访问和不可变地、可变地操作槽位添加了方法。它们在实现 AsRef
<[T]
> 的任何东西上运行,因此它们可以直接在诸如数组和对 Vec<T>
等结构上使用。
SlotsTrait
概述
use slots_slice::prelude::*;
let slots = [None, Some('a'), None, Some('b')];
assert_eq!(slots.count(), 2);
assert!(!slots.is_empty());
assert!(!slots.is_full());
assert_eq!(slots.front_index(true), Some(1));
assert_eq!(slots.front_value(), Some(&'a'));
assert_eq!(slots.front_entry(), Some((1, &'a')));
SlotsMutTrait
提供了 SlotsTrait
的可变版本以及折叠功能。
use slots_slice::prelude::*;
let mut slots = [None, Some('a'), None, Some('b')];
assert_eq!(slots.front_value_mut(), Some(&mut 'a'));
assert_eq!(slots.front_entry_mut(), Some((1, &mut 'a')));
slots.collapse_front();
assert_eq!(slots, [Some('a'), Some('b'), None, None]);