我希望编写一个类似以下形式的函数,能够接受任何浮点数据:
fn multiply<F: Float>(floating_point_number: F) -> F {
floating_point_number * 2
}
但我在文档中找不到它的语法,或者只适用于浮点数的特征。
我希望编写一个类似以下形式的函数,能够接受任何浮点数据:
fn multiply<F: Float>(floating_point_number: F) -> F {
floating_point_number * 2
}
但我在文档中找不到它的语法,或者只适用于浮点数的特征。
目前在 Rust 中使用原始数值类型的通用故事都可以在官方 num
包中找到。该包包含了许多特征,这些特征被实现为各种原始数字类型,并且特别地有一个代表浮点数的Float
。
Float
特征提供了许多适用于浮点数的方法,但它还扩展了 Num
和 NumCast
特征,它们允许从任意原始数字执行数值操作并获得通用类型。使用 Float
,你的代码可能会像这样:
use num::{Float, NumCast};
fn multiply<F: Float>(n: F) -> F {
n * NumCast::from(2).unwrap()
}
NumCast::from()
返回 Option
,因为并不是所有的数字转换都有意义,但在这种特定情况下它是可以保证工作的,因此我使用了 unwrap()
。
num
库似乎不再是官方库了,对吗?另外,num
和num_traits
有什么关系,是否有理由更喜欢其中一个? - bluenote10