-
Notifications
You must be signed in to change notification settings - Fork 10
Closed
rust-lang/rust
#75152Labels
Description
The return type some methods involves:
pub struct MemoryBlock {
pub ptr: NonNull<u8>,
pub size: usize,
}A pointer and a size, that sounds familiar.
Perhaps a dedicated struct is not needed and this could be NonNull<[u8]> instead?
NonNull::cast can be used to cast to any thin pointer type, similar to accessing the MemoryBlock::ptr field. PR rust-lang/rust#71940 proposes NonNull<[T]>::len for accessing the size, and NonNull<[T]>::slice_from_raw_parts for constructing a new value. (I feel that these would be good to have regardless of what happens to MemoryBlock, and I expect their existence be uncontroversial given the precedent of <*const [T]>::len and ptr::slice_from_raw_parts.)
Amanieu, TimDiekmann and sollyucko