使用泛型类型时如何使用浮点数文字?

goe*_*tor 7 floating-point literals traits rust

常规浮点文字不起作用:

extern crate num_traits;

use num_traits::float::Float;

fn scale_float<T: Float>(x: T) -> T {
    x * 0.54
}

fn main() {
    let a: f64 = scale_float(1.23);
}
Run Code Online (Sandbox Code Playgroud)
extern crate num_traits;

use num_traits::float::Float;

fn scale_float<T: Float>(x: T) -> T {
    x * 0.54
}

fn main() {
    let a: f64 = scale_float(1.23);
}
Run Code Online (Sandbox Code Playgroud)

She*_*ter 11

使用FromPrimitive特性

use num_traits::{cast::FromPrimitive, float::Float};

fn scale_float<T: Float + FromPrimitive>(x: T) -> T {
    x * T::from_f64(0.54).unwrap()
}
Run Code Online (Sandbox Code Playgroud)

或者标准库From/Into特征

fn scale_float<T>(x: T) -> T
where
    T: Float,
    f64: Into<T>
{
    x * 0.54.into()
}
Run Code Online (Sandbox Code Playgroud)

也可以看看: