在 rust 中等待后不执行函数

问题描述

我运行了如下所示的代码。然而 我不认为执行 tokio.spawn 的部分正在执行。 尽管事实上我在调用函数时 .await。 我该如何解决这个问题?

pub async fn multi_features(
    chainlen: usize,floatlen: usize,atom_num: usize,c: &Array2<f32>,v: &Array2<f32>,) -> (Array2<f32>,Array3<f32>) {
    let ca_features = Arc::new(Mutex::new(Array2::<f32>::zeros((atom_num/4+1,(2*chainlen + floatlen)*8+3))));

    let ca_basics = Arc::new(Mutex::new(Array3::<f32>::zeros((atom_num/4+1,3,3))));


    for atom_id in 0..atom_num {
        let ca_features = ca_features.clone();
        let ca_basics = ca_basics.clone();

        tokio::spawn(async move {
            let mut ca_features = ca_features.lock().unwrap();
            let mut ca_basics = ca_basics.lock().unwrap();

            let basic = now_basic_vec(atom_id,atom_num,c);
            ca_basics.index_axis_mut(Axis(0),atom_id/4).assign(&basic);

            let now_feature = features(atom_id,chainlen,floatlen,&basic,c,v);
            ca_features.index_axis_mut(Axis(0),atom_id/4).assign(&now_feature);
        }).await.unwrap();
    }
    (Arc::try_unwrap(ca_features).unwrap().into_inner().unwrap(),Arc::try_unwrap(ca_basics).unwrap().into_inner().unwrap(),)
}

#[tokio::main]
fn main() {

    let res = multi_features(50,50,1253,&c,&v).await; // this function is never end
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...