nt_time/file_time/
rand.rs

1// SPDX-FileCopyrightText: 2024 Shun Sakai
2//
3// SPDX-License-Identifier: Apache-2.0 OR MIT
4
5//! Implementations of [`rand`] for [`FileTime`].
6
7use rand::{
8    Rng,
9    distr::{Distribution, StandardUniform},
10};
11
12use super::FileTime;
13
14impl Distribution<FileTime> for StandardUniform {
15    #[inline]
16    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> FileTime {
17        FileTime::new(rng.random())
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    use rand_pcg::{Pcg64Mcg, rand_core::SeedableRng};
24
25    use super::*;
26
27    #[test]
28    fn sample() {
29        let mut rng = Pcg64Mcg::from_seed(Default::default());
30        let buf: [FileTime; 8] = rng.random();
31        assert_eq!(
32            buf,
33            [
34                FileTime::new(0xe160_e532_6180_0aab),
35                FileTime::new(0x2a29_11d5_87fc_4ed5),
36                FileTime::new(0xdfe7_5554_bbd3_4d0d),
37                FileTime::new(0x2a4c_f66b_2879_6f51),
38                FileTime::new(0x500e_b6de_08bd_473b),
39                FileTime::new(0x8660_66c5_0dab_6374),
40                FileTime::new(0xe8e3_3086_f142_3eff),
41                FileTime::new(0x7d67_17b2_e579_844f)
42            ]
43        );
44    }
45}