РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
458 of 1245 menu

Метод checked_sub

Метод checked_sub класса SystemTime выполняет вычитание заданной длительности Duration из текущего момента времени. В отличие от обычного вычитания через оператор -, данный метод возвращает Option<SystemTime>: значение Some при успешном вычитании и None, если результат оказался бы меньше минимально допустимого момента времени. Параметром метод принимает длительность Duration, которую нужно вычесть.

Синтаксис

SystemTime::checked_sub(&self, duration: Duration) -> Option<SystemTime>

Пример

Давайте получим текущий момент времени и вычтем из него интервал в 10 секунд:

use std::time::{Duration, SystemTime}; fn main() { let now = SystemTime::now(); let res = now.checked_sub(Duration::from_secs(10)); match res { Some(t) => println!("{:?}", t), None => println!("underflow"), } }

Результат выполнения кода будет содержать момент времени на 10 секунд раньше текущего, например:

SystemTime { tv_sec: 1710000000, tv_nsec: 0 }

Пример

Давайте попробуем вычесть из начального момента времени UNIX_EPOCH интервал в 1 секунду. Так как результат оказался бы раньше начала отсчёта, метод вернёт None:

use std::time::{Duration, SystemTime, UNIX_EPOCH}; fn main() { let res = UNIX_EPOCH.checked_sub(Duration::from_secs(1)); match res { Some(t) => println!("{:?}", t), None => println!("none"), } }

Результат выполнения кода:

none

Пример

Давайте вычтем из момента времени, полученного через UNIX_EPOCH плюс 100 секунд, интервал в 50 секунд и проверим результат:

use std::time::{Duration, SystemTime, UNIX_EPOCH}; fn main() { let t = UNIX_EPOCH + Duration::from_secs(100); let res = t.checked_sub(Duration::from_secs(50)); match res { Some(t) => println!("{:?}", t), None => println!("none"), } }

Результат выполнения кода:

SystemTime { tv_sec: 50, tv_nsec: 0 }

Смотрите также

  • класс SystemTime,
    который представляет момент времени
  • метод checked_add,
    который прибавляет длительность с проверкой переполнения
  • метод duration_since,
    который возвращает разницу между моментами времени
  • метод elapsed,
    который возвращает время, прошедшее с момента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить