aldrin_core/impls/
uuid.rs1#[cfg(feature = "introspection")]
2use crate::introspection::{ir, Introspectable, LexicalId, References};
3use crate::tags::{self, PrimaryTag, Receiver, Sender, Tag};
4use crate::{
5 ChannelCookie, Deserialize, DeserializeError, Deserializer, Serialize, SerializeError,
6 Serializer,
7};
8use uuid::Uuid;
9
10impl PrimaryTag for Uuid {
11 type Tag = tags::Uuid;
12}
13
14impl Serialize<tags::Uuid> for Uuid {
15 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
16 serializer.serialize_uuid(self)
17 }
18}
19
20impl Serialize<tags::Uuid> for &Uuid {
21 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
22 serializer.serialize::<tags::Uuid>(*self)
23 }
24}
25
26impl Deserialize<tags::Uuid> for Uuid {
27 fn deserialize(deserializer: Deserializer) -> Result<Self, DeserializeError> {
28 deserializer.deserialize_uuid()
29 }
30}
31
32impl<T: Tag> Serialize<Sender<T>> for Uuid {
33 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
34 serializer.serialize_sender(ChannelCookie(self))
35 }
36}
37
38impl<T: Tag> Serialize<Sender<T>> for &Uuid {
39 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
40 serializer.serialize::<Sender<T>>(*self)
41 }
42}
43
44impl<T: Tag> Deserialize<Sender<T>> for Uuid {
45 fn deserialize(deserializer: Deserializer) -> Result<Self, DeserializeError> {
46 deserializer.deserialize_sender().map(|cookie| cookie.0)
47 }
48}
49
50impl<T: Tag> Serialize<Receiver<T>> for Uuid {
51 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
52 serializer.serialize_receiver(ChannelCookie(self))
53 }
54}
55
56impl<T: Tag> Serialize<Receiver<T>> for &Uuid {
57 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
58 serializer.serialize::<Receiver<T>>(*self)
59 }
60}
61
62impl<T: Tag> Deserialize<Receiver<T>> for Uuid {
63 fn deserialize(deserializer: Deserializer) -> Result<Self, DeserializeError> {
64 deserializer.deserialize_receiver().map(|cookie| cookie.0)
65 }
66}
67
68#[cfg(feature = "introspection")]
69impl Introspectable for Uuid {
70 fn layout() -> ir::LayoutIr {
71 ir::BuiltInTypeIr::Uuid.into()
72 }
73
74 fn lexical_id() -> LexicalId {
75 LexicalId::UUID
76 }
77
78 fn add_references(_references: &mut References) {}
79}