servicepoint/crates/servicepoint_binding_c/src/byte_slice.rs

25 lines
819 B
Rust
Raw Normal View History

2024-06-03 22:10:52 +02:00
//! FFI slice helper
2024-10-15 22:23:52 +02:00
use std::ptr::NonNull;
#[repr(C)]
/// Represents a span of memory (`&mut [u8]` ) as a struct usable by C code.
///
/// You should not create an instance of this type in your C code.
///
2024-05-28 20:37:55 +02:00
/// # Safety
///
/// The caller has to make sure that:
///
/// - accesses to the memory pointed to with `start` is never accessed outside `length`
/// - the lifetime of the `CByteSlice` does not outlive the memory it points to, as described in
/// the function returning this type.
/// - an instance of this created from C is never passed to a consuming function, as the rust code
/// will try to free the memory of a potentially separate allocator.
2024-09-05 21:15:53 +02:00
pub struct SPByteSlice {
/// The start address of the memory
2024-10-15 22:23:52 +02:00
pub start: NonNull<u8>,
/// The amount of memory in bytes
pub length: usize,
}