aldrin_core/impls/
unit.rs

1#[cfg(feature = "introspection")]
2use crate::introspection::{ir, Introspectable, LexicalId, References};
3use crate::tags::{self, PrimaryTag};
4use crate::{Deserialize, DeserializeError, Deserializer, Serialize, SerializeError, Serializer};
5
6impl PrimaryTag for () {
7    type Tag = tags::Unit;
8}
9
10impl Serialize<tags::Unit> for () {
11    fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
12        serializer.serialize_none()
13    }
14}
15
16impl Serialize<tags::Unit> for &() {
17    fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
18        serializer.serialize_none()
19    }
20}
21
22impl Deserialize<tags::Unit> for () {
23    fn deserialize(deserializer: Deserializer) -> Result<Self, DeserializeError> {
24        deserializer.deserialize_none()
25    }
26}
27
28#[cfg(feature = "introspection")]
29impl Introspectable for () {
30    fn layout() -> ir::LayoutIr {
31        ir::BuiltInTypeIr::Unit.into()
32    }
33
34    fn lexical_id() -> LexicalId {
35        LexicalId::UNIT
36    }
37
38    fn add_references(_references: &mut References) {}
39}