编写没有大量样板类型约束的通用浮点代码
Writing generic floating point code without a lot of boilerplate type constraints
有没有办法指定泛型类型T
只能是f32
或f64
?否则我最终会施加很多样板类型约束:Copy
、Add<Output=T>
、Sub<Output=T>
、Mul
...、Div
...、Zero
、One
等,一段时间后会变得乏味。另外,我担心这个列表将来会增加到 Sin
、Cos
、Tan
等。
你想要 num::traits::Float
,在板条箱 num
中可用。
每个满足Float
的类型都保证是Num + Copy + NumCast + PartialOrd + Neg<Output=Self>
。反过来,Num
需要 PartialEq + Zero + One + Add + Sub + Mul + Div + Rem
。这回答了您对基本算术的第一个要求。 sin()
、cos()
等其他操作可作为 Float
.
中的成员函数使用
最后,f32
和 f64
作为 Float
的实现者提供开箱即用。
有没有办法指定泛型类型T
只能是f32
或f64
?否则我最终会施加很多样板类型约束:Copy
、Add<Output=T>
、Sub<Output=T>
、Mul
...、Div
...、Zero
、One
等,一段时间后会变得乏味。另外,我担心这个列表将来会增加到 Sin
、Cos
、Tan
等。
你想要 num::traits::Float
,在板条箱 num
中可用。
每个满足Float
的类型都保证是Num + Copy + NumCast + PartialOrd + Neg<Output=Self>
。反过来,Num
需要 PartialEq + Zero + One + Add + Sub + Mul + Div + Rem
。这回答了您对基本算术的第一个要求。 sin()
、cos()
等其他操作可作为 Float
.
最后,f32
和 f64
作为 Float
的实现者提供开箱即用。