gpt4 book ai didi

rust - 在异步移动 block 中返回任何内容

转载 作者:行者123 更新时间:2023-12-03 11:45:07 27 4
gpt4 key购买 nike

因此,我添加了this代码示例并对其进行了一些更改。现在看起来像这样:

pub async fn loadAllSNPData(&mut self, client: &Client) {


let bodies = stream::iter(&self.snps)
.map(|snp| {

let url = format!("https://ncbi.gov/?db=snp&id={}",snp.identifier);

let client = &client;

async move {

let resp = client.get(&url).send().await?;
let rawJson = resp.text().await;



// parse json
let json: Value = serde_json::from_str(&rawJson).expect("JSON was not well-formatted");

Ok((json,snp))
}

})
.buffer_unordered(PARALLEL_REQUESTS);

bodies
.for_each(|b| {
async {

match b {
Ok(b) => println!("Got {} bytes", b),
Err(e) => eprintln!("Got an error: {}", e),
}
}
})
.await;

}
一切正常,直到我想返回不同于包含文本的 rawJson -Variable的东西。我想将已解析的json和相应的snp元素返回到另一个函数,该函数然后从JSON对象过滤一些信息并将其存储在相应的snp对象内。但是,每当我更改要返回的对象时,都会出现以下错误:

error[E0277]: the ? operator can only be used in an async block thatreturns Result or Option...


然后,它将继续将整个 async move -Block标记为错误的来源。我将如何处理以返回不同的东西?
编辑:我现在返回Ok((json,snp))并获取

error[E0698]: type inside async fn body must be known in thiscontext

Ok((json,snp))
^^ cannot infer type for type parameter `E` declared on
the enum `Result`

最佳答案

由于错误状态,仅当?块的返回值为asyncResult时,才可以使用OptionrawJson的类型是Result<String>,因此当您返回它时,它可以正常工作。但是,您现在尝试返回一个元组,因此它提示您不能再使用?。解决方案是返回Ok((json, snp))

关于rust - 在异步移动 block 中返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63097554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com