pub struct BytesN<const N: usize>(/* private fields */);
Expand description
BytesN is a contiguous fixed-size array type containing u8
s.
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> TryFrom<&BytesN<N>> for ScVal
impl<const N: usize> TryFrom<&BytesN<N>> for ScVal
Source§type Error = ConversionError
type Error = ConversionError
The type returned in the event of a conversion error.
Source§impl<const N: usize> TryFrom<BytesN<N>> for ScVal
impl<const N: usize> TryFrom<BytesN<N>> for ScVal
Source§type Error = ConversionError
type Error = ConversionError
The type returned in the event of a conversion error.
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