aldrin_core/impls/
unit.rs1#[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}