我發現很難理解下面的代碼有什么問題。我收到expected struct Vec, found enum Result錯誤Ok(from_cache),但我采用了來自https://github.com/platy/update-tracker/blob/843092708906063704442f352231bfbac5b06196/server/src/web/mod.rs#L216-L226的代碼
在網路抓取期間,我試圖將 URL 的內容快取在快取中并嘗試重用它。
use std::error::Error;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let url: &str = "https://example.com/";
let html = match cacache::read("./cache", url).await? {
Ok(from_cache) => String::from_utf8(from_cache),
Err(_) => {
let t_html = reqwest::get(url).await?.text().await?;
cacache::write("./cache", url, &t_html).await?;
t_html
},
};
println!("html = {:?}", html);
Ok(())
}
這是操場(但是,由于缺少依賴項,它顯示了其他錯誤)。誰能解釋一下或分享任何相關指南以收集有關此主題的更多資訊?
uj5u.com熱心網友回復:
回想一下,運算?符Result通過將( or ) 情況Option傳播到當前函式之外來展開 (or )。因此,這個運算式:ErrNone
cacache::read("./cache", url).await?
具有型別Vec<u8>,因為?操作員已將Result. 如果您想自己處理錯誤,請省略?運算子:
cacache::read("./cache", url).await
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/465106.html
上一篇:使用請求時變數中的錯誤處理
下一篇:如何在硒的子元素中獲取鏈接?
