1 个不稳定版本
0.1.0 | 2021 年 2 月 7 日 |
---|
#1002 在 数据结构
39KB
925 行
本 crate 的目的是提供使用 DST(动态大小类型)的数据结构。
概述
此 crate 的目标是提供可以在连续分配中存储 DST 的数据结构。某些应用可能使用连续分配而不是多个指针具有性能优势。
目前,唯一的实现是一个 Vec
,其中 DST 尾部是相同长度的切片。
用法
添加到依赖项
[dependencies]
dst = "0.1.0"
在代码中使用
use dst::FixedVec;
fn main() {
let mut vec = FixedVec::<Option<&str>, usize>::new(4);
vec.push_default();
let item = vec.get(0).unwrap();
assert_eq!(item.value, None);
assert_eq!(item.tail, [0, 0, 0, 0]);
vec.push(Some("Name"), [1, 2, 3, 4].iter().copied());
let item = vec.get(1).unwrap();
assert_eq!(item.value, Some("Name"));
assert_eq!(item.tail, [1, 2, 3, 4]);
}
标志
-
undefined_behavior
(默认禁用)此标志使项目能够在稳定 Rust 上构建,但通过利用具有 UB 的代码。具体来说,使用无效的中间引用来获取初始化数据并获取布局信息的指针。请参阅
-
unstable
(默认启用)此标志启用不稳定 Rust API 的使用。具体来说,它允许避免 UB,但还将一些 crate 的布局和大小 API 改为使用
const
函数(可能带来运行时性能优势)。请参阅 https://github.com/rust-lang/rust/issues/46571