Asynchronous 为什么我会得到;“预期类型未来”;对结果使用匹配语句时出错?

Asynchronous 为什么我会得到;“预期类型未来”;对结果使用匹配语句时出错?,asynchronous,struct,rust,match,crate,Asynchronous,Struct,Rust,Match,Crate,我试图在外部板条箱中使用函数,它应该返回函数签名所暗示的结果结构: pub async fn market_metrics(symbols: &[String]) -> Result<Vec<market_metrics::Item>, ApiError> 错误[E0308]:类型不匹配 -->src/main.rs:7:9 | 7 |正常(v)=>v, |^^^应为不透明类型,找到枚举'std::result::result'` | ::/home/u

我试图在外部板条箱中使用函数,它应该返回函数签名所暗示的
结果
结构:

pub async fn market_metrics(symbols: &[String]) -> Result<Vec<market_metrics::Item>, ApiError>
错误[E0308]:类型不匹配
-->src/main.rs:7:9
|
7 |正常(v)=>v,
|^^^应为不透明类型,找到枚举'std::result::result'`
| 
::/home/user/.cargo/registry/src/github.com-1ec6299db9ec823/tastyworks-0.13.0/src/lib.rs:79:52
|
79 |发布异步fn市场度量(符号:&[String])->结果{
|---------------------------------------此“异步fn”的“输出”应为不透明类型
|
=注意:应为不透明类型`impl std::future::future::future`
找到枚举'std::result::result'`
Cargo.toml中使用此板条箱的依赖项为:
tastyworks=“0.13”
您尝试使用的函数是一个
async
,因此您需要为它生成一个异步任务或在异步上下文中运行它。您需要(或另一个异步后端):

使用tastyworks::market\u指标;
使用东京;
#[tokio::main]
异步fn main(){
让符号=&[String::from(“AAPL”)];
设m=市场度量(符号)。等待;
匹配m{
Ok(v)=>v,
错误(e)=>恐慌!(e),
}
}

检查一些有趣的

感谢您的快速响应,我将介绍更多关于异步的内容,同时我尝试运行您的代码,但我发现此问题
未能解决:在tokio中找不到main在tokio rustc(E0433)main.rs(4,10)中找不到main:在tokio中找不到
main`,并且主函数不允许异步`
main函数不允许异步rustc(E0752)main.rs(5,1):主函数不允许异步
@orie,您可能错过了tokio={version=“1”,功能=[“full”]}在您的tokio cargo条目中。这有帮助,但现在它产生了一个与tokio相关的问题,
线程'main'在'not current running on a tokio 0.2.x runtime'上惊慌失措,/Users/or/.cargo/registry/src/github.com-1ec6299db9ec823/tokio-0.2.25/src/runtime/handle.rs:118:28
这意味着您必须使用
tokio={version=“0.2”}
太多了,因为Tokio的多个主要版本不能一起使用。此外:使用
features=[“full”]
拉入
Tokio
可能会为您提供一系列您和依赖项都不需要的功能。您可能不需要
features=[“macros”,“rt core”]
features=[“macros”,“rt-threaded”]
,具体取决于要使用单线程运行时还是多线程运行时。
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),
    }
}