Struct scylla::frame::value::CqlVarint

source ·
pub struct CqlVarint(/* private fields */);
Expand description

Native CQL varint representation.

Represented as two’s-complement binary in big-endian order.

This type is a raw representation in bytes. It’s the default implementation of varint type - independent of any external crates and crate features.

The type is not very useful in most use cases. However, users can make use of more complex types such as num_bigint::BigInt (v0.3/v0.4). The library support (e.g. conversion from CqlValue) for these types is enabled via num-bigint-03 and num-bigint-04 crate features.

§DB data format

Notice that constructors don’t perform any normalization on the provided data. This means that underlying bytes may contain leading zeros.

Currently, Scylla and Cassandra support non-normalized varint values. Bytes provided by the user via constructor are passed to DB as is.

The implementation of PartialEq, however, normalizes the underlying bytes before comparison. For details, check examples.

Implementations§

source§

impl CqlVarint

Constructors from bytes

source

pub fn from_signed_bytes_be(digits: Vec<u8>) -> CqlVarint

Creates a CqlVarint from an array of bytes in two’s complement big-endian binary representation.

See: disclaimer about non-normalized values.

source

pub fn from_signed_bytes_be_slice(digits: &[u8]) -> CqlVarint

Creates a CqlVarint from a slice of bytes in two’s complement binary big-endian representation.

See: disclaimer about non-normalized values.

source§

impl CqlVarint

Conversion to bytes

source

pub fn into_signed_bytes_be(self) -> Vec<u8>

Converts CqlVarint to an array of bytes in two’s complement binary big-endian representation.

source

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

Returns a slice of bytes in two’s complement binary big-endian representation.

Trait Implementations§

source§

impl Clone for CqlVarint

source§

fn clone(&self) -> CqlVarint

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for CqlVarint

source§

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

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

impl From<BigInt> for CqlVarint

Available on crate feature num-bigint-03 only.
source§

fn from(value: BigInt) -> CqlVarint

Converts to this type from the input type.
source§

impl From<BigInt> for CqlVarint

Available on crate feature num-bigint-04 only.
source§

fn from(value: BigInt) -> CqlVarint

Converts to this type from the input type.
source§

impl FromCqlVal<CqlValue> for CqlVarint

source§

impl Hash for CqlVarint

Computes the hash of normalized CqlVarint.

source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for CqlVarint

Compares two CqlVarint values after normalization.

§Example

let non_normalized_bytes = vec![0x00, 0x01];
let normalized_bytes = vec![0x01];
assert_eq!(
    CqlVarint::from_signed_bytes_be(non_normalized_bytes),
    CqlVarint::from_signed_bytes_be(normalized_bytes)
);
source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl SerializeCql for CqlVarint

source§

fn serialize<'b>( &self, typ: &ColumnType, writer: CellWriter<'b> ) -> Result<WrittenCellProof<'b>, SerializationError>

Serializes the value to given CQL type. Read more
source§

impl Value for CqlVarint

source§

fn serialize(&self, buf: &mut Vec<u8>) -> Result<(), ValueTooBig>

source§

impl Eq for CqlVarint

Auto Trait Implementations§

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
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromCqlVal<Option<CqlValue>> for T
where T: FromCqlVal<CqlValue>,

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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,

§

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>,

§

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>,

§

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.
§

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

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more