bullet_ws_interface/
request.rs1use std::fmt;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
7#[serde(transparent)]
8pub struct RequestId(u64);
9
10impl RequestId {
11 pub fn new(id: u64) -> Self {
12 Self(id)
13 }
14
15 pub fn as_u64(&self) -> u64 {
16 self.0
17 }
18}
19
20impl fmt::Display for RequestId {
21 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22 write!(f, "{}", self.0)
23 }
24}
25
26impl From<u64> for RequestId {
27 fn from(n: u64) -> Self {
28 RequestId(n)
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn test_request_id_serde() {
38 let id: RequestId = serde_json::from_str("123").unwrap();
39 assert_eq!(id, RequestId(123));
40
41 let id = RequestId(456);
42 assert_eq!(serde_json::to_string(&id).unwrap(), "456");
43
44 assert_eq!(RequestId(42).to_string(), "42");
45 }
46}