首页 > 解决方案 > 如何将 SystemTime::now() 转换为整数类型?

问题描述

我正在尝试创建一个为实体分配唯一标识符的系统。我希望身份的一部分基于实体的创建时间,而另一部分基于 RNG——我希望整个 ID 是一个数字。

fn main() {
    let id_p1 = SystemTime:now();
}

如何将 id_p1 转换为可用数字?

标签: rust

解决方案


简短的回答是,“你没有。” 该SystemTime类型没有实现任何转换为​​任何整数类型的方法。这可能有充分的理由。例如,时间甚至没有理由用整数类型表示。如果当前时间不是自使用任何参考以来的整数秒怎么办?

如果你真的需要一个整数类型,你可以计算自一些定义的引用以来经过的时间,比如 Unix 纪元。这将产生 a Duration,它确实实现了到数字类型的转换。

另一个选择可能是这次散列,可能与您的 RNG 中的盐一起。SystemTime确实如此,impl Hash因此您可以输入时间和随机数,并生成一个u64作为您的 ID。


推荐阅读