是否需要强制转换才能访问Rust中的基本数学函数?

时间:2014-11-22 03:55:02

标签: rust

fn main() {
    let a = 1i32;
    let b = 2i32;

    let smallest = (a as f64).min((b as f64)) as i32;
    println!("{}", smallest);
}

是否真的需要所有来自浮子的铸件?

2 个答案:

答案 0 :(得分:3)

您正在寻找的功能是::std::cmp::min,适用于任何实现Ord的类型:

fn main() {
    let a = 1i32;
    let b = 2i32;

    let smallest = ::std::cmp::min(a, b);
    println!("{}", smallest);
}

你正在使用f64中的min方法(f32存在等效方法)。

答案 1 :(得分:2)

没有。作为quick search of the API reference reveals,您只需使用std::cmp::min

use std::cmp::min;

fn main() {
    let a = 1i32;
    let b = 2i32;

    let smallest = min(a, b);
    println!("{}", smallest);
}
minf32上专门声明的

f64是因为浮点类型未实现Ord。由于存在NaN,它们只有部分排序(PartialOrd)而std::cmp::min需要总排序(Ord)。