text_search_core/
symbol.rs

1use 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}