首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rust md5::digest::Digest::digest无法推断格式的类型!(...).as_bytes()

Rust md5::digest::Digest::digest无法推断格式的类型!(...).as_bytes()
EN

Stack Overflow用户
提问于 2021-04-14 13:48:33
回答 1查看 41关注 0票数 0

我正在尝试获取一个简单的MD5摘要:

代码语言:javascript
复制
let a1_part1 = md5::digest::Digest::digest(format!("{}:{}:{}", username, realm, password).as_bytes());

但是我得到了这个错误:

代码语言:javascript
复制
102 |             let a1_part1 = md5::digest::Digest::digest(format!("{}:{}:{}", username, realm, password).as_bytes());
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type

我不知道它指的是哪种类型。format!返回一个Stringas_bytes返回&[u8],如您所见:pub fn as_bytes(&self) -> &[u8]

怎么啦?

这是正在使用的板条箱:https://crates.io/crates/md-5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-14 14:29:28

首先请注意,Digest是一个性状,从md-5板条箱重新导出,但实际上是在digest板条箱中定义的。

此特征中的digest函数定义如下:

代码语言:javascript
复制
fn digest(data: &[u8]) -> Output<Self>

这里有两件事需要注意。首先,它是一个关联函数,而不是一个方法,因此它不接受self参数。其次,返回值是根据实现特征的类型Self定义的。

这是cannot infer type错误的根源:编译器无法确定Self的类型,因为您直接从特征调用函数。

您可以使用“turbofish”运算符指定类型,如下所示:

代码语言:javascript
复制
use md5::{Md5, Digest};

let a1_part1 = <Md5>::digest(format!("{}:{}:{}", username, realm, password).as_bytes());

另请参阅:How to call an associated function implemented for &str?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67086159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档