Struct ZeroCopyStr

Source
pub struct ZeroCopyStr<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> ZeroCopyStr<'a>

Source

pub fn write_to( str: &str, bytes: &'a mut [u8], ) -> (ZeroCopyStr<'a>, &'a mut [u8])

Writes the contents of a &str within the buffer provided. Requires space for the str byte length + LEN_TYPE_SIZE length.

We also return a new reference pointing just after the end of the str written.

Panics if buffer is not large enough.

Source

pub fn write_to_update<'o>( str: &str, bytes: &'o mut &'a mut [u8], ) -> ZeroCopyStr<'a>

Writes the contents of a &str within the buffer provided. Requires space for the str byte length + LEN_TYPE_SIZE length.

We also update the position of the reference to just after the end of the str.

Panics if buffer is not large enough.

Source

pub fn read_from(bytes: &mut &'a [u8]) -> ZeroCopyStr<'a>

Zero-copy deserializes bytes into ZeroCopyStr. Update the reference to point

We also update the position of the reference to just after the end of the str.

Panics if the buffer does not hold the proper data.

Source

pub fn serialized_size(&self) -> usize

Total serialized size: str bytes + len bytes

Source

pub fn as_bytes(&self) -> &[u8]

Returns a view of the bytes of the inner &str.

Note this does not include the bytes of the str length

Source

pub fn as_str(&self) -> &str

Returns a view of the inner &str

Source

pub fn to_vec(&self) -> Vec<u8>

Serializes the str into a vec, in the format specified in this crate.

Trait Implementations§

Source§

impl<'a> Clone for ZeroCopyStr<'a>

Source§

fn clone(&self) -> ZeroCopyStr<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for ZeroCopyStr<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> From<&'a str> for ZeroCopyStr<'a>

Source§

fn from(value: &'a str) -> Self

Converts to this type from the input type.
Source§

impl<'a> PartialEq<&str> for ZeroCopyStr<'a>

Source§

fn eq(&self, other: &&str) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialEq for ZeroCopyStr<'a>

Source§

fn eq(&self, other: &ZeroCopyStr<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> Copy for ZeroCopyStr<'a>

Source§

impl<'a> StructuralPartialEq for ZeroCopyStr<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for ZeroCopyStr<'a>

§

impl<'a> RefUnwindSafe for ZeroCopyStr<'a>

§

impl<'a> Send for ZeroCopyStr<'a>

§

impl<'a> Sync for ZeroCopyStr<'a>

§

impl<'a> Unpin for ZeroCopyStr<'a>

§

impl<'a> UnwindSafe for ZeroCopyStr<'a>

Blanket Implementations§

Source§

impl<T> AbiExample for T

Source§

default fn example() -> T

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V