1个不稳定版本

新功能 0.1.0 2024年8月25日

#950 in 数学

MIT许可协议

11KB
226

向量数学库

此库在Rust中提供了一个NumVector结构,使得基本的向量算术运算成为可能。该库旨在与实现所需算术特征的泛型类型一起工作。

功能

  • 向量初始化:可以轻松地使用Vector::new(vec)创建向量,或使用Vector::empty()初始化空向量。
  • 逐元素算术:在向量元素上执行加法或减法。
  • 标量运算:将向量中的所有元素乘以或除以一个标量值。
  • 原地修改:支持使用操作符如+=-=*=/=直接修改向量。
  • 解引用:允许使用解引用直接访问底层向量。

使用方法

要在Rust项目中使用此库,请在您的Cargo.toml文件中添加以下行

[dependencies]
num_vector = "0.1.0"

然后,在您的Rust代码中导入库并开始使用向量数学运算

use num_vector::NumVector;

fn main() {
    let vec = NumVector::new(vec![1, 2, 3]);
    let mut vec1 = NumVector::new(vec![1, 2, 3]);
    let vec2 = NumVector::new(vec![4, 5, 6]);

    let sum: NumVector<i32> = &vec1 + &vec2;    // Element-wise addition
    let diff: NumVector<i32> = &vec1 - &vec2;   // Element-wise subtraction
    let scaled: NumVector<i32> = &vec * 2;      // Scalar multiplication
    let divided: NumVector<i32> = &vec / 2;     // Scalar division
    vec1 += &vec2;                              // In-place addition
    vec1 -= &vec2;                              // In-place subtraction
    vec1 *= 2;                                  // In-place scalar multiplication
    vec1 /= 2;                                  // In-place scalar division
    let data: &Vec<i32> = vec.get();            // Access the underlying Vec<T>
    let first_element: i32 = vec[0];            // Using deref coercion
}

未来改进

  • 为小尺寸的向量在栈上分配内存,而不是在堆上。
  • 为向量结构编写Display实现以启用打印向量。

贡献

欢迎贡献!如果您发现任何问题或对改进有建议,请在该GitHub仓库上打开问题或提交拉取请求。

许可协议

此库采用MIT许可协议

无运行时依赖