在下面的 Rust 代码中,我无法将字节数组转换为 GenericArray。编译器告诉我给一个类型“字节”,如 generic_array::GenericArray<u8, N>,但我不知道使用什么作为“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);
}
Run Code Online (Sandbox Code Playgroud)
SCa*_*lla 10
aes::cipher::generic_array只是crategeneric_array的副本,因此值得仔细阅读那里的文档。
in 中的第二个类型参数GenericArray<T, N>在某种意义上表示 的长度GenericArray。generic_array默认情况下使用板条箱中的类型typenum(尽管经过一些努力,您可以提供自己的类型 \xe2\x80\x94 您只需要为它们实现必要的特征)。
就像如何aes提供generic_array公共依赖项一样,在其树中generic_array具有 的副本typenum,因此您可以像这样使用其类型:
fn main() {\n use aes::cipher::generic_array::{typenum::U16, GenericArray};\n\n let phrase = "Le Rust tu comprendras jeune padawan !";\n\n println!("my phrase {:?}", &phrase);\n\n let b = phrase.as_bytes();\n\n println!("my bytes {:?} len : {}", &b, b.len());\n\n let bytes: GenericArray<_, U16> = GenericArray::clone_from_slice(&b[0..16]);\n\n println!("my bytes {:?}", &bytes);\n}\nRun Code Online (Sandbox Code Playgroud)\n(游乐场。注意我是generic_array直接用的。游乐场没有箱子aes。)
在这里,我们使用了typenum::U16长度为 16 的数组。
| 归档时间: |
|
| 查看次数: |
7724 次 |
| 最近记录: |