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。