微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 rust 中等待后不执行函数

如何解决在 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 举报,一经查实,本站将立刻删除。