Метод wrapping_add
Метод wrapping_add выполняет сложение двух чисел
с переполнением. Если результат сложения выходит за пределы
диапазона типа, он «заворачивается» по модулю разрядности.
Параметром метод принимает число, которое нужно прибавить
к текущему значению.
В отличие от обычного оператора +, который в режиме
отладки вызывает панику при переполнении, метод wrapping_add
гарантированно возвращает результат без паники.
Синтаксис
value.wrapping_add(other)
Пример
Давайте сложим два числа, которые не вызывают переполнение:
fn main()
{
let res = 100u8.wrapping_add(50);
println!("{}", res);
}
Результат выполнения кода:
150
Пример
Давайте сложим два числа типа u8, которые
вызывают переполнение. Максимальное значение u8
равно 255:
fn main()
{
let res = 250u8.wrapping_add(10);
println!("{}", res);
}
Результат выполнения кода:
4
Переполнение «завернуло» результат: 250 + 10 = 260, а 260 - 256 = 4.
Пример
Давайте сложим отрицательное и положительное числа
типа i8:
fn main()
{
let res = (-100i8).wrapping_add(50);
println!("{}", res);
}
Результат выполнения кода:
-50
Смотрите также
-
метод
wrapping_add,
который выполняет сложение с переполнением -
метод
add,
который выполняет сложение указателей -
метод
sub,
который выполняет вычитание указателей -
метод
offset,
который смещает указатель на заданное число элементов