header-slice 0.1.3

Definitions for slices with headers, and a vec-like type with a header allocated inline.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use crate::slice::HeaderSlice;
use core::ptr::{self, NonNull};

#[repr(C)]
pub struct Pair<A, B: ?Sized>(pub A, pub B);

pub fn pair_as_slice_ptr<H, T>(
    pair: NonNull<Pair<H, T>>,
    len: usize,
) -> NonNull<HeaderSlice<H, T>> {
    let slice_ptr = ptr::slice_from_raw_parts_mut(pair.as_ptr(), len);
    let hslice = slice_ptr as *mut HeaderSlice<H, T>;
    unsafe { NonNull::new_unchecked(hslice) }
}