[英]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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.