我可以做这样的事情吗?
我想在哈希图的每个元素上执行并发异步函数。
async fn b(){
let hm: HashMap<String,String> = ...;
hm.par_iter().for_each(async move |(k, v)| {
...operations on k,v
another_func(&v).await;
})
}
Run Code Online (Sandbox Code Playgroud)
异步移动时出错:
* async move {rustcE0658 类型不匹配
预期的单位类型()
找到的不透明类型impl std::future::FuturerustcE0308 mod.rs(61, 43):找到的不透明类型*
存在生命周期和 serde::deserialize 问题。尝试阅读错误消息并尝试实现反序列化,但随后出现错误,需要实现反序列化。
没有生命周期,它可以工作
use serde::{ Deserialize, Serialize, de::DeserializeOwned};
use std::error::Error;
use std::io::{BufReader};
use std::{ fmt::Debug};
use std::{fs::File};
#[derive(Clone, Debug, Serialize, Deserialize)]
struct User<'a> {
name: &'a str,
}
fn main(){
let b: User = read_object("user_1.json").unwrap();
}
fn read_object<T>(path: &str) -> Result<T, Box<dyn Error>>
where
T: DeserializeOwned + Debug,
{
let f = File::open(&path)?;
let reader = BufReader::new(f);
let t: T = serde_json::from_reader(reader)?;
Ok(t)
}
Run Code Online (Sandbox Code Playgroud)
错误:
error: implementation of `Deserialize` is not general enough
--> src/main.rs:13:19
|
13 | let …Run Code Online (Sandbox Code Playgroud) rust ×2