在定义了一个长度模板化的矩阵后,我可以更容易地控制大小:
pub struct SquareMatrix<const length: usize> {
data: [[f32; length]; length],
}
我为矩阵定义了默认函数:
impl Default for SquareMatrix<2> {
fn default() -> Self {
return SquareMatrix {
data: [[0.0; 2];2],
}
}
}
impl Default for SquareMatrix<3> {
fn default() -> Self {
return SquareMatrix {
data: [[0.0; 3];3],
}
}
}
impl Default for SquareMatrix<4> {
fn default() -> Self {
return SquareMatrix {
data: [[0.0; 4];4],
}
}
}
它看起来并不优雅,因为它们的唯一区别是模板的长度。但是当我取出length
并只定义一个模板函数时:
impl Default for SquareMatrix<length> {
fn default() -> Self {
return SquareMatrix {
data: [[0.0; length]; length],
}
}
}
错误提示:length not found in this scope
有没有一种方法可以为模板结构定义一个模板函数?
1条答案
按热度按时间k2arahey1#
你很接近了,你只需要在
Default
实现中定义泛型:另外,minor nitpick:const泛型应该全部大写。