Rust 如何使用GenericArray?

Rust 如何使用GenericArray?,rust,Rust,在下面的代码中,我无法将字节数组转换为泛型数组。编译器告诉我给一个类型“bytes”,比如generic\u array::GenericArray,但我不知道用什么作为“N” 我发现N必须是ArrayLength类型,我被困在这里,因为我看不到要传递的大小的链接 fn main() { use aes::block_cipher_trait::generic_array::GenericArray; let phrase = "Le Rust tu comprendras

在下面的代码中,我无法将字节数组转换为泛型数组。编译器告诉我给一个类型“bytes”,比如
generic\u array::GenericArray
,但我不知道用什么作为“N”

我发现N必须是ArrayLength类型,我被困在这里,因为我看不到要传递的大小的链接

fn main() {

    use aes::block_cipher_trait::generic_array::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::clone_from_slice(&b[0..16]);

    println!("my bytes {:?}", &bytes);
}

aes::block\u cipher\u trait::generic\u array只是一个副本,因此值得仔细阅读那里的文档

GenericArray
中的第二个类型参数在某种意义上表示
GenericArray
的长度<默认情况下,code>generic_array使用板条箱
typenum
中的类型(尽管经过一些努力,您可以提供自己的类型-您只需要为它们实现必要的特性)

aes
generic\u array
作为公共依赖项提供的方式非常相似,
generic\u 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);
}
fn main(){
使用aes::block\u cipher\u trait::generic\u数组:{typenum::U16,GenericArray};
让短语“Le Rust tu comprendras jeune学徒!”;
println!(“我的短语{:?}”,和短语);
设b=短语。如_字节();
println!(“我的字节{:?}len:{},&b,b.len());
let bytes:GenericArray=GenericArray::从_切片克隆_(&b[0..16]);
println!(“我的字节{:?}”,和字节);
}
请注意,我直接使用了
generic_array
。操场没有aes的
aes
板条箱。)


这里,我们使用了
typenum::U16
,因为我们需要长度为16的数组。

非常感谢您简洁的回答!