Тип SystemTimeError
Тип SystemTimeError представляет собой структуру ошибки,
которая возвращается методами duration_since
и elapsed типа SystemTime в тех случаях,
когда вычитаемое время оказалось позже текущего времени.
Такая ситуация возможна, например, когда системные часы
были переведены назад. Значение ошибки хранит длительность
Duration, на которую одно время опередило другое.
Получить эту длительность можно с помощью метода duration.
Синтаксис
std::time::SystemTimeError
Методы
Тип SystemTimeError предоставляет метод duration,
который возвращает длительность Duration, описывающую,
насколько одно время опередило другое:
SystemTimeError::duration(&self) -> Duration
Пример
Давайте создадим ошибку с помощью метода duration_since,
передав в него время, которое позже текущего системного времени:
use std::time::{SystemTime, Duration};
fn main()
{
let now = SystemTime::now();
let future = now + Duration::from_secs(100);
let res = now.duration_since(future);
println!("{:?}", res);
}
Результат выполнения кода:
Err(SystemTimeError(100s))
Пример
Давайте получим длительность из ошибки с помощью метода duration:
use std::time::{SystemTime, Duration};
fn main()
{
let now = SystemTime::now();
let future = now + Duration::from_secs(100);
match now.duration_since(future)
{
Ok(d) => println!("{:?}", d),
Err(e) => {
let res = e.duration();
println!("{:?}", res);
}
}
}
Результат выполнения кода:
100s
Пример
Давайте проверим работу метода elapsed,
который также может вернуть ошибку SystemTimeError:
use std::time::{SystemTime, Duration};
fn main()
{
let future = SystemTime::now() + Duration::from_secs(50);
let res = future.elapsed();
println!("{:?}", res);
}
Результат выполнения кода:
Err(SystemTimeError(50s))
Смотрите также
-
тип
SystemTime,
который представляет системное время -
метод
duration_since,
который вычисляет разницу между двумя моментами времени -
метод
elapsed,
который возвращает время, прошедшее с момента создания -
метод
now,
который возвращает текущее системное время