我刚接触Ruust,我编写了一些异步代码来同时发送两个请求:
use std::time::Duration;
use futures::future::join_all;
use tokio::time::sleep;
// #[derive(Clone, Debug)]
pub struct Request {}
impl Request {
pub async fn do_req(&self , num : i32) -> i32 {
sleep(Duration::from_secs(1)).await;
num * 2
}
}
#[tokio::test]
async fn test() {
let v = vec![Request{} , Request{}];
let futs : Vec<_> = v.into_iter().map(|req|{
req.do_req(1)
}).collect();
let res = join_all(futs).await;
println!("{:?}", res);
}
但我在"req.do_req(1)"行中的迭代器"Cannot Return Value Reference函数参数req
返回一个引用当前函数所拥有的数据的值"中得到一个错误.
我认为req.do_req(1)返回一个新值,所以我不能理解为什么会出现错误,如果有人能告诉我它是如何发生的以及如何修复它,那就太好了,谢谢.