text_search_core/
symbol.rs1use std::fmt::{self, Display};
2use syn::{Ident, Path};
3
4#[derive(Copy, Clone)]
5pub struct Symbol(&'static str);
6
7pub const ID: Symbol = Symbol("id");
8pub const TEXT_SEARCH: Symbol = Symbol("text_search");
9pub const INDEXED: Symbol = Symbol("indexed");
10pub const INDEXED_TEXT: Symbol = Symbol("indexed_text");
11pub const INDEXED_STRING: Symbol = Symbol("indexed_string");
12pub const NOT_INDEXED: Symbol = Symbol("not_indexed");
13pub const STORED: Symbol = Symbol("stored");
14pub const NOT_STORED: Symbol = Symbol("not_stored");
15
16
17impl PartialEq<Symbol> for Ident {
18 fn eq(&self, word: &Symbol) -> bool {
19 self == word.0
20 }
21}
22
23impl PartialEq<Symbol> for &Ident {
24 fn eq(&self, word: &Symbol) -> bool {
25 *self == word.0
26 }
27}
28
29impl PartialEq<Symbol> for Path {
30 fn eq(&self, word: &Symbol) -> bool {
31 self.is_ident(word.0)
32 }
33}
34
35impl PartialEq<Symbol> for &Path {
36 fn eq(&self, word: &Symbol) -> bool {
37 self.is_ident(word.0)
38 }
39}
40
41impl Display for Symbol {
42 fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
43 formatter.write_str(self.0)
44 }
45}
46
47impl Into<String> for Symbol {
48 fn into(self) -> String {
49 self.0.into()
50 }
51}