Часы системы в Rust
Часы системы отражают момент по часам операционной системы. Они не монотонны: время может сдвинуться при настройке системы. Для замера куска кода внутри программы берут отметку монотонных часов. Год, месяц и день системные часы сами не отдают.
Текущий момент читают отдельной командой. Промежуток от фиксированной точки отсчета Unix возвращает исход, который может не удаться, если момент оказался раньше этой точки:
use std::time::{SystemTime, UNIX_EPOCH};
fn main() {
let now = SystemTime::now();
match now.duration_since(UNIX_EPOCH) {
Ok(secs) => println!("{:?}", secs),
Err(_) => println!("before epoch"),
}
}
При удачном исходе на экране интервал от
начала эпохи. Его тоже можно вывести в
секундах или миллисекундах через команды
у интервала. Разбор через match
обрабатывает обе ветки явно:
use std::time::{SystemTime, UNIX_EPOCH};
fn main() {
let stamp = SystemTime::now();
let since = stamp.duration_since(UNIX_EPOCH);
match since {
Ok(span) => println!("{}", span.as_secs()),
Err(_) => println!("no span"),
}
}
Запишите в src/main.rs текущий момент
системных часов, разберите исход сравнения
с началом эпохи через match и
выведите интервал в секундах в ветке
удачи.
Скажите, какой тип возвращает сравнение момента с началом эпохи: интервал сразу или исход с интервалом внутри.
Дан следующий код:
use std::time::{SystemTime, UNIX_EPOCH};
fn main() {
let now = SystemTime::now();
let since = now.duration_since(UNIX_EPOCH);
match since {
Ok(span) => println!("{}", span.as_secs()),
}
}
Добавьте ветку для неудачного исхода с короткой фразой на экран.