我正在尝试获取一个简单的MD5摘要:
let a1_part1 = md5::digest::Digest::digest(format!("{}:{}:{}", username, realm, password).as_bytes());但是我得到了这个错误:
102 | let a1_part1 = md5::digest::Digest::digest(format!("{}:{}:{}", username, realm, password).as_bytes());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type我不知道它指的是哪种类型。format!返回一个String,as_bytes返回&[u8],如您所见:pub fn as_bytes(&self) -> &[u8]。
怎么啦?
这是正在使用的板条箱:https://crates.io/crates/md-5
发布于 2021-04-14 14:29:28
首先请注意,Digest是一个性状,从md-5板条箱重新导出,但实际上是在digest板条箱中定义的。
此特征中的digest函数定义如下:
fn digest(data: &[u8]) -> Output<Self>这里有两件事需要注意。首先,它是一个关联函数,而不是一个方法,因此它不接受self参数。其次,返回值是根据实现特征的类型Self定义的。
这是cannot infer type错误的根源:编译器无法确定Self的类型,因为您直接从特征调用函数。
您可以使用“turbofish”运算符指定类型,如下所示:
use md5::{Md5, Digest};
let a1_part1 = <Md5>::digest(format!("{}:{}:{}", username, realm, password).as_bytes());另请参阅:How to call an associated function implemented for &str?
https://stackoverflow.com/questions/67086159
复制相似问题