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