1个不稳定版本
新功能 0.1.0 | 2024年8月25日 |
---|
#950 in 数学
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许可协议。