1 个不稳定版本
0.3.0 | 2020年9月2日 |
---|---|
0.2.0 |
|
0.1.0 |
|
0.0.1 |
|
#170 在 解析工具
每月 26 次下载
23KB
380 行
oom - 一种或多种 slice 类型
受到“解析,不要验证”文章的启发。
此包定义了三种类型:NonEmptySlice
、NonEmptyMutSlice
和 NonEmptyVec
。这些类型没有实现 Deref
或 DerefMut
特性,这是故意的,以避免在解析方法时产生混淆。如果您想 &[T]
,请考虑使用 as_slice
或 as_mut_slice
方法。
NonEmptySlice
和 NonEmptyMutSlice
- 是借用类型(非拥有类型)。
- 是
&[T]
和&mut [T]
的对应类型。 - 具有与
&[T]
相同的大小和类似的位置。 - 不能在没有从数组、切片或
Vec
借用内容的情况下使用。
NonEmptyVec
:
- 是拥有类型,对应于
Vec<T>
。 - 没有
push
和pop
方法,因为这些是可能失败的操作。我必须处理我不太有信心实现的非安全代码。
与 &[T]
和 Vec<T>
的区别
.len()
返回 std 的NonZeroUsize
。.is_empty()
总是 false。- 这些方法不返回
None
first
first_mut
last
last_mut
split_first
split_last
split_first_mut
split_last_mut
显著特性
#![无标准库]
- 无外部依赖
- 无宏定义
- 即时构建时间。
支持的Rust版本
最新稳定版。我使用了仅在Rust v1.46.0中可用的新的条件流,在 const fn
中。
用法
将其添加到您的 Cargo.toml
[dependencies]
oom = "0.3.0"
或者假设您已安装 cargo-edit
,则使用
cargo add oom
感谢以下灵感的启发
许可证
本存储库中的所有代码均在MIT许可证下发布,有关更多信息,请参阅COPYRIGHT文件。