我有类似于以下的代码:fn f1<const B: bool>(x:u64) { } fn f2<const B: bool>(x:u64) { match B { true => f1::<false>(x), ...
我有类似于以下的代码:fn f1<const B: bool>(x:u64) { } fn f2<const B: bool>(x:u64) { match B { true => f1::<false>(x), ...
我有一个特性可以处理有多个维度的数据,所以我使用 const generics 创建它,允许我定义这些边界:trait Transmogrifier<const N: usize, const W: usize, const B: usize> { // ... } 然后,我有 ...
我想要做 这显然是安全的。 Rust 拒绝它为 有没有办法解决这个问题? ...
我不是 const 泛型方面的专家,但我尝试了几种不同的方法,但在尝试涉及对 const 泛型进行操作的新类型实例化时,都存在问题,例如:当尝试从K增加这个 const 泛型结构中的基数时到K+1 。 // Given a Base<K> return a Base<K+1> ...
我正在尝试利用当前不稳定的功能generic_const_exprs让我的库的用户知道他们生成的类型的结果维度。 我的用例要复杂得多,但我创建了一个带有可重现错误的最小示例。 主要思想是,给定一个Tensor<N>作为输入,我想输出一个Tensor<M> ,其中M是{N + ...
我正在 Rust 中编写一个固定大小的位序列类型,具有夜间功能generic_const_exprs和int_roundings ,并且我能够这样impl BitAndAssign (我没有包括正文,因为没有必要验证第一个示例构建而第二个没有):trait Bits { const BIT ...
我目前正在按照 Jamis Buck 的“The Ray Tracer Challenge”一书实施光线追踪器。 我已经到了必须在矩阵上实现一些方法的部分,并且由于这些矩阵的编译时大小已知,我选择使用const generics expressions (仍然只在夜间频道上可用)来实现它们。#![f ...
我正在尝试了解有关 const generics 以及它们如何应用于任何维度的某些网格算法的更多信息。 下面是一个片段 - 如何创建一个 const 泛型参数大小的数组? 以上导致编译器错误: 请注意,我不是在寻找使用Vec<N>的解决方案。 如何用一些值初始化这个通用数组? ...
我有一个看起来像这样的特征:pub trait Buf<const N: usize> { fn to_buf(&self) -> [u8; N]; fn from_buf(buf: [u8; N]) -> Self; } 但是我想做这样的事情:t ...
我相信以下代码是有道理的: trait FooConst<const N: usize> {} trait Foo {} impl<T: FooConst<N>, const N: usize> Foo for T {} 但是,当我尝试编译它时,我收到错误 ...
因此,对于我正在编写的库,我想计算 N 维(2、3、4 等...)中两点之间的距离,并且我有一个 Point 特征,以便库的用户可以在他们的自己的类型,只要它们是“点像”。 我有一个特征“Point”,它的维度 (N) 和浮点类型 (T) 保持为关联类型和常量: pub trait Point: ...
考虑一个 const-generic 数据结构的经典例子:一个方阵。struct Matrix<T, const N: usize> { inner: [[T; N]; N] } 我想返回一个结构,其 const 参数是动态定义的:fn read_matrix() -> ...
所以说我正在为数组编写一个包装器类型。 我有一些 function 会改变数组包装器的长度,比如 function 是串联: 当我尝试编译这段代码时,rust 编译器变得非常疯狂。 认为这可能与添加与实现多个特征相对应的类型有关,我尝试了乘法而不是加法,这也不起作用。 我知道 rust 可以在编译时 ...
我需要根据运行时参数调整同一结构的变体的内部长度。 结构是通用定义的,仅在长度上有所不同。 我能想到的唯一解决方案是使用 match 语句: 但是,我需要考虑很多长度......有没有更符合人体工程学的方法来做到这一点? ...