小编end*_*maz的帖子

使用 rayon::par_iter 和 for_each 对哈希图的每个元素执行并发异步函数

我可以做这样的事情吗?

我想在哈希图的每个元素上执行并发异步函数。

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):找到的不透明类型*

rust

5
推荐指数
1
解决办法
3685
查看次数

serde_json 具有反序列化和通用函数的生命周期

存在生命周期和 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

4
推荐指数
1
解决办法
2355
查看次数

标签 统计

rust ×2