使用旧的 Rust 2015
0.3.3 |
|
---|---|
0.3.2 |
|
0.2.1 |
|
0.1.1 |
|
#379 in #栈
99KB
2.5K SLoC
rowcol
rowcol
包提供固定大小的 Vector
和 Matrix
。它们的长度或行/列数作为类型参数指定,使用 typenum
包提供的类型级别数字。
lib.rs
:
rowcol 包提供固定大小的 Vector
和 Matrix
。它们的长度或行/列数作为类型参数指定,使用 typenum 包提供的类型级别数字。这使得向量矩阵可以内部表示为固定长度的数组,因此它们在栈上分配,如果内容是可复制的,则成为 Copy
。此外,像计算非方阵的行列式这样的错误可以在编译时检测到,而不是在运行时引发恐慌。
#[macro_use] extern crate rowcol;
use rowcol::prelude::*;
fn fib(n: usize) -> u64 {
// inferred as `f: Vector<u64, U2>`
let f = vector![1, 0];
// inferred as `a: Matrix<u64, U2, U2>`
let a = matrix![[1, 1], [1, 0]];
(a.pow(n) * f)[1]
}
assert_eq!(fib(0), 0);
assert_eq!(fib(10), 55);
assert_eq!(fib(50), 12586269025);
依赖关系
~340–530KB