pub struct BytesN<const N: usize>(/* private fields */);Expand description
BytesN is a contiguous fixed-size array type containing u8s.
The array is stored in the Host and available to the Guest through the functions defined on Bytes.
Bytes values can be stored as Storage, or in other types like Vec, Map, etc.
§Examples
BytesN values can be created from arrays:
use soroban_sdk::{Bytes, BytesN, Env};
let env = Env::default();
let bytes = BytesN::from_array(&env, &[0; 32]);
assert_eq!(bytes.len(), 32);BytesN and Bytes values are convertible:
use soroban_sdk::{Bytes, BytesN, Env};
let env = Env::default();
let bytes = Bytes::from_slice(&env, &[0; 32]);
let bytes: BytesN<32> = bytes.try_into().expect("bytes to have length 32");
assert_eq!(bytes.len(), 32);Implementations§
Source§impl<const N: usize> BytesN<N>
impl<const N: usize> BytesN<N>
pub fn env(&self) -> &Env
pub fn as_val(&self) -> &Val
pub fn to_val(&self) -> Val
pub fn as_object(&self) -> &BytesObject
pub fn to_object(&self) -> BytesObject
Sourcepub fn get(&self, i: u32) -> Option<u8>
pub fn get(&self, i: u32) -> Option<u8>
Returns the byte at the position or None if out-of-bounds.
Sourcepub fn get_unchecked(&self, i: u32) -> u8
pub fn get_unchecked(&self, i: u32) -> u8
Sourcepub fn first_unchecked(&self) -> u8
pub fn first_unchecked(&self) -> u8
Sourcepub fn last_unchecked(&self) -> u8
pub fn last_unchecked(&self) -> u8
Sourcepub fn copy_into_slice(&self, slice: &mut [u8; N])
pub fn copy_into_slice(&self, slice: &mut [u8; N])
Copy the bytes into the given slice.
pub fn iter(&self) -> BytesIter
Trait Implementations§
Source§impl<const N: usize> IntoIterator for BytesN<N>
impl<const N: usize> IntoIterator for BytesN<N>
Source§impl<const N: usize> Ord for BytesN<N>
impl<const N: usize> Ord for BytesN<N>
Source§impl<const N: usize> PartialOrd<[u8; N]> for BytesN<N>
impl<const N: usize> PartialOrd<[u8; N]> for BytesN<N>
Source§impl<const N: usize> PartialOrd<BytesN<N>> for [u8; N]
impl<const N: usize> PartialOrd<BytesN<N>> for [u8; N]
Source§impl<const N: usize> PartialOrd for BytesN<N>
impl<const N: usize> PartialOrd for BytesN<N>
Source§impl<const N: usize> SorobanArbitrary for BytesN<N>
Available on crate feature testutils only.
impl<const N: usize> SorobanArbitrary for BytesN<N>
Available on crate feature
testutils only.Source§type Prototype = ArbitraryBytesN<N>
type Prototype = ArbitraryBytesN<N>
A type that implements
Arbitrary and can be converted to this
SorobanArbitrary type.Source§impl<const N: usize> TryFromVal<Env, BytesObject> for BytesN<N>
impl<const N: usize> TryFromVal<Env, BytesObject> for BytesN<N>
type Error = ConversionError
fn try_from_val(env: &Env, obj: &BytesObject) -> Result<Self, Self::Error>
impl<const N: usize> Eq for BytesN<N>
Auto Trait Implementations§
impl<const N: usize> Freeze for BytesN<N>
impl<const N: usize> !RefUnwindSafe for BytesN<N>
impl<const N: usize> !Send for BytesN<N>
impl<const N: usize> !Sync for BytesN<N>
impl<const N: usize> Unpin for BytesN<N>
impl<const N: usize> !UnwindSafe for BytesN<N>
Blanket Implementations§
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<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W), b: &(T, U, V, W), ) -> Result<Ordering, <C as Compare<(T, U, V, W)>>::Error>
Source§impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W, X), b: &(T, U, V, W, X), ) -> Result<Ordering, <C as Compare<(T, U, V, W, X)>>::Error>
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<E, T, U> FromVal<E, T> for Uwhere
E: Env,
U: TryFromVal<E, T>,
impl<E, T, U> FromVal<E, T> for Uwhere
E: Env,
U: TryFromVal<E, T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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