Метод checked_sub
Метод checked_sub класса Instant выполняет
вычитание указанного промежутка времени
Duration из текущего момента времени.
Параметром метод принимает Duration, который нужно вычесть.
Метод возвращает Some(Instant), если вычитание
прошло успешно, и None в случае переполнения
(когда результат выходит за допустимые границы типа).
Синтаксис
instant.checked_sub(duration)
Пример
Давайте создадим момент времени и вычтем из него промежуток в 5 секунд:
use std::time::{Duration, Instant};
fn main()
{
let now = Instant::now();
let res = now.checked_sub(Duration::from_secs(5));
println!("{:?}", res.is_some());
}
Результат выполнения кода:
true
Пример
Давайте попробуем вычесть из момента времени слишком большой промежуток, чтобы вызвать переполнение:
use std::time::{Duration, Instant};
fn main()
{
let now = Instant::now();
let res = now.checked_sub(Duration::from_secs(u64::MAX));
println!("{:?}", res.is_none());
}
Результат выполнения кода:
true
Пример
Давайте вычтем промежуток и получим конкретный момент времени в прошлом:
use std::time::{Duration, Instant};
fn main()
{
let now = Instant::now();
let past = now.checked_sub(Duration::from_secs(10)).unwrap();
let diff = now.duration_since(past);
println!("{:?}", diff.as_secs());
}
Результат выполнения кода:
10
Смотрите также
-
класс
Instant,
который представляет момент времени -
метод
checked_add,
который выполняет сложение с проверкой переполнения -
метод
duration_since,
который возвращает разницу между моментами времени -
метод
checked_duration_since,
который возвращает разницу с проверкой переполнения