nix_compat_derive/internal/
symbol.rs

1use std::fmt;
2
3use syn::Path;
4
5#[derive(Copy, Clone)]
6pub struct Symbol(&'static str);
7
8pub const NIX: Symbol = Symbol("nix");
9pub const VERSION: Symbol = Symbol("version");
10pub const DEFAULT: Symbol = Symbol("default");
11pub const FROM: Symbol = Symbol("from");
12pub const TRY_FROM: Symbol = Symbol("try_from");
13pub const FROM_STR: Symbol = Symbol("from_str");
14pub const INTO: Symbol = Symbol("into");
15pub const TRY_INTO: Symbol = Symbol("try_into");
16pub const DISPLAY: Symbol = Symbol("display");
17pub const CRATE: Symbol = Symbol("crate");
18
19impl PartialEq<Symbol> for Path {
20    fn eq(&self, word: &Symbol) -> bool {
21        self.is_ident(word.0)
22    }
23}
24
25impl PartialEq<Symbol> for &Path {
26    fn eq(&self, word: &Symbol) -> bool {
27        self.is_ident(word.0)
28    }
29}
30
31impl fmt::Display for Symbol {
32    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
33        formatter.write_str(self.0)
34    }
35}