编写通用浮点代码而没有很多样板类型约束

时间:2015-07-14 21:07:57

标签: generics floating-point rust

有没有办法指定通用类型 [HttpPost] [OutputCache(Duration = 0)] public void SaveNewApplication(string appName, string appDesc, int expire, string displayNote, string adminRole, string defualtRole, bool active) { } 只能是Tf32?否则我最终强加了很多样板类型限制:f64CopyAdd<Output=T>Sub<Output=T> ...,Mul ...,{{ 1}},Div等,一段时间后会变得单调乏味。此外,我担心此列表将来会包括ZeroOneSin等。

1 个答案:

答案 0 :(得分:5)

您想要num::traits::Float,可在包num中找到。

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

最后,f32f64作为Float的实施者开箱即用。