aes::block_cipher_trait::generic_array
- это просто копия ящика generic_array
, так что стоит ознакомиться с документацией там.
Второй параметр типа в GenericArray<T, N>
представляет в некотором смысле длина GenericArray
. generic_array
по умолчанию использует типы из ящика typenum
(хотя, приложив некоторые усилия, вы можете предоставить свои собственные типы - вам просто нужно реализовать для них необходимые черты).
Во многом похоже на то, как aes
предоставляет generic_array
в качестве публичной c зависимости, generic_array
имеет копию typenum
в своем дереве, поэтому вы можете использовать его типы следующим образом:
fn main() {
use aes::block_cipher_trait::generic_array::{typenum::U16, GenericArray};
let phrase = "Le Rust tu comprendras jeune padawan !";
println!("my phrase {:?}", &phrase);
let b = phrase.as_bytes();
println!("my bytes {:?} len : {}", &b, b.len());
let bytes: GenericArray<_, U16> = GenericArray::clone_from_slice(&b[0..16]);
println!("my bytes {:?}", &bytes);
}
(детская площадка. Обратите внимание, что я использовал generic_array
напрямую. На детской площадке нет aes
ящика.)
Здесь мы использовали typenum::U16
, так как нам нужен массив длины 16.