如何从 Rust 中的 Blake2 板条箱返回结果?

十六进制

我正在努力使用blake2板条箱获取传递的文件名的哈希值从文档:

extern crate blake2;

use blake2::{Blake2b, Digest};
use std::env;
use std::fs;
use std::io::{self, Read};

const BUFFER_SIZE: usize = 1024;

fn print_result(sum: &[u8]) {
    for byte in sum {
        print!("{:02x}", byte);
    }
}

fn process<D: Digest + Default, R: Read>(reader: &mut R) {
    let mut sh = D::default();
    let mut buffer = [0u8; BUFFER_SIZE];
    loop {
        let n = match reader.read(&mut buffer) {
            Ok(n) => n,
            Err(_) => return,
        };
        sh.input(&buffer[..n]);
        if n == 0 || n < BUFFER_SIZE {
            break;
        }
    }
    print_result(&sh.result());
}

fn main() {
    let args = env::args();
    if args.len() > 1 {
        for path in args.skip(1) {
            if let Ok(mut file) = fs::File::open(&path) {
                process::<Blake2b, _>(&mut file);
            }
        }
    } else {
        process::<Blake2b, _>(&mut io::stdin());
    }
}
blake-test   $ cargo run hoge.txt
   Compiling blake-test v0.1.0 (/Users/hoge/blake-test)
    Finished dev [unoptimized + debuginfo] target(s) in 0.61s
     Running `target/debug/blake-test hoge.txt`
eefea9ae6b7fb678ed54e6d58d46aed9eae6d003f29419948cdb42a44a7016dee3eb566e7e95c68ac7587d5debd516a3b195eed0db84d72819e387d687fd06a6

它可以成功打印&[u8]切片。

但是,我想接收/返回结果而不是打印它们。

科内尔

当你返回一个新创建的对象时,你必须将它作为一个拥有的返回

借用的引用,例如&[u8]是临时的并且不能单独存在,它们只是在其他地方以拥有的形式存储的数据的视图。

例如,您可以调用.to_vec()切片并返回Vec<u8>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用本地未发布的板条箱?

如何使用一个板条箱中的另一个宏?

如何使用#![no_std]测试板条箱?

在Rust文档测试中不能使用从属板条箱

如何使用“ rustc”板条箱?

Rust中`mktemp`板条箱的行为不一致

如何在Rust 2018中习惯性地使用板条箱别名?

如何将编译器标志传递给Rust中的子板条箱?

如何仅在给定平台上使用板条箱?

使用Rust的板条箱正则表达式,如何获取组的职位?

如何使用字节顺序板条箱读取usize?

我如何获得Rust的openssl板条箱从对称加密gem解密数据,而又没有Node Crypto自动删除的垃圾?

如何使用重新导出的板条箱中的宏

如何在Cargo.toml中启用每个平台的板条箱功能?

如何启用Rust的“板条箱功能”?

如何导入同一板条箱的多个版本?

如何使用Rust git2板条箱执行“ git pull”?

web_sys板条箱如何工作?

如何使用筏板条箱和货物建造?

如何使用Chrono板条箱在Rust中获得当前工作日?

Rust配置板条箱和多态类型

在板条箱中无法获取范围内的Rust枚举

如何从rust中导出的板条箱宏引用板条箱中的函数?

在源代码包之外测试Rust板条箱

Rust编译器找不到'std'的板条箱

如何对使用板条箱中的特征的函数进行文档测试?

如何将扩展方法添加到具有位于不同板条箱中的关联类型的特征?

如何安装ndarray板条箱?

Rust:带有 lib 和二进制目标的板条箱中的属性 #[cfg(test)]