Метод checked_sub
Метод checked_sub выполняет вычитание одного значения
типа Duration из другого и возвращает результат в виде
Option<Duration>. Если вычитание прошло успешно,
возвращается Some с полученной длительностью.
Если же результат вычитания оказался бы отрицательным
(то есть вычитаемое больше уменьшаемого), метод возвращает
None вместо паники или переполнения. Параметром метод
принимает значение типа Duration, которое нужно вычесть
из текущего.
Синтаксис
duration.checked_sub(rhs)
Пример
Давайте вычтем из длительности 5 секунд длительность
3 секунды:
use std::time::Duration;
fn main()
{
let a = Duration::from_secs(5);
let b = Duration::from_secs(3);
let res = a.checked_sub(b);
println!("{:?}", res);
}
Результат выполнения кода:
Some(2s)
Пример
Давайте попробуем вычесть из длительности 3 секунды
длительность 5 секунд. Так как результат был бы
отрицательным, метод вернёт None:
use std::time::Duration;
fn main()
{
let a = Duration::from_secs(3);
let b = Duration::from_secs(5);
let res = a.checked_sub(b);
println!("{:?}", res);
}
Результат выполнения кода:
None
Пример
Давайте вычтем из длительности 1 секунда длительность
500 миллисекунд и получим результат в миллисекундах:
use std::time::Duration;
fn main()
{
let a = Duration::from_secs(1);
let b = Duration::from_millis(500);
let res = a.checked_sub(b);
println!("{:?}", res);
}
Результат выполнения кода:
Some(500ms)
Смотрите также
-
класс
Duration,
который представляет собой отрезок времени -
метод
checked_add,
который выполняет безопасное сложение длительностей -
метод
saturating_sub,
который вычитает длительности с насыщением до нуля -
метод
is_zero,
который проверяет, равна ли длительность нулю