df_hyperliquid_core/utils/
nonce.rs1#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
6pub struct NonceClock {
7 last: u64,
8}
9
10impl NonceClock {
11 #[must_use]
12 pub const fn new() -> Self {
13 NonceClock { last: 0 }
14 }
15
16 #[must_use]
18 pub const fn after(last: u64) -> Self {
19 NonceClock { last }
20 }
21
22 pub fn next(&mut self, now_ms: u64) -> u64 {
24 let nonce = now_ms.max(self.last.saturating_add(1));
25 self.last = nonce;
26 nonce
27 }
28
29 #[must_use]
30 pub const fn last(&self) -> u64 {
31 self.last
32 }
33}
34
35#[cfg(test)]
36#[path = "tests/nonce.rs"]
37mod tests;