#[repr(transparent)]
pub struct TritBuf<T: RawEncodingBuf = T1B1Buf<Btrit>>(_);
Expand description

A buffer containing trits.

This type is roughly analogous to Vec or String. It supports pushing and popping trits and dereferences to Trits. It may be borrowed as a trit slice, either mutably or immutably.

Implementations

Create a new empty TritBuf.

Create a new empty TritBuf, backed by the given capacity, cap. The resulting TritBuf will contain at least enough space to contain cap trits without needing to reallocate.

Create a new TritBuf of the given length, filled with copies of the provided trit.

Create a new TritBuf of the given length, filled with zero trit.

Create a new TritBuf containing the trits from the given slice of trits.

Clears the buffer, removing all values. Note that this method has no effect on the allocated capacity of the buffer.

Push a trit to the back of this TritBuf.

Pop a trit from the back of this TritBuf, returning it if successful.

Append a trit slice to the end of this TritBuf.

Extracts a trit slice containing the data within this buffer.

Note that TritBuf dereferences to Trits anyway, so it’s usually sufficient to take a reference to TritBuf or to just call &Trits methods on it rather than explicitly calling this method first.

Extracts a mutable trit slice containing the data within this buffer.

Note that TritBuf dereferences to Trits anyway, so it’s usually sufficient to take a reference to TritBuf or to just call &mut Trits methods on it rather explicitly calling this method first.

Returns the number of trits the TritBuf can hold without reallocating.

Pad the trit buffer with Btrit::Zero until the buffer’s length is a multiple of 3.

This method is often used in conjunction with Trits::as_trytes.

Pad the trit buffer with Btrit::Zero until the buffer’s length is a multiple of 3.

This method is often used in conjunction with Trits::as_trytes.

Create a new TritBuf containing the trits given by the slice of i8s.

Create a new TritBuf containing the trits given by the slice of u8s.

Transform this TritBuf into a shifted representation. If the buffer contains balanced trits (Btrit), the returned buffer will contain unbalanced trits (Utrit).

Methods from Deref<Target = Trits<T::Slice>>

Returns true if the trit slice is empty.

Returns the number of trits in this trit slice.

Interpret this slice as an (core::i8) slice.

Panics

This function will panic if the slice is not byte-aligned.

Interpret this slice as a mutable (core::i8) slice.

Panics

This function will panic if the slice is not byte-aligned.

Safety

This function is marked unsafe because modification of the trit slice in a manner that is not valid for this encoding is undefined behaviour.

Fetch the trit at the given index of this trit slice without first checking whether the index is in bounds. Providing an index that is not less than the length of this slice is undefined behaviour.

This is perhaps the ‘least bad’ unsafe function in this crate: not because any form of undefined behaviour is better or worse than another (after all, the point of undefined behaviour is that it is undefined) but because it’s the easiest to use correctly.

Safety

An index with a value less then the result of Trits::len must be used. Any other value is undefined behaviour.

Set the trit at the given index of this trit slice without first checking whether the index is in bounds. Providing an index that is not less than the length of this slice is undefined behaviour.

This is perhaps the ‘least bad’ unsafe function in this crate: not because any form of undefined behaviour is better or worse than another (after all, the point of undefined behaviour is that it is undefined) but because it’s the easiest to use correctly.

Safety

An index with a value less then the result of Trits::len must be used. Any other value is undefined behaviour.

Fetch the trit at the given index of this trit slice, if the index is valid.

Set the trit at the given index of this mutable trit slice, if the index is valid.

Panics

This function will panic if the index is not less than the length of this slice.

Returns an iterator over the trits in this slice.

Using this function is significantly faster than calling Trits::get in a loop and should be used where possible.

Returns a subslice of this slice with the given range of trits.

Panics

This function will panic if called with a range that contains indices outside this slice, or the start of the range is greater than its end.

Returns a mutable subslice of this mutable slice with the given range of trits.

Panics

This function will panic if called with a range that contains indices outside this slice, or the start of the range is greater than its end.

Copy the trits from a trit slice into this mutable trit slice (the encoding need not be equivalent).

Panics

This function will panic if the length of the slices are different.

Fill this mutable trit slice with copied of the given trit.

Copy the contents of this trit slice into a new TritBuf with the same encoding. This function is analogous to to_vec method implemented on ordinary slices.

Return an iterator over distinct, non-overlapping subslices of this trit slice, each with the given chunk length. If the length of the trit slice is not a multiple of the given chunk length, the last slice provided by the iterator will be smaller to compensate.

Panics

This function will panic if the given chunk length is 0.

Encode the contents of this trit slice into a TritBuf with a different encoding.

Returns an iterator over the trytes represented within this slice.

For encodings that are representation-compatible with trytes, such as T3B1, use Trits::as_trytes instead since it is faster and more capable.

Negate each trit in this buffer.

This has the effect of making the trit buffer negative when expressed in numeric form.

View this trit slice as an ordinary slice of trits.

View this mutable trit slice as an ordinary slice of mutable trits.

Return an iterator over distinct, non-overlapping mutable subslices of this mutable trit slice, each with the given chunk length. If the length of the trit slice is not a multiple of the given chunk length, the last slice provided by the iterator will be smaller to compensate.

Panics

This function will panic if the given chunk length is 0.

Returns a mutable iterator over the trits in this slice.

Using this function is significantly faster than calling Trits::set in a loop and should be used where possible.

Interpret this trit slice as a Tryte slice.

Panics

This function will panic if the length of the slice is not a multiple of 3, or if the slice is not byte-aligned.

Interpret this mutable trit slice as a mutable Tryte slice.

Panics

This function will panic if the length of the slice is not a multiple of 3, or if the slice is not byte-aligned.

Trait Implementations

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

The resulting type after dereferencing.

Dereferences the value.

Mutably dereferences the value.

Deserialize this value from the given Serde deserializer. Read more

Formats the value using the given formatter. Read more

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Converts to this type from the input type.

Creates a value from an iterator. Read more

Feeds this value into the given Hasher. Read more

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

The resulting type after applying the - operator.

Performs the unary - operation. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

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

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.