文档无益: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
目前的文档似乎表明没有这样的功能?
答案 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)
从未设法rustc
将abs
视为一项功能。我终于选择了:
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);
}
请记住,您必须明确指定数据类型。