#[repr(C)]pub struct ExternalSlice<T: 'static> {
ptr: NonNull<T>,
len: usize,
capacity: usize,
}Expand description
A slice stored as a standalone struct, suitable for wrapping in ExternalPtr.
This is analogous to the data inside a Box<[T]>, but stores capacity
for proper deallocation when created from a Vec.
§Usage
To use with ExternalPtr, implement TypedExternal for your specific
ExternalSlice<YourType>:
ⓘ
impl_typed_external!(ExternalSlice<MyElement>);
let ptr = ExternalPtr::new(ExternalSlice::new(vec![1, 2, 3]));Fields§
§ptr: NonNull<T>§len: usize§capacity: usizeImplementations§
Source§impl<T: 'static> ExternalSlice<T>
impl<T: 'static> ExternalSlice<T>
Sourcepub fn new(slice: Vec<T>) -> Self
pub fn new(slice: Vec<T>) -> Self
Create an external slice from a Vec, preserving its allocation.
Sourcepub fn from_boxed(boxed: Box<[T]>) -> Self
pub fn from_boxed(boxed: Box<[T]>) -> Self
Create from a boxed slice (capacity == len).
Sourcepub fn as_mut_slice(&mut self) -> &mut [T]
pub fn as_mut_slice(&mut self) -> &mut [T]
Borrow the contents as a mutable slice.
Trait Implementations§
Source§impl<T: 'static> Drop for ExternalSlice<T>
impl<T: 'static> Drop for ExternalSlice<T>
Auto Trait Implementations§
impl<T> !Send for ExternalSlice<T>
impl<T> !Sync for ExternalSlice<T>
impl<T> Freeze for ExternalSlice<T>
impl<T> RefUnwindSafe for ExternalSlice<T>where
T: RefUnwindSafe,
impl<T> Unpin for ExternalSlice<T>
impl<T> UnsafeUnpin for ExternalSlice<T>
impl<T> UnwindSafe for ExternalSlice<T>where
T: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> SizeHint for Twhere
T: ?Sized,
impl<T> SizeHint for Twhere
T: ?Sized,
Source§default fn lower_bound(&self) -> usize
default fn lower_bound(&self) -> usize
🔬This is a nightly-only experimental API. (
core_io_internals)Returns a lower bound on the number of elements this container-like item
contains.
For example, an array
[u8; 12] could return any value between 0 and
12 inclusively as a correct implementation. Read moreSource§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)]const SIZE: usize = _
#[doc(hidden)]const SIZE: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const ALIGN: usize = _
#[doc(hidden)]const ALIGN: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const ALIGNMENT: Alignment = _
#[doc(hidden)]const ALIGNMENT: Alignment = _
🔬This is a nightly-only experimental API. (
ptr_alignment_type)Source§#[doc(hidden)]const IS_ZST: bool = _
#[doc(hidden)]const IS_ZST: bool = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const LAYOUT: Layout = _
#[doc(hidden)]const LAYOUT: Layout = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const MAX_SLICE_LEN: usize = _
#[doc(hidden)]const MAX_SLICE_LEN: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)The largest safe length for a
[Self]. Read moreLayout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes