Ziv*_*iva 5 arrays type-conversion rust
我正在计算给定数据的 SHA256:
let hashvalue = sha2::Sha256::digest(&data);
Run Code Online (Sandbox Code Playgroud)
计算后,我想将此值放入结构的字段中:
let x = Hash { value: hashvalue };
Run Code Online (Sandbox Code Playgroud)
但是,Hash结构需要 value 的类型[u8; 32],而我的hashvalue变量是 type GenericArray<u8, ?>。我怎样才能转换hashvalue成正确的类型?我尝试使用as [u8; 32],arr!但没有用。
如果您不知道数组的长度,请将其GenericArray转换为切片,然后将切片转换为数组(仅适用于 Rust 1.47 之前长度为 32 或更少的数组):
use sha2::Digest; // 0.9.3
use std::convert::TryInto;
fn main() {
let hashvalue = sha2::Sha256::digest(&[3, 2, 6, 4, 3]);
let x: [u8; 32] = hashvalue.as_slice().try_into().expect("Wrong length");
println!("{:?}", x);
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
根据的文档GenericArray,我假设您可以使用hashvalue.into(),但我没有设法编译它。
非惯用替代方案:
use digest::Digest; // 0.7.6
use generic_array; // 0.13.2
use sha2; // 0.7.1
fn main() {
let hashvalue = sha2::Sha256::digest(&[3, 2, 6, 4, 3]);
let x: [u8; 32] = [
hashvalue[0],
hashvalue[1],
hashvalue[2],
hashvalue[3],
hashvalue[4],
hashvalue[5],
hashvalue[6],
hashvalue[7],
hashvalue[8],
hashvalue[9],
hashvalue[10],
hashvalue[11],
hashvalue[12],
hashvalue[13],
hashvalue[14],
hashvalue[15],
hashvalue[16],
hashvalue[17],
hashvalue[18],
hashvalue[19],
hashvalue[20],
hashvalue[21],
hashvalue[22],
hashvalue[23],
hashvalue[24],
hashvalue[25],
hashvalue[26],
hashvalue[27],
hashvalue[28],
hashvalue[29],
hashvalue[30],
hashvalue[31],
];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |