Struct safer_ffi::slice::slice_raw_Layout
source · #[repr(C)]pub struct slice_raw_Layout<T>where
T: ReprC,
NonNull<T>: ConcreteReprC,
usize: ConcreteReprC,{
pub ptr: CLayoutOf<NonNull<T>>,
pub len: CLayoutOf<usize>,
}
Expand description
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
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.
Fields§
§ptr: CLayoutOf<NonNull<T>>
Pointer to the first element (if any).
len: CLayoutOf<usize>
Element count
Trait Implementations§
source§impl<T> CType for slice_raw_Layout<T>where
T: ReprC,
NonNull<T>: ConcreteReprC,
usize: ConcreteReprC,
impl<T> CType for slice_raw_Layout<T>where T: ReprC, NonNull<T>: ConcreteReprC, usize: ConcreteReprC,
type OPAQUE_KIND = Concrete
fn short_name() -> String
fn define_self__impl( language: &dyn HeaderLanguage, definer: &mut dyn Definer ) -> Result<()>
fn zeroed() -> Self
fn define_self( language: &dyn HeaderLanguage, definer: &mut dyn Definer ) -> Result<()>
fn name(_language: &dyn HeaderLanguage) -> String
fn name_wrapping_var(language: &dyn HeaderLanguage, var_name: &str) -> String
source§fn csharp_marshaler() -> Option<String>
fn csharp_marshaler() -> Option<String>
Optional marshaler attached to the type (e.g.,
[MarshalAs(UnmanagedType.FunctionPtr)]
)source§impl<T> Clone for slice_raw_Layout<T>where
T: ReprC,
NonNull<T>: ConcreteReprC,
usize: ConcreteReprC,
impl<T> Clone for slice_raw_Layout<T>where T: ReprC, NonNull<T>: ConcreteReprC, usize: ConcreteReprC,
source§impl<T> ReprC for slice_raw_Layout<T>where
T: ReprC,
NonNull<T>: ConcreteReprC,
usize: ConcreteReprC,
impl<T> ReprC for slice_raw_Layout<T>where T: ReprC, NonNull<T>: ConcreteReprC, usize: ConcreteReprC,
impl<T> Copy for slice_raw_Layout<T>where T: ReprC, NonNull<T>: ConcreteReprC, usize: ConcreteReprC,
Auto Trait Implementations§
impl<T> !RefUnwindSafe for slice_raw_Layout<T>
impl<T> !Send for slice_raw_Layout<T>
impl<T> !Sync for slice_raw_Layout<T>
impl<T> !Unpin for slice_raw_Layout<T>
impl<T> !UnwindSafe for slice_raw_Layout<T>
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> FitForCBox for T
impl<T> FitForCBox for T
§type CBoxWrapped = Box_<T>
type CBoxWrapped = Box_<T>
Available on crate feature
alloc
only.source§impl<T> ManuallyDropMut for T
impl<T> ManuallyDropMut for T
type Ret = ManuallyDrop<T>
fn manually_drop_mut<'__>(&'__ mut self) -> &'__ mut ManuallyDrop<T>
source§impl<T> UpcastAny for Twhere
T: 'static,
impl<T> UpcastAny for Twhere T: 'static,
source§fn upcast_any(&self) -> &(dyn Any + 'static)
fn upcast_any(&self) -> &(dyn Any + 'static)
Available on crate feature
headers
only.