Метод saturating_mul
Метод saturating_mul выполняет умножение двух чисел типа i32
с насыщением. Это означает, что если результат умножения выходит
за пределы допустимого диапазона значений типа i32, метод
возвращает граничное значение: i32::MAX при переполнении
в положительную сторону или i32::MIN при переполнении
в отрицательную сторону. Параметром метод принимает второе
число, на которое нужно умножить текущее значение.
В отличие от обычного умножения, которое в режиме отладки
вызывает панику при переполнении, а в режиме релиза выполняет
циклический сдвиг, метод saturating_mul всегда возвращает
безопасный результат.
Синтаксис
i32.saturating_mul(rhs)
Пример
Давайте умножим число 1000 на число 2000,
результат которого 2000000 помещается в диапазон
типа i32:
fn main()
{
let a: i32 = 1000;
let b: i32 = 2000;
let res = a.saturating_mul(b);
println!("{}", res);
}
Результат выполнения кода:
2000000
Пример
Давайте умножим число i32::MAX на число 2.
Результат умножения превышает максимальное значение
типа i32, поэтому метод вернёт i32::MAX:
fn main()
{
let a: i32 = i32::MAX;
let b: i32 = 2;
let res = a.saturating_mul(b);
println!("{}", res);
}
Результат выполнения кода:
2147483647
Пример
Давайте умножим число i32::MIN на число 2.
Результат умножения выходит за минимальное значение
типа i32, поэтому метод вернёт i32::MIN:
fn main()
{
let a: i32 = i32::MIN;
let b: i32 = 2;
let res = a.saturating_mul(b);
println!("{}", res);
}
Результат выполнения кода:
-2147483648
Смотрите также
-
метод
saturating_add,
который выполняет сложение с насыщением -
метод
saturating_sub,
который выполняет вычитание с насыщением -
метод
wrapping_mul,
который выполняет умножение с циклическим переполнением -
метод
checked_mul,
который возвращаетNoneпри переполнении