bsp_server/request/
id.rs

1use serde::{Deserialize, Serialize};
2use std::fmt;
3
4#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
5#[serde(transparent)]
6pub struct RequestId(IdRepr);
7
8#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9#[serde(untagged)]
10enum IdRepr {
11    I32(i32),
12    String(String),
13}
14
15impl From<i32> for RequestId {
16    fn from(id: i32) -> RequestId {
17        RequestId(IdRepr::I32(id))
18    }
19}
20
21impl From<String> for RequestId {
22    fn from(id: String) -> RequestId {
23        RequestId(IdRepr::String(id))
24    }
25}
26
27impl fmt::Display for RequestId {
28    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
29        match &self.0 {
30            IdRepr::I32(it) => fmt::Display::fmt(it, f),
31            IdRepr::String(it) => fmt::Debug::fmt(it, f),
32        }
33    }
34}