1use super::*;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd)]
6pub struct Name<'src> {
7 pub token: Token<'src>,
8}
9
10impl<'src> Name<'src> {
11 pub fn from_identifier(token: Token<'src>) -> Self {
12 assert_eq!(token.kind, TokenKind::Identifier);
13 Self { token }
14 }
15}
16
17impl<'src> Deref for Name<'src> {
18 type Target = Token<'src>;
19
20 fn deref(&self) -> &Self::Target {
21 &self.token
22 }
23}
24
25impl Display for Name<'_> {
26 fn fmt(&self, f: &mut Formatter) -> fmt::Result {
27 write!(f, "{}", self.lexeme())
28 }
29}
30
31impl<'src> Serialize for Name<'src> {
32 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
33 where
34 S: Serializer,
35 {
36 serializer.serialize_str(self.lexeme())
37 }
38}