Type Alias ic_agent::hash_tree::Sha256Digest

source ·
pub type Sha256Digest = [u8; 32];
Expand description

Sha256 Digest: 32 bytes

Implementations§

source§

impl<const N: usize> [u8; N]

source

pub const fn as_ascii(&self) -> Option<&[AsciiChar; N]>

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

Converts this array of bytes into a array of ASCII characters, or returns None if any of the characters is non-ASCII.

Examples
#![feature(ascii_char)]
#![feature(const_option)]

const HEX_DIGITS: [std::ascii::Char; 16] =
    *b"0123456789abcdef".as_ascii().unwrap();

assert_eq!(HEX_DIGITS[1].as_str(), "1");
assert_eq!(HEX_DIGITS[10].as_str(), "a");
source

pub const unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar; N]

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

Converts this array of bytes into a array of ASCII characters, without checking whether they’re valid.

Safety

Every byte in the array must be in 0..=127, or else this is UB.

source§

impl<T, const N: usize> [T; N]

1.55.0 · source

pub fn map<F, U>(self, f: F) -> [U; N]where F: FnMut(T) -> U,

Returns an array of the same size as self, with function f applied to each element in order.

If you don’t necessarily need a new fixed-size array, consider using Iterator::map instead.

Note on performance and stack usage

Unfortunately, usages of this method are currently not always optimized as well as they could be. This mainly concerns large arrays, as mapping over small arrays seem to be optimized just fine. Also note that in debug mode (i.e. without any optimizations), this method can use a lot of stack space (a few times the size of the array or more).

Therefore, in performance-critical code, try to avoid using this method on large arrays or check the emitted code. Also try to avoid chained maps (e.g. arr.map(...).map(...)).

In many cases, you can instead use Iterator::map by calling .iter() or .into_iter() on your array. [T; N]::map is only necessary if you really need a new array of the same size as the result. Rust’s lazy iterators tend to get optimized very well.

Examples
let x = [1, 2, 3];
let y = x.map(|v| v + 1);
assert_eq!(y, [2, 3, 4]);

let x = [1, 2, 3];
let mut temp = 0;
let y = x.map(|v| { temp += 1; v * temp });
assert_eq!(y, [1, 4, 9]);

let x = ["Ferris", "Bueller's", "Day", "Off"];
let y = x.map(|v| v.len());
assert_eq!(y, [6, 9, 3, 3]);
source

pub fn try_map<F, R>( self, f: F ) -> <<R as Try>::Residual as Residual<[<R as Try>::Output; N]>>::TryTypewhere F: FnMut(T) -> R, R: Try, <R as Try>::Residual: Residual<[<R as Try>::Output; N]>,

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

A fallible function f applied to each element on array self in order to return an array the same size as self or the first error encountered.

The return type of this function depends on the return type of the closure. If you return Result<T, E> from the closure, you’ll get a Result<[T; N], E>. If you return Option<T> from the closure, you’ll get an Option<[T; N]>.

Examples
#![feature(array_try_map)]
let a = ["1", "2", "3"];
let b = a.try_map(|v| v.parse::<u32>()).unwrap().map(|v| v + 1);
assert_eq!(b, [2, 3, 4]);

let a = ["1", "2a", "3"];
let b = a.try_map(|v| v.parse::<u32>());
assert!(b.is_err());

use std::num::NonZeroU32;
let z = [1, 2, 0, 3, 4];
assert_eq!(z.try_map(NonZeroU32::new), None);
let a = [1, 2, 3];
let b = a.try_map(NonZeroU32::new);
let c = b.map(|x| x.map(NonZeroU32::get));
assert_eq!(c, Some(a));
1.57.0 (const: 1.57.0) · source

pub const fn as_slice(&self) -> &[T]

Returns a slice containing the entire array. Equivalent to &s[..].

1.57.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Returns a mutable slice containing the entire array. Equivalent to &mut s[..].

source

pub fn each_ref(&self) -> [&T; N]

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

Borrows each element and returns an array of references with the same size as self.

Example
#![feature(array_methods)]

let floats = [3.1, 2.7, -1.0];
let float_refs: [&f64; 3] = floats.each_ref();
assert_eq!(float_refs, [&3.1, &2.7, &-1.0]);

This method is particularly useful if combined with other methods, like map. This way, you can avoid moving the original array if its elements are not Copy.

#![feature(array_methods)]

let strings = ["Ferris".to_string(), "♥".to_string(), "Rust".to_string()];
let is_ascii = strings.each_ref().map(|s| s.is_ascii());
assert_eq!(is_ascii, [true, false, true]);

// We can still access the original array: it has not been moved.
assert_eq!(strings.len(), 3);
source

pub fn each_mut(&mut self) -> [&mut T; N]

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

Borrows each element mutably and returns an array of mutable references with the same size as self.

Example
#![feature(array_methods)]

let mut floats = [3.1, 2.7, -1.0];
let float_refs: [&mut f64; 3] = floats.each_mut();
*float_refs[0] = 0.0;
assert_eq!(float_refs, [&mut 0.0, &mut 2.7, &mut -1.0]);
assert_eq!(floats, [0.0, 2.7, -1.0]);
source

pub fn split_array_ref<const M: usize>(&self) -> (&[T; M], &[T])

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

Divides one array reference into two at an index.

The first will contain all indices from [0, M) (excluding the index M itself) and the second will contain all indices from [M, N) (excluding the index N itself).

Panics

Panics if M > N.

Examples
#![feature(split_array)]

let v = [1, 2, 3, 4, 5, 6];

{
   let (left, right) = v.split_array_ref::<0>();
   assert_eq!(left, &[]);
   assert_eq!(right, &[1, 2, 3, 4, 5, 6]);
}

{
    let (left, right) = v.split_array_ref::<2>();
    assert_eq!(left, &[1, 2]);
    assert_eq!(right, &[3, 4, 5, 6]);
}

{
    let (left, right) = v.split_array_ref::<6>();
    assert_eq!(left, &[1, 2, 3, 4, 5, 6]);
    assert_eq!(right, &[]);
}
source

pub fn split_array_mut<const M: usize>(&mut self) -> (&mut [T; M], &mut [T])

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

Divides one mutable array reference into two at an index.

The first will contain all indices from [0, M) (excluding the index M itself) and the second will contain all indices from [M, N) (excluding the index N itself).

Panics

Panics if M > N.

Examples
#![feature(split_array)]

let mut v = [1, 0, 3, 0, 5, 6];
let (left, right) = v.split_array_mut::<2>();
assert_eq!(left, &mut [1, 0][..]);
assert_eq!(right, &mut [3, 0, 5, 6]);
left[1] = 2;
right[1] = 4;
assert_eq!(v, [1, 2, 3, 4, 5, 6]);
source

pub fn rsplit_array_ref<const M: usize>(&self) -> (&[T], &[T; M])

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

Divides one array reference into two at an index from the end.

The first will contain all indices from [0, N - M) (excluding the index N - M itself) and the second will contain all indices from [N - M, N) (excluding the index N itself).

Panics

Panics if M > N.

Examples
#![feature(split_array)]

let v = [1, 2, 3, 4, 5, 6];

{
   let (left, right) = v.rsplit_array_ref::<0>();
   assert_eq!(left, &[1, 2, 3, 4, 5, 6]);
   assert_eq!(right, &[]);
}

{
    let (left, right) = v.rsplit_array_ref::<2>();
    assert_eq!(left, &[1, 2, 3, 4]);
    assert_eq!(right, &[5, 6]);
}

{
    let (left, right) = v.rsplit_array_ref::<6>();
    assert_eq!(left, &[]);
    assert_eq!(right, &[1, 2, 3, 4, 5, 6]);
}
source

pub fn rsplit_array_mut<const M: usize>(&mut self) -> (&mut [T], &mut [T; M])

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

Divides one mutable array reference into two at an index from the end.

The first will contain all indices from [0, N - M) (excluding the index N - M itself) and the second will contain all indices from [N - M, N) (excluding the index N itself).

Panics

Panics if M > N.

Examples
#![feature(split_array)]

let mut v = [1, 0, 3, 0, 5, 6];
let (left, right) = v.rsplit_array_mut::<4>();
assert_eq!(left, &mut [1, 0]);
assert_eq!(right, &mut [3, 0, 5, 6][..]);
left[1] = 2;
right[1] = 4;
assert_eq!(v, [1, 2, 3, 4, 5, 6]);

Trait Implementations§

source§

impl<T> Array for [T; 32]

§

type Item = T

The array’s element type
source§

const CAPACITY: usize = 32usize

The array’s element capacity
source§

fn as_slice(&self) -> &[Self::Item]

source§

fn as_mut_slice(&mut self) -> &mut [Self::Item]

§

impl<T> Array for [T; 32]where T: Default,

§

type Item = T

The type of the items in the thing.
§

const CAPACITY: usize = 32usize

The number of slots in the thing.
§

fn as_slice(&self) -> &[T]

Gives a shared slice over the whole thing. Read more
§

fn as_slice_mut(&mut self) -> &mut [T]

Gives a unique slice over the whole thing. Read more
§

fn default() -> [T; 32]

Create a default-initialized instance of ourself, similar to the Default trait, but implemented for the same range of sizes as [Array].
§

impl<T> Array for [T; 32]

§

type Item = T

The type of the array’s elements.
§

fn size() -> usize

Returns the number of items the array can hold.
source§

impl<T> Array for [T; 65536]

§

type Item = T

The array’s element type
source§

const CAPACITY: usize = 65_536usize

The array’s element capacity
source§

fn as_slice(&self) -> &[Self::Item]

source§

fn as_mut_slice(&mut self) -> &mut [Self::Item]

1.0.0 · source§

impl<T, const N: usize> AsMut<[T]> for [T; N]

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
1.0.0 · source§

impl<T, const N: usize> AsRef<[T]> for [T; N]

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
§

impl<C, B> BinRead for [B; 32]where C: Copy + 'static, B: BinRead<Args = C> + Default,

§

type Args = <B as BinRead>::Args

The type of arguments needed to be supplied in order to read this type, usually a tuple. Read more
§

fn read_options<R>( reader: &mut R, options: &ReadOptions, args: <[B; 32] as BinRead>::Args ) -> Result<[B; 32], Error>where R: Read + Seek,

Read the type from the reader
§

fn after_parse<R>( &mut self, reader: &mut R, ro: &ReadOptions, args: <B as BinRead>::Args ) -> Result<(), Error>where R: Read + Seek,

§

fn read<R>(reader: &mut R) -> Result<Self, Error>where R: Read + Seek,

Read the type from the reader while assuming no arguments have been passed Read more
§

fn read_args<R>(reader: &mut R, args: Self::Args) -> Result<Self, Error>where R: Read + Seek,

Read the type from the reader using the specified arguments
§

fn args_default() -> Option<Self::Args>

The default arguments to be used when using the read shortcut method. Override this for any type that optionally requries arguments
1.4.0 · source§

impl<T, const N: usize> Borrow<[T]> for [T; N]

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
1.4.0 · source§

impl<T, const N: usize> BorrowMut<[T]> for [T; N]

source§

fn borrow_mut(&mut self) -> &mut [T]

Mutably borrows from an owned value. Read more
source§

impl<T, const N: usize> CandidType for [T; N]where T: CandidType,

source§

fn _ty() -> Type

source§

fn idl_serialize<S>( &self, serializer: S ) -> Result<(), <S as Serializer>::Error>where S: Serializer,

source§

fn ty() -> Type

source§

fn id() -> TypeId

1.58.0 · source§

impl<T, const N: usize> Clone for [T; N]where T: Clone,

source§

fn clone(&self) -> [T; N]

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, other: &[T; N])

Performs copy-assignment from source. Read more
1.0.0 · source§

impl<T, const N: usize> Debug for [T; N]where T: Debug,

source§

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

Formats the value using the given formatter. Read more
§

impl<'a, T, const N: usize> DecodeValue<'a> for [T; N]where T: Decode<'a>,

§

fn decode_value<R>(reader: &mut R, header: Header) -> Result<[T; N], Error>where R: Reader<'a>,

Attempt to decode this message using the provided [Reader].
1.4.0 · source§

impl<T> Default for [T; 0]

source§

fn default() -> [T; 0]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 1]where T: Default,

source§

fn default() -> [T; 1]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 10]where T: Default,

source§

fn default() -> [T; 10]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 11]where T: Default,

source§

fn default() -> [T; 11]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 12]where T: Default,

source§

fn default() -> [T; 12]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 13]where T: Default,

source§

fn default() -> [T; 13]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 14]where T: Default,

source§

fn default() -> [T; 14]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 15]where T: Default,

source§

fn default() -> [T; 15]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 16]where T: Default,

source§

fn default() -> [T; 16]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 17]where T: Default,

source§

fn default() -> [T; 17]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 18]where T: Default,

source§

fn default() -> [T; 18]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 19]where T: Default,

source§

fn default() -> [T; 19]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 2]where T: Default,

source§

fn default() -> [T; 2]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 20]where T: Default,

source§

fn default() -> [T; 20]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 21]where T: Default,

source§

fn default() -> [T; 21]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 22]where T: Default,

source§

fn default() -> [T; 22]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 23]where T: Default,

source§

fn default() -> [T; 23]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 24]where T: Default,

source§

fn default() -> [T; 24]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 25]where T: Default,

source§

fn default() -> [T; 25]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 26]where T: Default,

source§

fn default() -> [T; 26]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 27]where T: Default,

source§

fn default() -> [T; 27]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 28]where T: Default,

source§

fn default() -> [T; 28]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 29]where T: Default,

source§

fn default() -> [T; 29]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 3]where T: Default,

source§

fn default() -> [T; 3]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 30]where T: Default,

source§

fn default() -> [T; 30]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 31]where T: Default,

source§

fn default() -> [T; 31]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 32]where T: Default,

source§

fn default() -> [T; 32]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 4]where T: Default,

source§

fn default() -> [T; 4]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 5]where T: Default,

source§

fn default() -> [T; 5]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 6]where T: Default,

source§

fn default() -> [T; 6]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 7]where T: Default,

source§

fn default() -> [T; 7]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 8]where T: Default,

source§

fn default() -> [T; 8]

Returns the “default value” for a type. Read more
1.4.0 · source§

impl<T> Default for [T; 9]where T: Default,

source§

fn default() -> [T; 9]

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

impl<'de, T> Deserialize<'de> for [T; 32]where T: Deserialize<'de>,

source§

fn deserialize<D>( deserializer: D ) -> Result<[T; 32], <D as Deserializer<'de>>::Error>where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl<T, const N: usize> EncodeValue for [T; N]where T: Encode,

§

fn value_len(&self) -> Result<Length, Error>

Compute the length of this value (sans [Tag]+[Length] header) when encoded as ASN.1 DER.
§

fn encode_value(&self, writer: &mut impl Writer) -> Result<(), Error>

Encode value (sans [Tag]+[Length] header) as ASN.1 DER using the provided [Writer].
§

fn header(&self) -> Result<Header, Error>where Self: Tagged,

Get the [Header] used to encode this value.
source§

impl<T> Fill for [T; 0]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 1]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 10]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 1024]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 11]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 12]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 128]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 13]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 14]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 15]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 16]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 17]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 18]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 19]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 2]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 20]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 2048]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 21]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 22]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 23]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 24]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 25]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 256]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 26]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 27]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 28]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 29]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 3]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 30]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 31]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 32]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 4]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 5]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 512]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 6]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 64]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 7]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 8]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
source§

impl<T> Fill for [T; 9]where [T]: Fill,

source§

fn try_fill<R>(&mut self, rng: &mut R) -> Result<(), Error>where R: Rng + ?Sized,

Fill self with random data
§

impl<T, const N: usize> FixedTag for [T; N]

§

const TAG: Tag = Tag::Sequence

ASN.1 tag
§

impl<'a> From<&'a Scalar> for [u8; 32]

§

fn from(value: &'a Scalar) -> [u8; 32]

Converts to this type from the input type.
source§

impl From<&Signature> for [u8; 64]

source§

fn from(signature: &Signature) -> [u8; 64]

Converts to this type from the input type.
§

impl<T> From<GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>> for [T; 32]

Available on relaxed_coherence only.
§

fn from( sel: GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>> ) -> [T; 32]

Converts to this type from the input type.
§

impl From<Scalar> for [u8; 32]

§

fn from(value: Scalar) -> [u8; 32]

Converts to this type from the input type.
source§

impl From<Signature> for [u8; 64]

source§

fn from(signature: Signature) -> [u8; 64]

Converts to this type from the input type.
source§

impl<T, const N: usize> From<Simd<T, N>> for [T; N]where LaneCount<N>: SupportedLaneCount, T: SimdElement,

source§

fn from(vector: Simd<T, N>) -> [T; N]

Converts to this type from the input type.
source§

impl FromHex for [u8; 32]

§

type Error = FromHexError

source§

fn from_hex<T>(hex: T) -> Result<[u8; 32], <[u8; 32] as FromHex>::Error>where T: AsRef<[u8]>,

Creates an instance of type Self from the given hex string, or fails with a custom error type. Read more
1.0.0 · source§

impl<T, const N: usize> Hash for [T; N]where T: Hash,

The hash of an array is the same as that of the corresponding slice, as required by the Borrow implementation.

use std::hash::BuildHasher;

let b = std::collections::hash_map::RandomState::new();
let a: [u8; 3] = [0xa8, 0x3c, 0x09];
let s: &[u8] = &[0xa8, 0x3c, 0x09];
assert_eq!(b.hash_one(a), b.hash_one(s));
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
1.50.0 · source§

impl<T, I, const N: usize> Index<I> for [T; N]where [T]: Index<I>,

§

type Output = <[T] as Index<I>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<[T; N] as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
1.50.0 · source§

impl<T, I, const N: usize> IndexMut<I> for [T; N]where [T]: IndexMut<I>,

source§

fn index_mut(&mut self, index: I) -> &mut <[T; N] as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
1.53.0 · source§

impl<T, const N: usize> IntoIterator for [T; N]

source§

fn into_iter(self) -> <[T; N] as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of the array (from start to end). The array cannot be used after calling this unless T implements Copy, so the whole array is copied.

Arrays have special behavior when calling .into_iter() prior to the 2021 edition – see the array Editions section for more information.

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T, N>

Which kind of iterator are we turning this into?
1.0.0 · source§

impl<T, const N: usize> Ord for [T; N]where T: Ord,

Implements comparison of arrays lexicographically.

source§

fn cmp(&self, other: &[T; N]) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
1.0.0 · source§

impl<A, B, const N: usize> PartialEq<&[B]> for [A; N]where A: PartialEq<B>,

source§

fn eq(&self, other: &&[B]) -> bool

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

fn ne(&self, other: &&[B]) -> bool

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

impl<A, B, const N: usize> PartialEq<&mut [B]> for [A; N]where A: PartialEq<B>,

source§

fn eq(&self, other: &&mut [B]) -> bool

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

fn ne(&self, other: &&mut [B]) -> bool

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

impl<A, B, const N: usize> PartialEq<[B]> for [A; N]where A: PartialEq<B>,

source§

fn eq(&self, other: &[B]) -> bool

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

fn ne(&self, other: &[B]) -> bool

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

impl<A, B, const N: usize> PartialEq<[B; N]> for [A; N]where A: PartialEq<B>,

source§

fn eq(&self, other: &[B; N]) -> bool

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

fn ne(&self, other: &[B; N]) -> bool

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

impl<T, const N: usize> PartialOrd<[T; N]> for [T; N]where T: PartialOrd<T>,

source§

fn partial_cmp(&self, other: &[T; N]) -> Option<Ordering>

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

fn lt(&self, other: &[T; N]) -> bool

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

fn le(&self, other: &[T; N]) -> bool

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

fn ge(&self, other: &[T; N]) -> bool

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

fn gt(&self, other: &[T; N]) -> bool

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

impl<T> Serialize for [T; 32]where T: Serialize,

source§

fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where S: Serializer,

Serialize this value into the given Serde serializer. Read more
1.51.0 · source§

impl<T, const N: usize> SlicePattern for [T; N]

§

type Item = T

🔬This is a nightly-only experimental API. (slice_pattern)
The element type of the slice being matched on.
source§

fn as_slice(&self) -> &[<[T; N] as SlicePattern>::Item]

🔬This is a nightly-only experimental API. (slice_pattern)
Currently, the consumers of SlicePattern need a slice.
1.34.0 · source§

impl<T, const N: usize> TryFrom<&[T]> for [T; N]where T: Copy,

Tries to create an array [T; N] by copying from a slice &[T]. Succeeds if slice.len() == N.

let bytes: [u8; 3] = [1, 0, 2];

let bytes_head: [u8; 2] = <[u8; 2]>::try_from(&bytes[0..2]).unwrap();
assert_eq!(1, u16::from_le_bytes(bytes_head));

let bytes_tail: [u8; 2] = bytes[1..3].try_into().unwrap();
assert_eq!(512, u16::from_le_bytes(bytes_tail));
§

type Error = TryFromSliceError

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

fn try_from(slice: &[T]) -> Result<[T; N], TryFromSliceError>

Performs the conversion.
1.59.0 · source§

impl<T, const N: usize> TryFrom<&mut [T]> for [T; N]where T: Copy,

Tries to create an array [T; N] by copying from a mutable slice &mut [T]. Succeeds if slice.len() == N.

let mut bytes: [u8; 3] = [1, 0, 2];

let bytes_head: [u8; 2] = <[u8; 2]>::try_from(&mut bytes[0..2]).unwrap();
assert_eq!(1, u16::from_le_bytes(bytes_head));

let bytes_tail: [u8; 2] = (&mut bytes[1..3]).try_into().unwrap();
assert_eq!(512, u16::from_le_bytes(bytes_tail));
§

type Error = TryFromSliceError

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

fn try_from(slice: &mut [T]) -> Result<[T; N], TryFromSliceError>

Performs the conversion.
1.48.0 · source§

impl<T, A, const N: usize> TryFrom<Vec<T, A>> for [T; N]where A: Allocator,

source§

fn try_from(vec: Vec<T, A>) -> Result<[T; N], Vec<T, A>>

Gets the entire contents of the Vec<T> as an array, if its size exactly matches that of the requested array.

Examples
assert_eq!(vec![1, 2, 3].try_into(), Ok([1, 2, 3]));
assert_eq!(<Vec<i32>>::new().try_into(), Ok([]));

If the length doesn’t match, the input comes back in Err:

let r: Result<[i32; 4], _> = (0..10).collect::<Vec<_>>().try_into();
assert_eq!(r, Err(vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9]));

If you’re fine with just getting a prefix of the Vec<T>, you can call .truncate(N) first.

let mut v = String::from("hello world").into_bytes();
v.sort();
v.truncate(2);
let [a, b]: [_; 2] = v.try_into().unwrap();
assert_eq!(a, b' ');
assert_eq!(b, b'd');
§

type Error = Vec<T, A>

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

impl<T, const N: usize> ValueOrd for [T; N]where T: DerOrd,

§

fn value_cmp(&self, other: &[T; N]) -> Result<Ordering, Error>

Return an Ordering between value portion of TLV-encoded self and other when serialized as ASN.1 DER.
§

impl<Z, const N: usize> Zeroize for [Z; N]where Z: Zeroize,

Impl [Zeroize] on arrays of types that impl [Zeroize].

§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.
source§

impl<T, const N: usize> ConstParamTy for [T; N]where T: ConstParamTy,

1.58.0 · source§

impl<T, const N: usize> Copy for [T; N]where T: Copy,

1.0.0 · source§

impl<T, const N: usize> Eq for [T; N]where T: Eq,

source§

impl<T, const N: usize> StructuralEq for [T; N]

source§

impl<T, const N: usize> StructuralPartialEq for [T; N]

§

impl<Z, const N: usize> ZeroizeOnDrop for [Z; N]where Z: ZeroizeOnDrop,

Impl [ZeroizeOnDrop] on arrays of types that impl [ZeroizeOnDrop].