В некоторых случаях вы можете добавить ограничение, согласно которому универсальный тип должен умножаться на тип литерала.Здесь мы разрешаем любой тип, который может быть умножен на f64
, если он производит тип вывода T
через ограниченную черту Mul<f64, Output = T>
:
use num_traits::float::Float; // 0.2.6
use std::ops::Mul;
fn scale_float<T>(x: T) -> T
where
T: Float + Mul<f64, Output = T>,
{
x * 0.54
}
fn main() {
let a: f64 = scale_float(1.23);
}
Это может не работать напрямую дляисходная проблема, но это может зависеть от того, с какими конкретными типами вам нужно работать.