gpt4 book ai didi

rust - Rust中不同整数类型的函数参数

转载 作者:行者123 更新时间:2023-12-03 11:30:10 24 4
gpt4 key购买 nike

如果Rust支持两个percent函数,我该怎么办?

fn percent(x: u8) -> f32 {
x as f32 / 100.0
}
fn percent(x: u16) -> f32 {
x as f32 / 100.0
}

如果我尝试如下通用数据类型:

fn percent<T>(x: T) -> f32 {
x as f32 / 100.0
}

我得到了错误

non-primitive cast: T as f32



我可以将 T约束为某种整数特征吗?

最佳答案

如果只想支持u8u16类型,则:

fn percent<T: Into<f32>>(x: T) -> f32 {
x.into() / 100.0
}

足够了,因为 u8u16都可以无损地转换为 f32。如果要进行一般性的转换(例如,将 u64转换为 f64,这可能会导致精度下降),则可以使用 ApproxInto中的 conv 特性。
fn percent<T: ApproxInto<f64>>(x: T) -> Result<f64, T::Err> {
x.approx_into().map(|v| v / 100.0)
}

关于rust - Rust中不同整数类型的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60663864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com