如何在Rust中获得绝对值?

时间:2014-11-28 06:05:22

标签: rust

文档无益:http://web.mit.edu/rust-lang_v0.9/doc/std/num/fn.abs.html

显然,我可以在那里看到这个功能,但是我还没有想到如何调用它。

编辑:

问题是它不能工作。:)

use std::num;
let x = num::abs(value);

“未解析的名称:num :: abs”

编辑2:从昨天开始每晚运行(2014年11月26日);不知道什么版本。我没有意识到这些文档已经过时了。 OO

目前的文档似乎表明没有这样的功能?

5 个答案:

答案 0 :(得分:52)

如今,abs is a method on most number types

let value = -42i32;
let x = value.abs();

答案 1 :(得分:0)

那是因为你可能没有提供足够的类型信息。

fn main() {
    println!("Abs is \"{}\"",
              std::num::abs(-42i));
}

注意i后缀告诉Rust -42是一个整数。

拇指的规则是:你必须在某处指定你的类型,不知何故和后缀都很方便,例如另一种方法是

fn main() {
    let x = -42i;
    println!("Abs is \"{}\"",
              std::num::abs(x));
}

这也有效

fn main() { 
    let x: int = -42;
    println!("Abs is \"{}\"",
              std::num::abs(x));
}

如果你想要一个可变的,你只需要在mut之后添加let

fn main() { 
    let mut x: int = -42; 
    x += x;
    println!("Abs is \"{}\"",
              std::num::abs(x));
}

您得到x,您可以更改x的值。

答案 2 :(得分:0)

从未设法rustcabs视为一项功能。我终于选择了:

let abs = if val < 0 {
    abs * -1 
} else {
    abs
};

我想,可能已经开始了这种方式,但我还在尝试学习这些库。 :|

答案 3 :(得分:0)

提及std::num::abs的答案不再起作用。

相反,使用:

i32::abs(n)

答案 4 :(得分:0)

    fn main() {
    let mut number: i32 = -8;
    number = number.abs();
    println!("{}", number);
    }

请记住,您必须明确指定数据类型。