Добро пожаловать в переполнение стека!
Вы можете напрямую сравнивать экземпляры std::time::SystemTime
, которые вы получаете от std::fs::Metadata::created()
, но я предполагаю, что ваш вариант использования специально требует сравнений второй точности. В этом случае:
SystemTime
само по себе не предлагает методы преобразования единиц, но предлагает duration_since()
и константу UNIX_EPOCH
. Из документации :
pub const UNIX_EPOCH: SystemTime
Якорь во времени, который можно использовать для создания новых SystemTime
экземпляров или узнать, где во времени лежит SystemTime
.
Эта константа определена как «1970-01-01 00:00:00 UTC» во всех системах относительно системных часов.
После того, как вы зададите точку такого типасо ссылкой на duration_since()
и получить Duration
, вы можете использовать Duration
методы преобразования единиц для получения целых чисел, которые вам нужны. Пример:
let a = someFileMetadata.created().expect("Creation time unsupported");
let b = someOtherFileMetadata.created().expect("Creation time unsupported");
let a_secs = a.duration_since(SystemTime::UNIX_EPOCH)
.expect("File A thinks it was created before Epoch")
.as_secs();
let b_secs = b.duration_since(SystemTime::UNIX_EPOCH)
.expect("File B thinks it was created before Epoch")
.as_secs();
if a_secs > b_secs {
println!("File A was created later than file B!");
}