使用适用于 Vec 和数组 [] 的特征编写 rust 函数

互联网 行业动态 更新时间:2024-06-13 00:19:32

Apl*_*123 5

首先,Vec<T>实现Deref. [T]这意味着&Vec<f64>可以隐式转换为&[f64]. 所以,只要接受一个&[f64]意志就可以了:

fn vector_norm(vec_a: &[f64]) -> f64 {
    let mut norm = 0 as f64;
    for i in 0..vec_a.len() {
        norm += vec_a[i] * vec_a[i];
    }
    norm.sqrt()
}

fn main() {
    let my_vec = vec![1.0, 2.0, 3.0];
    // &my_vec is implicitly converted to &[f64]
    println!("{:?}", vector_norm(&my_vec));
}

但是,如果您想将可接受的值进一步扩大到所有类似切片的类型,AsRef可能会有用:

fn vector_norm<T: AsRef<[f64]>>(vec_a: T) -> f64 {
    // use AsRef to get a &[f64]
    let vec_a: &[f64] = vec_a.as_ref();
    let mut norm = 0 as f64;
    for i in 0..vec_a.len() {
        norm += vec_a[i] * vec_a[i];
    }
    norm.sqrt()
}

fn main() {
    let my_vec = vec![1.0, 2.0, 3.0];
    println!("{:?}", vector_norm(&my_vec));
}

更多推荐

适用于,数组,函数,特征,Vec

本文发布于:2023-04-21 10:05:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/1839c7c2956c8f545e24311eb77e4ce1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:适用于   数组   函数   特征   Vec

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!