serde_derive/internals/
symbol.rs

1use std::fmt::{self, Display};
2use syn::{Ident, Path};
3
4#[derive(Copy, Clone)]
5pub struct Symbol(&'static str);
6
7pub const ALIAS: Symbol = Symbol("alias");
8pub const BORROW: Symbol = Symbol("borrow");
9pub const BOUND: Symbol = Symbol("bound");
10pub const CONTENT: Symbol = Symbol("content");
11pub const CRATE: Symbol = Symbol("crate");
12pub const DEFAULT: Symbol = Symbol("default");
13pub const DENY_UNKNOWN_FIELDS: Symbol = Symbol("deny_unknown_fields");
14pub const DESERIALIZE: Symbol = Symbol("deserialize");
15pub const DESERIALIZE_WITH: Symbol = Symbol("deserialize_with");
16pub const FIELD_IDENTIFIER: Symbol = Symbol("field_identifier");
17pub const FLATTEN: Symbol = Symbol("flatten");
18pub const FROM: Symbol = Symbol("from");
19pub const GETTER: Symbol = Symbol("getter");
20pub const INTO: Symbol = Symbol("into");
21pub const OTHER: Symbol = Symbol("other");
22pub const REMOTE: Symbol = Symbol("remote");
23pub const RENAME: Symbol = Symbol("rename");
24pub const RENAME_ALL: Symbol = Symbol("rename_all");
25pub const SERDE: Symbol = Symbol("serde");
26pub const SERIALIZE: Symbol = Symbol("serialize");
27pub const SERIALIZE_WITH: Symbol = Symbol("serialize_with");
28pub const SKIP: Symbol = Symbol("skip");
29pub const SKIP_DESERIALIZING: Symbol = Symbol("skip_deserializing");
30pub const SKIP_SERIALIZING: Symbol = Symbol("skip_serializing");
31pub const SKIP_SERIALIZING_IF: Symbol = Symbol("skip_serializing_if");
32pub const TAG: Symbol = Symbol("tag");
33pub const TRANSPARENT: Symbol = Symbol("transparent");
34pub const TRY_FROM: Symbol = Symbol("try_from");
35pub const UNTAGGED: Symbol = Symbol("untagged");
36pub const VARIANT_IDENTIFIER: Symbol = Symbol("variant_identifier");
37pub const WITH: Symbol = Symbol("with");
38
39impl PartialEq<Symbol> for Ident {
40    fn eq(&self, word: &Symbol) -> bool {
41        self == word.0
42    }
43}
44
45impl<'a> PartialEq<Symbol> for &'a Ident {
46    fn eq(&self, word: &Symbol) -> bool {
47        *self == word.0
48    }
49}
50
51impl PartialEq<Symbol> for Path {
52    fn eq(&self, word: &Symbol) -> bool {
53        self.is_ident(word.0)
54    }
55}
56
57impl<'a> PartialEq<Symbol> for &'a Path {
58    fn eq(&self, word: &Symbol) -> bool {
59        self.is_ident(word.0)
60    }
61}
62
63impl Display for Symbol {
64    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
65        formatter.write_str(self.0)
66    }
67}