从 C++ 走向 rust(十):泛型算法——向量加法

博主分享了使用Rust语言编写科学计算库的经历,从向量加法运算开始,实现了RowVec结构体的Add trait。代码涉及变量引用、解引用,并通过测试确保功能正确。Rust的内存安全特性给博主留下了深刻印象。
摘要由CSDN通过智能技术生成

打算写一个科学计算库,从向量运算入手。费了一天功夫,终于完成了这十来行代码。这里面牵涉到变量引用、解引用,也不知道用法是否正确。感觉 rust 从各方面颠覆我的想象。

use std::ops::{Add, Sub, Mul, Div};

pub struct RowVec<T>(Vec<T>);
impl <T: Add<Output = T> + Copy + Clone> Add for RowVec<T> {
    type Output = Self;
    fn add(self, other: Self) -> Self {
         let x = self.0.iter();
         let y = other.0.iter();
         let z = x.zip(y).map(|(a,b)| *a + *b).collect::<Vec<T>>();
         Self(z)
    }
}
#[test]
fn test_add() {
    let x = RowVec(vec![1,2,3]);
    let y = RowVec(vec![4,5,6]);
    let z = x + y;
    for p in z.0.iter() {
        println!("{:?}", p);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值