bluejay_parser/lexical_token/
name.rs1use super::HasSpan;
2use crate::Span;
3use std::cmp::PartialEq;
4
5#[derive(PartialEq, Debug, Clone)]
6pub struct Name<'a> {
7    value: &'a str,
8    span: Span,
9}
10
11impl<'a> Name<'a> {
12    pub fn as_str(&self) -> &'a str {
13        self.value
14    }
15
16    pub(crate) fn new(value: &'a str, span: Span) -> Self {
17        Self { value, span }
18    }
19}
20
21impl HasSpan for Name<'_> {
22    fn span(&self) -> &Span {
23        &self.span
24    }
25}
26
27impl<'a> From<Name<'a>> for Span {
28    fn from(value: Name<'a>) -> Self {
29        value.span
30    }
31}
32
33impl AsRef<str> for Name<'_> {
34    fn as_ref(&self) -> &str {
35        self.value
36    }
37}
38
39impl PartialEq<str> for Name<'_> {
40    fn eq(&self, other: &str) -> bool {
41        self.as_ref() == other
42    }
43}