24个版本 (6个稳定版)
1.1.2 | 2024年7月17日 |
---|---|
0.7.0 | 2024年7月14日 |
#328 在 算法
1,178 每月下载量
用于 2 crates
22KB
615 行
small_len
一个简单的枚举和特质,以确保small_len()返回的值总是最小表示形式。这旨在由fn_vm支持“无限”命令、参数和寄存器。
注意:此库主要用于动态大小对象、String、[T]、&[T]、Vec、HashMap和IndexMap(带有indexmap功能);如果您需要编译时静态边界的优化,请查看smallnum crate。
对于通用数字crate,请查看varnum。
用法
use small_len::SmallLen;
fn main() {
let a = vec![1, 2, 3];
let c = a.small_len(); // Length::Byte(3)
let bytes = c.to_be_bytes();
let c = SmallLen::from_be_bytes(&bytes); // SmallLen::from_bytes() -> Length::Byte(3)
}
功能
default
:无额外功能,包括Vec和HashMap<K, V>实现。bumpalo
:为bumpalo::Bump
添加Len
实现。bytes
:为bytes::Bytes
和bytes::BytesMut
添加Len
实现。indexmap
:为indexmap::IndexMap
添加Len
实现。
自定义类型
如果您需要将SmallLen添加到其他类型中,您可以实现Len特质。
impl <T> Len for Vec<T> {
#[inline]
fn length(&self) -> Length {
self.len().into() // Length::new(self.len())
}
}
其他特质
Length枚举还实现了以下特质,以便更容易使用(Length | SmallLength | usize)
- Vec的索引,如果索引超出范围,将panic
- 加
- 除
- 乘
- 取余
- 减
- 非
- 按位与
- 按位或
- 按位异或
依赖
~0–580KB