我正在计算给定数据的 SHA256:
let hashvalue = sha2::Sha256::digest(&data);
计算后,我想将此值放入结构的字段中:
let x = Hash { value: hashvalue };
然而,
Hash
struct 需要值的类型 [u8; 32]
, 而我的 hashvalue
变量的类型是 GenericArray<u8, ?>
.如何转换 hashvalue
进入正确的类型?我尝试使用 as [u8; 32]
和 arr!
但它没有用。
最佳答案
如果您不知道数组的长度,请转换 GenericArray
转换为切片,然后将切片转换为数组(仅适用于长度为 32 或更少的数组 before Rust 1.47 ):
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);
}
也可以看看:关于arrays - 如何将 GenericArray<T, ?> 转换为相同长度的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59376378/