我正在尝试使用一个外部板条箱中的函数,根据函数的签名,它应该返回一个
Result<T, E>
结构体。pub async fn market_metrics(symbols: &[String]) -> Result<Vec<market_metrics::Item>, ApiError>
我正在尝试按照Rust文档中的指示使用match
语句来解包Result<T, E>
,但出现了某种错误:
use tastyworks::market_metrics;
fn main() {
let symbols = &[String::from("AAPL")];
let m = market_metrics(symbols);
match m {
Ok(v) => v,
Err(e) => panic!(e),
}
}
error[E0308]: mismatched types
--> src/main.rs:7:9
|
7 | Ok(v) => v,
| ^^^^^ expected opaque type, found enum `std::result::Result`
|
::: /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tastyworks-0.13.0/src/lib.rs:79:52
|
79 | pub async fn market_metrics(symbols: &[String]) -> Result<Vec<market_metrics::Item>, ApiError> {
| ------------------------------------------- the `Output` of this `async fn`'s expected opaque type
|
= note: expected opaque type `impl std::future::Future`
found enum `std::result::Result<_, _>`
使用此crate的Cargo.toml依赖关系为:tastyworks = "0.13"
无法解析:在tokio中找不到main函数;rustc(E0433) main.rs(4, 10):在tokio中找不到'main'函数,而且主函数不允许是异步的
。主函数不允许是异步的 rustc(E0752) main.rs(5, 1): 主函数不允许是异步的
。 - orietokio = { version = "1", features = ["full"] }
。 - Netwavetokio = { version = "0.2" }
,因为不能同时使用多个主要版本的 Tokio。 - Cerberusfeatures = ["full"]
导入tokio
可能会给你和依赖项带来许多不必要的功能。你可以尝试使用features = ["macros", "rt-core"]
或features = ["macros", "rt-threaded"]
,具体取决于你想要使用单线程还是多线程运行时。 - sebpuetztokio = { version = "0.2", features = ["full"] }
工作了,感谢大家的支持! - orie