Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpCrSy 149 of 288 menu
◀ ▶

Часы системы в 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()), } }

Добавьте ветку для неудачного исхода с короткой фразой на экран.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить