[][src]Struct safer_ffi::slice::slice_raw

#[repr(C)]pub struct slice_raw<T> {
    pub ptr: NonNull<T>,
    pub len: usize,
}

Like slice_ref and slice_mut, but with any lifetime attached whatsoever.

It is only intended to be used as the parameter of a callback that locally borrows it, due to limitations of the [ReprC][ trait@crate::layout::ReprC] design w.r.t. higher-rank trait bounds.

C layout (for some given type T)

typedef struct {
    // Cannot be NULL
    T * ptr;
    size_t len;
} slice_T;

Nullable pointer?

If you want to support the above typedef, but where the ptr field is allowed to be NULL (with the contents of len then being undefined) use the Option< slice_ptr<_> > type.

C Layout

Fields

ptr: NonNull<T>

Pointer to the first element (if any).

len: usize

Element count

Implementations

impl<T> slice_raw<T>[src]

pub unsafe fn as_ref<'borrow>(
    self: &'borrow slice_raw<T>
) -> slice_ref<'borrow, T>
[src]

Safety

  • For the duration of the 'borrow, the pointer must point to the beginning of a valid and immutable null-terminated slice of len Ts.

pub unsafe fn as_mut<'borrow>(
    self: &'borrow mut slice_raw<T>
) -> slice_mut<'borrow, T>
[src]

Safety

  • For the duration of the 'borrow, the pointer must point to the beginning of a valid and immutable null-terminated slice of len Ts.

Trait Implementations

impl<T: Debug> Debug for slice_raw<T>[src]

impl<'lt, T: 'lt> From<slice_mut<'lt, T>> for slice_raw<T>[src]

impl<'lt, T: 'lt> From<slice_ref<'lt, T>> for slice_raw<T>[src]

impl<T> ReprC for slice_raw<T> where
    NonNull<T>: ReprC,
    <NonNull<T> as ReprC>::CLayout: CType<OPAQUE_KIND = Concrete>,
    usize: ReprC,
    <usize as ReprC>::CLayout: CType<OPAQUE_KIND = Concrete>,
    T: ReprC
[src]

type CLayout = slice_raw_Layout<T>

The CType having the same layout as Self.

Auto Trait Implementations

impl<T> RefUnwindSafe for slice_raw<T> where
    T: RefUnwindSafe

impl<T> !Send for slice_raw<T>

impl<T> !Sync for slice_raw<T>

impl<T> Unpin for slice_raw<T>

impl<T> UnwindSafe for slice_raw<T> where
    T: RefUnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ManuallyDropMut for T

type Ret = ManuallyDrop<T>

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.