Подтвердить что ты не робот

Как получить абсолютное значение в Rust?

Документы бесполезны: http://web.mit.edu/rust-lang_v0.9/doc/std/num/fn.abs.html

Очевидно, я вижу функцию прямо там, но у меня нет ни малейшего понятия, как ее называть.

Edit:

Проблема в том, что она не работает.:)

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

"Неразрешенное имя: num:: abs"

Отредактируйте 2: работайте по ночам со вчерашнего дня (11/26/2014); не знаю какую версию. Я не понимал, что эти документы настолько устарели. оо

Текущие документы, похоже, указывают на отсутствие такой функции?

4b9b3361

Ответ 2

Это потому, что вы, вероятно, не предоставляете достаточно информации о типе.

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));
}

если вы хотите изменить mutable, вам просто нужно добавить mut сразу после let

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

и вы получите x, и вы можете изменить значение x.

Ответ 3

Никогда не удалось сделать rustc распознать abs как функцию. Я наконец пошел с:

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

Возможно, начался этот путь, я думаю, но я все еще пытаюсь изучить библиотеки.: |

Ответ 4

Ответ с упоминанием std::num::abs больше не работает.

Вместо этого используйте:

i32::abs(n)