Метод wrapping_add
Метод wrapping_add выполняет сложение двух чисел
типа i32 с циклическим переполнением.
Если результат сложения выходит за пределы диапазона
типа i32, значение «заворачивается» на противоположный
конец диапазона. Параметром метод принимает число,
которое нужно прибавить к текущему значению.
Синтаксис
i32.wrapping_add(rhs)
Пример
Давайте сложим два числа, сумма которых
не выходит за пределы диапазона i32:
fn main()
{
let a: i32 = 10;
let res = a.wrapping_add(20);
println!("{}", res);
}
Результат выполнения кода:
30
Пример
Давайте сложим максимальное значение i32
с единицей. При обычном сложении произошло бы переполнение,
но wrapping_add выполнит циклический перенос:
fn main()
{
let a: i32 = i32::MAX;
let res = a.wrapping_add(1);
println!("{}", res);
}
Результат выполнения кода:
-2147483648
Пример
Давайте сложим минимальное значение i32
с минус единицей. Здесь также произойдёт циклический перенос:
fn main()
{
let a: i32 = i32::MIN;
let res = a.wrapping_add(-1);
println!("{}", res);
}
Результат выполнения кода:
2147483647
Смотрите также
-
метод
wrapping_sub,
который выполняет вычитание с циклическим переполнением -
метод
wrapping_mul,
который выполняет умножение с циклическим переполнением -
метод
saturating_add,
который выполняет сложение с насыщением на границах диапазона -
метод
checked_add,
который возвращаетNoneпри переполнении