use crate::lexer::Span;
#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)]
pub struct Token<K> {
kind: K,
span: Span,
}
impl<K> Token<K> {
pub const fn new(kind: K, span: Span) -> Self {
Self { kind, span }
}
}
impl<K: Copy> Token<K> {
pub const fn kind(self) -> K {
self.kind
}
pub const fn span(self) -> Span {
self.span
}
pub fn text(self, source: &str) -> &str {
self.span.text(source)
}
}