小编rmc*_*r99的帖子

Rust 常量表达式取决于泛型参数

我试图概括 Rust 中的一些代数运算(例如组、环、字段等),并且在尝试实现两个“集合”(Vec)的叉积时遇到了这个问题。

(请注意,这是const_generics在夜间工具链中使用的。)

fn CrossProduct<T, const N: usize, const M: usize>(lhs: Vec<[T;N]>, rhs: Vec<[T;M]>) -> Vec<[T;N+M]> {
    let mut out: Vec<[T;N+M]> = Vec::with_capacity(lhs.len() * rhs.len());

    for i in 0..lhs.len() {
        for j in 0..rhs.len() {
            let mut inner: [T; N+M] = [lhs[i][0]; N+M];
            for idx in 1..N {
                inner[idx] = lhs[i][idx];
            }
            for idx in 0..M {
                inner[idx + N] = rhs[j][idx];
            }
            out.push(inner);
        }
    }
    out
}
Run Code Online (Sandbox Code Playgroud)

无论我在哪里有表达式[T;N+M],我都会收到一个错误,指出常量表达式取决于通用参数,这是没有意义的。

generics rust

4
推荐指数
1
解决办法
5591
查看次数

标签 统计

generics ×1

rust ×1