预期的结构`Vec`,在tokio,缓存和匹配中找到枚举`Result`
expected struct `Vec`, found enum `Result` in tokio, cacache and match
我很难理解下面的代码有什么问题。我在 Ok(from_cache)
收到 expected struct Vec, found enum Result
错误,但我采用了 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(())
}
这是 playground(但是,由于缺少依赖项,它显示了其他错误)。谁能解释一下或分享任何相关指南以收集有关此主题的更多信息?
通过将 Err
(或 None
)情况传播到当前函数之外,回想一下 the ?
operator unwraps a Result
(或 Option
)。因此,这个表达式:
cacache::read("./cache", url).await?
具有类型 Vec<u8>
,因为 ?
运算符已展开 Result
。如果您想自己处理错误,请省略 ?
运算符:
cacache::read("./cache", url).await
我很难理解下面的代码有什么问题。我在 Ok(from_cache)
收到 expected struct Vec, found enum Result
错误,但我采用了 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(())
}
这是 playground(但是,由于缺少依赖项,它显示了其他错误)。谁能解释一下或分享任何相关指南以收集有关此主题的更多信息?
通过将 Err
(或 None
)情况传播到当前函数之外,回想一下 the ?
operator unwraps a Result
(或 Option
)。因此,这个表达式:
cacache::read("./cache", url).await?
具有类型 Vec<u8>
,因为 ?
运算符已展开 Result
。如果您想自己处理错误,请省略 ?
运算符:
cacache::read("./cache", url).await