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}