A wrapper around the decomposed parts of a Vec<T>
.
This struct contains the Vec
's internal pointer, length, and allocated
capacity.
RawParts
makes [Vec::from_raw_parts
] and [Vec::into_raw_parts
] easier to
use by giving names to the returned values. This prevents errors from mixing up
the two usize
values of length and capacity.
Add this to your Cargo.toml
:
toml
[dependencies]
raw-parts = "1.0"
Then decompose Vec<T>
s like:
```rust use raw_parts::RawParts;
let v: Vec
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 };
RawParts::into_vec(raw_parts)
}; assert_eq!(rebuilt, [4294967295, 0, 1]); ```
no_std
raw-parts is no_std
compatible with a required dependency on [alloc
].
This crate requires at least Rust 1.56.0. This version can be bumped in minor releases.
raw-parts
is licensed under the MIT License (c) Ryan Lopopolo.