编写没有大量样板类型约束的通用浮点代码

Writing generic floating point code without a lot of boilerplate type constraints

有没有办法指定泛型类型T只能是f32f64?否则我最终会施加很多样板类型约束:CopyAdd<Output=T>Sub<Output=T>Mul...、Div...、ZeroOne 等,一段时间后会变得乏味。另外,我担心这个列表将来会增加到 SinCosTan 等。

你想要 num::traits::Float,在板条箱 num 中可用。

每个满足Float的类型都保证是Num + Copy + NumCast + PartialOrd + Neg<Output=Self>。反过来,Num 需要 PartialEq + Zero + One + Add + Sub + Mul + Div + Rem。这回答了您对基本算术的第一个要求。 sin()cos() 等其他操作可作为 Float.

中的成员函数使用

最后,f32f64 作为 Float 的实现者提供开箱即用。