Метод elapsed
Метод elapsed класса SystemTime возвращает
значение типа Result<Duration, SystemTimeError>,
которое представляет промежуток времени, прошедший
с момента, хранящегося в объекте SystemTime,
до текущего системного времени. Метод не принимает
никаких параметров. Если момент времени, хранящийся
в объекте, находится в будущем относительно текущего
системного времени, метод возвращает ошибку
SystemTimeError.
В случае успеха возвращается значение типа
Duration, из которого можно получить количество
секунд и наносекунд, прошедших с сохранённого момента.
Синтаксис
system_time.elapsed()
Пример
Давайте сохраним текущий момент времени, немного подождём и вычислим, сколько времени прошло с сохранённого момента:
use std::time::{SystemTime, Duration};
use std::thread::sleep;
fn main()
{
let start = SystemTime::now();
sleep(Duration::from_millis(100));
let res = start.elapsed();
println!("{:?}", res);
}
Результат выполнения кода:
Ok(100.123ms)
Пример
Давайте выведем количество секунд, прошедших с сохранённого момента времени:
use std::time::{SystemTime, Duration};
use std::thread::sleep;
fn main()
{
let start = SystemTime::now();
sleep(Duration::from_secs(1));
let res = start.elapsed().unwrap();
println!("{}", res.as_secs());
}
Результат выполнения кода:
1
Пример
Давайте получим момент времени в будущем и попробуем вычислить прошедшее с него время. Так как момент находится в будущем, метод вернёт ошибку:
use std::time::{SystemTime, Duration};
fn main()
{
let future = SystemTime::now() + Duration::from_secs(60);
let res = future.elapsed();
println!("{:?}", res);
}
Результат выполнения кода:
Err(SystemTimeError("second time provided was later than self"))
Смотрите также
-
класс
SystemTime,
который представляет системное время -
метод
now,
который возвращает текущий момент времени -
метод
duration_since,
который возвращает промежуток времени между двумя моментами -
метод
checked_add,
который прибавляет Duration к SystemTime с проверкой переполнения