#[repr(C)]pub struct FfiSafeBytes { /* private fields */ }Expand description
A helper struct for passing byte slices over the ABI boundary.
Implementations§
Source§impl FfiSafeBytes
impl FfiSafeBytes
pub fn len(self) -> usize
pub unsafe fn from_raw_parts(pointer: NonNull<u8>, len: usize) -> Self
pub fn into_raw_parts(self) -> (*mut u8, usize)
Sourcepub unsafe fn as_bytes<'a>(self) -> &'a [u8] ⓘ
pub unsafe fn as_bytes<'a>(self) -> &'a [u8] ⓘ
Converts self back to a borrowed string &[u8].
§Safety
FfiSafeBytes can only be constructed from a valid rust byte slice,
so you only need to make sure that the origial &[u8] outlives the lifetime 'a.
This should generally be true when borrowing strings owned by the current
function and calling a function via FFI, but borrowing global data or
data stored within a Rc for example is probably unsafe.
Trait Implementations§
Source§impl Clone for FfiSafeBytes
impl Clone for FfiSafeBytes
Source§fn clone(&self) -> FfiSafeBytes
fn clone(&self) -> FfiSafeBytes
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for FfiSafeBytes
impl Debug for FfiSafeBytes
Source§impl Default for FfiSafeBytes
impl Default for FfiSafeBytes
Source§impl<'a> From<&'a [u8]> for FfiSafeBytes
impl<'a> From<&'a [u8]> for FfiSafeBytes
Source§impl<'a> From<&'a str> for FfiSafeBytes
impl<'a> From<&'a str> for FfiSafeBytes
Source§impl GetStaticEquivalent_ for FfiSafeBytes
impl GetStaticEquivalent_ for FfiSafeBytes
Source§type StaticEquivalent = _static_FfiSafeBytes
type StaticEquivalent = _static_FfiSafeBytes
The
'static equivalent of SelfSource§impl StableAbi for FfiSafeBytes
impl StableAbi for FfiSafeBytes
Source§const LAYOUT: &'static TypeLayout
const LAYOUT: &'static TypeLayout
The layout of the type provided by implementors.
Source§type IsNonZeroType = False
type IsNonZeroType = False
Whether this type has a single invalid bit-pattern. Read more
Source§const ABI_CONSTS: AbiConsts = _
const ABI_CONSTS: AbiConsts = _
const-equivalents of the associated types.impl Copy for FfiSafeBytes
Auto Trait Implementations§
impl Freeze for FfiSafeBytes
impl RefUnwindSafe for FfiSafeBytes
impl !Send for FfiSafeBytes
impl !Sync for FfiSafeBytes
impl Unpin for FfiSafeBytes
impl UnwindSafe for FfiSafeBytes
Blanket Implementations§
Source§impl<T> AlignerFor<1> for T
impl<T> AlignerFor<1> for T
Source§impl<T> AlignerFor<1024> for T
impl<T> AlignerFor<1024> for T
Source§type Aligner = AlignTo1024<T>
type Aligner = AlignTo1024<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<128> for T
impl<T> AlignerFor<128> for T
Source§type Aligner = AlignTo128<T>
type Aligner = AlignTo128<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<16> for T
impl<T> AlignerFor<16> for T
Source§impl<T> AlignerFor<16384> for T
impl<T> AlignerFor<16384> for T
Source§type Aligner = AlignTo16384<T>
type Aligner = AlignTo16384<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<2> for T
impl<T> AlignerFor<2> for T
Source§impl<T> AlignerFor<2048> for T
impl<T> AlignerFor<2048> for T
Source§type Aligner = AlignTo2048<T>
type Aligner = AlignTo2048<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<256> for T
impl<T> AlignerFor<256> for T
Source§type Aligner = AlignTo256<T>
type Aligner = AlignTo256<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<32> for T
impl<T> AlignerFor<32> for T
Source§impl<T> AlignerFor<32768> for T
impl<T> AlignerFor<32768> for T
Source§type Aligner = AlignTo32768<T>
type Aligner = AlignTo32768<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<4> for T
impl<T> AlignerFor<4> for T
Source§impl<T> AlignerFor<4096> for T
impl<T> AlignerFor<4096> for T
Source§type Aligner = AlignTo4096<T>
type Aligner = AlignTo4096<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<512> for T
impl<T> AlignerFor<512> for T
Source§type Aligner = AlignTo512<T>
type Aligner = AlignTo512<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<64> for T
impl<T> AlignerFor<64> for T
Source§impl<T> AlignerFor<8> for T
impl<T> AlignerFor<8> for T
Source§impl<T> AlignerFor<8192> for T
impl<T> AlignerFor<8192> for T
Source§type Aligner = AlignTo8192<T>
type Aligner = AlignTo8192<T>
The
AlignTo* type which aligns Self to ALIGNMENT.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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoClones<(T,)> for Twhere
T: Clone,
impl<T> IntoClones<(T,)> for Twhere
T: Clone,
fn into_clones(self) -> (T,)
Source§impl<T> IntoClones<(T,)> for Twhere
T: Clone,
impl<T> IntoClones<(T,)> for Twhere
T: Clone,
fn into_clones(self) -> (T,)
Source§impl<T> IntoClones<(T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T)
Source§impl<T> IntoClones<(T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T)
Source§impl<T> IntoClones<(T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T)
Source§impl<T> IntoClones<(T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T)
Source§impl<T> IntoClones<(T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T, T, T, T)
Source§impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
impl<T> IntoClones<(T, T, T, T, T, T, T, T, T, T, T)> for Twhere
T: Clone,
fn into_clones(self) -> (T, T, T, T, T, T, T, T, T, T, T)
Source§impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
Source§fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
Converts a reference to an FFI-safe type
Source§fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
Converts an FFI-safe type to a reference
Source§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
Source§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
Gets a reference to a field, determined by
offset. Read moreSource§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
Gets a muatble reference to a field, determined by
offset. Read moreSource§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
Gets a const pointer to a field,
the field is determined by
offset. Read moreSource§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
Gets a mutable pointer to a field, determined by
offset. Read moreSource§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
Replaces a field (determined by
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
Source§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
Replaces a field (determined by
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
Source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
Source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Emulates the pipeline operator, allowing method syntax in more places. Read more
Source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
The same as
piped except that the function takes &Self
Useful for functions that take &Self instead of Self. Read moreSource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
The same as
piped, except that the function takes &mut Self.
Useful for functions that take &mut Self instead of Self.Source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Mutates self using a closure taking self by mutable reference,
passing it along the method chain. Read more
Source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Observes the value of self, passing it along unmodified.
Useful in long method chains. Read more
Source§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
Performs a reference to reference conversion with
AsRef,
using the turbofish .as_ref_::<_>() syntax. Read moreSource§impl<This> TransmuteElement for Thiswhere
This: ?Sized,
impl<This> TransmuteElement for Thiswhere
This: ?Sized,
Source§unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
Transmutes the element type of this pointer.. Read more
Source§impl<T> TypeIdentity for Twhere
T: ?Sized,
impl<T> TypeIdentity for Twhere
T: ?Sized,
Source§fn as_type_mut(&mut self) -> &mut Self::Type
fn as_type_mut(&mut self) -> &mut Self::Type
Converts a mutable reference back to the original type.
Source§fn into_type_box(self: Box<Self>) -> Box<Self::Type>
fn into_type_box(self: Box<Self>) -> Box<Self::Type>
Converts a box back to the original type.
Source§fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
Converts an Arc back to the original type. Read more
Source§fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
Converts an Rc back to the original type. Read more
Source§fn from_type_ref(this: &Self::Type) -> &Self
fn from_type_ref(this: &Self::Type) -> &Self
Converts a reference back to the original type.
Source§fn from_type_mut(this: &mut Self::Type) -> &mut Self
fn from_type_mut(this: &mut Self::Type) -> &mut Self
Converts a mutable reference back to the original type.
Source§fn from_type_box(this: Box<Self::Type>) -> Box<Self>
fn from_type_box(this: Box<Self::Type>) -> Box<Self>
Converts a box back to the original type.