Метод checked_div
Метод checked_div выполняет деление одного числа типа i32 на другое, но в отличие от обычного оператора / он не вызывает панику при делении на ноль или при переполнении. Вместо этого метод возвращает значение типа Option<i32>. Параметром метод принимает делитель - число, на которое нужно разделить текущее значение.
Если деление прошло успешно, возвращается Some с результатом. Если делитель равен нулю или происходит переполнение (например, при делении i32::MIN на -1), возвращается None.
Синтаксис
i32.checked_div(rhs)
Пример
Давайте разделим число 10 на 2 с помощью метода checked_div:
fn main()
{
let res = 10i32.checked_div(2);
println!("{:?}", res);
}
Результат выполнения кода:
Some(5)
Пример
Давайте попробуем разделить число 10 на 0:
fn main()
{
let res = 10i32.checked_div(0);
println!("{:?}", res);
}
Результат выполнения кода:
None
Пример
Давайте проверим переполнение при делении минимального значения i32 на -1:
fn main()
{
let res = i32::MIN.checked_div(-1);
println!("{:?}", res);
}
Результат выполнения кода:
None
Пример
Давайте используем checked_div вместе с match для обработки обоих случаев:
fn main()
{
let a = 20i32;
let b = 4i32;
match a.checked_div(b)
{
Some(res) => println!("Result: {}", res),
None => println!("Division failed"),
}
}
Результат выполнения кода:
Result: 5
Смотрите также
-
метод
checked_add,
который выполняет сложение с проверкой переполнения -
метод
checked_sub,
который выполняет вычитание с проверкой переполнения -
метод
checked_mul,
который выполняет умножение с проверкой переполнения -
класс
i32,
который представляет 32-битное целое число со знаком