簡體   English   中英

Rust md5::digest::Digest::digest 無法推斷格式的類型。(...).as_bytes()

[英]Rust md5::digest::Digest::digest cannot infer type for format!(...).as_bytes()

我正在嘗試獲取一個簡單的 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

首先注意Digest是一個特征,從 md-5 crate 中重新導出,但實際上在digest crate 中定義。

此特征中的digest function 定義如下:

fn digest(data: &[u8]) -> Output<Self>

這里有兩點需要注意。 首先,它是一個關聯的 function,而不是一個方法,所以它不帶self參數。 其次,返回值是根據實現特征的類型Self定義的。

這是cannot infer type錯誤的根源:編譯器無法確定Self的類型,因為您直接從特征調用 function。

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

use md5::{Md5, Digest};

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

另請參閱: 如何調用為 &str 實現的關聯 function?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM