Skip to main content

Str

Enum Str 

Source
pub enum Str<'a> {
    Int(i64),
    Bytes(&'a [u8]),
}
Expand description

A stored value, read back out of a record.

The point of the two arms is that neither of them copies. An integer comes back as an integer and is written into the reply buffer as digits at the moment the reply is built, and a string comes back as a slice of the record it lives in. Y18 asks for the reply to be constructed once in wire form, and a Vec<u8> in the middle of that is the thing it is asking to remove.

Variants§

§

Int(i64)

An int encoded value.

§

Bytes(&'a [u8])

Everything else, as it lies in the record.

Implementations§

Source§

impl Str<'_>

Source

pub fn len(&self) -> usize

How many bytes this value is as a string, which is what STRLEN returns.

Source

pub fn is_empty(&self) -> bool

Whether the value is the empty string.

Source

pub fn write_to(&self, out: &mut Vec<u8>)

Append the string form to a buffer, which for an integer is its digits.

Source

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

The string form, copied. For the reply path prefer Str::write_to.

Source

pub fn as_int(&self) -> Option<i64>

The integer this value is, if it is one.

A value can be an integer without being int encoded: APPEND and SETRANGE leave a raw string behind, and INCR on "10" built that way is 11 in Redis. So the bytes are parsed rather than the encoding being trusted.

Source

pub fn digest(&self) -> u64

The XXH3 of the value’s string form, which is Redis’s DIGEST.

An int encoded value hashes its digits and not the eight bytes the record holds, because the digest a client compares against is the digest of what a client would have read.

Trait Implementations§

Source§

impl<'a> Clone for Str<'a>

Source§

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

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for Str<'a>

Source§

impl<'a> Debug for Str<'a>

Source§

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

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

impl<'a> Eq for Str<'a>

Source§

impl<'a> PartialEq for Str<'a>

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl<'a> StructuralPartialEq for Str<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Str<'a>

§

impl<'a> RefUnwindSafe for Str<'a>

§

impl<'a> Send for Str<'a>

§

impl<'a> Sync for Str<'a>

§

impl<'a> Unpin for Str<'a>

§

impl<'a> UnsafeUnpin for Str<'a>

§

impl<'a> UnwindSafe for Str<'a>

Blanket Implementations§

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.