Метод saturating_sub
Метод saturating_sub вычитает одну длительность
из другой. Если вычитаемая длительность больше
исходной, метод возвращает Duration::ZERO
вместо паники или отрицательного значения.
Параметром метод принимает длительность, которую
нужно вычесть.
Синтаксис
duration.saturating_sub(other)
Пример
Давайте вычтем из длительности в 5 секунд длительность в 2 секунды:
use std::time::Duration;
fn main()
{
let d1 = Duration::from_secs(5);
let d2 = Duration::from_secs(2);
let res = d1.saturating_sub(d2);
println!("{:?}", res);
}
Результат выполнения кода:
3s
Пример
Давайте вычтем из длительности в 2 секунды длительность в 5 секунд. Поскольку вычитаемая длительность больше, метод вернёт нулевую длительность:
use std::time::Duration;
fn main()
{
let d1 = Duration::from_secs(2);
let d2 = Duration::from_secs(5);
let res = d1.saturating_sub(d2);
println!("{:?}", res);
}
Результат выполнения кода:
0ns
Пример
Давайте вычтем из длительности в 500 миллисекунд длительность в 200 миллисекунд:
use std::time::Duration;
fn main()
{
let d1 = Duration::from_millis(500);
let d2 = Duration::from_millis(200);
let res = d1.saturating_sub(d2);
println!("{:?}", res);
}
Результат выполнения кода:
300ms
Пример
Давайте вычтем из нулевой длительности длительность в 1 секунду:
use std::time::Duration;
fn main()
{
let d1 = Duration::ZERO;
let d2 = Duration::from_secs(1);
let res = d1.saturating_sub(d2);
println!("{:?}", res);
}
Результат выполнения кода:
0ns
Смотрите также
-
метод
checked_sub,
который выполняет вычитание с проверкой на переполнение -
метод
saturating_add,
который выполняет сложение длительностей с насыщением -
метод
saturating_mul,
который выполняет умножение длительности с насыщением -
метод
is_zero,
который проверяет, равна ли длительность нулю