aldrin_core/impls/
string.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 String {
7 type Tag = tags::String;
8}
9
10impl Serialize<tags::String> for String {
11 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
12 serializer.serialize(&self)
13 }
14}
15
16impl Serialize<tags::String> for &String {
17 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
18 serializer.serialize_string(self)
19 }
20}
21
22impl Deserialize<tags::String> for String {
23 fn deserialize(deserializer: Deserializer) -> Result<Self, DeserializeError> {
24 deserializer.deserialize_string()
25 }
26}
27
28#[cfg(feature = "introspection")]
29impl Introspectable for String {
30 fn layout() -> ir::LayoutIr {
31 ir::BuiltInTypeIr::String.into()
32 }
33
34 fn lexical_id() -> LexicalId {
35 LexicalId::STRING
36 }
37
38 fn add_references(_references: &mut References) {}
39}
40
41impl PrimaryTag for str {
42 type Tag = tags::String;
43}
44
45impl Serialize<tags::String> for &str {
46 fn serialize(self, serializer: Serializer) -> Result<(), SerializeError> {
47 serializer.serialize_string(self)
48 }
49}
50
51#[cfg(feature = "introspection")]
52impl Introspectable for str {
53 fn layout() -> ir::LayoutIr {
54 ir::BuiltInTypeIr::String.into()
55 }
56
57 fn lexical_id() -> LexicalId {
58 LexicalId::STRING
59 }
60
61 fn add_references(_references: &mut References) {}
62}