1个不稳定版本
0.1.0 | 2023年5月14日 |
---|
#2287 在 算法 中
4,588 每月下载量
用于 6 个crate(通过 bitcode_lightyear_patch)
15KB
250 行
from_bytes_or_zeroed
一个从任意字节数组切片中读取整数的crate
lib.rs
:
from_bytes_or_zeroed
是一个crate,用于从任意长度的字节数组切片中创建整数。
使用方法
use from_bytes_or_zeroed::FromBytesOrZeroed;
// If there are too few bytes the remaining bytes are zeroed.
let a = [1, 2];
let b = [1, 2, 0, 0, 0, 0, 0, 0];
assert_eq!(u64::from_le_bytes_or_zeroed(&a), u64::from_le_bytes(b));
// If there are too many bytes the extra bytes are ignored.
let a = [1, 2, 3, 4, 5, 6];
let b = [1, 2, 3, 4];
assert_eq!(u32::from_le_bytes_or_zeroed(&a), u32::from_le_bytes(b));
动机
这个crate的创建是因为在安全的Rust中实现这个操作[prim@u64
]比使用不安全的操作慢得多。
test benches::bench_u64_safe ... bench: 1,509 ns/iter (+/- 29)
test benches::bench_u64_unsafe ... bench: 644 ns/iter (+/- 8)