#slot #optional

slots-slice

提供操作可选值切片的实用工具

1 个不稳定版本

0.1.0 2023 年 6 月 22 日

#1677 in Rust 模式

MIT-0 许可证

31KB
430

Slots Slice

Latest Version

这是一个旨在提供操作可选值切片实用工具的小型 crate,称为 Slots<T>

特性

  • 方便地操作可选值切片。
  • 对槽位执行操作,例如计数、检查空和满、检索值和条目。
  • 创建和分配的宏语法。

使用方法

将预导入模块引入作用域

use slots_slice::prelude::*;

该 crate 的亮点是 SlotsTraitSlotsMutTrait,它们为访问和不可变地、可变地操作槽位添加了方法。它们在实现 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]);

无运行时依赖