8 个稳定版本
2.1.0 | 2024 年 7 月 11 日 |
---|---|
2.0.0 | 2023 年 5 月 31 日 |
1.1.2 | 2022 年 8 月 8 日 |
1.1.1 | 2021 年 12 月 12 日 |
1.0.2 | 2021 年 11 月 19 日 |
在 Rust 模式 中排名第 230
每月下载量 1,201
在 5 个 包(3 个直接)中使用
24KB
267 行
raw-parts
一个围绕 Vec<T>
分解部分的包装器。
此结构包含 Vec
的内部指针、长度和分配的容量。
RawParts
通过为返回值命名,使得 Vec::from_raw_parts
和 Vec::into_raw_parts
更易于使用。这防止了将长度和容量两个 usize
值混淆。
用法
将其添加到您的 Cargo.toml
[dependencies]
raw-parts = "2.1.0"
然后像这样分解 Vec<T>
use raw_parts::RawParts;
let v: Vec<i32> = vec![-1, 0, 1];
let RawParts { ptr, length, capacity } = RawParts::from_vec(v);
let rebuilt = unsafe {
// We can now make changes to the components, such as
// transmuting the raw pointer to a compatible type.
let ptr = ptr as *mut u32;
let raw_parts = RawParts { ptr, length, capacity };
raw_parts.into_vec()
};
assert_eq!(rebuilt, [4294967295, 0, 1]);
无 std
raw-parts 与 alloc
的 no_std
兼容。
最低支持的 Rust 版本
此包至少需要 Rust 1.56.0。此版本可以在次要版本中提升。
许可证
raw-parts
在 MIT 许可证 下授权 (c) Ryan Lopopolo。