我在 Rust 中有以下函数。它将所有 Torrent 文件转换为磁力链接。对于某些文件,它会抛出错误。我不想跳过这些文件
use rs_torrent_magnet;
pub fn build_cache(paths: Vec<PathBuf>, magnets: String, names: String){
for path in paths{
println!("Reading file: {:?}", path);
let magnet = match rs_torrent_magnet::magnet_from_torrent_file(path) {
Ok(magnet) => magnet,
Err(e) => {
eprintln!("Error reading magnet from torrent file: {:?}", e);
return;
}
};
}
}
但是我收到以下编译器错误:
error[E0308]: mismatched types
--> src/scraper.rs:33:13
|
32 | let magnet = match rs_torrent_magnet::magnet_from_torrent_file(path) {
| ------------------------------------------------- this expression has type `std::string::String`
33 | Ok(magnet) => magnet,
| ^^^^^^^^^^ expected `String`, found `Result<_, _>`
|
= note: expected struct `std::string::String`
found enum `Result<_, _>`
为什么它返回Result<_, _>而不是String?
magnet_from_torrent_file
的结果视为 Result
,但事实并非如此——它是 String
。该函数可能有不同的方式来发出错误信号,例如通过恐慌,但它没有记录在案,因此如果不深入了解内部结构,就没有太多可做的。