Use Ref for storing ast nodes in collections. (#37)

cmp, eq is done as pointer comparison which makes retrieval super fast.

Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
Anand Krishnamoorthi
2023-11-05 22:32:00 -08:00
committed by GitHub
parent d3fd0a3a78
commit a751cd69e1
7 changed files with 137 additions and 116 deletions
+3 -3
View File
@@ -8,7 +8,7 @@ use core::str::CharIndices;
use crate::value::Value;
use anyhow::{anyhow, bail, Result};
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone)]
#[derive(Clone)]
pub struct Source<'source> {
pub file: &'source str,
pub contents: &'source str,
@@ -48,7 +48,7 @@ impl<'source> Source<'source> {
}
}
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone)]
#[derive(Clone)]
pub struct Span<'source> {
pub source: &'source Source<'source>,
pub line: u16,
@@ -98,7 +98,7 @@ pub enum TokenKind {
Eof,
}
#[derive(Debug, PartialEq, Eq, Clone)]
#[derive(Debug, Clone)]
pub struct Token<'source>(pub TokenKind, pub Span<'source>);
#[derive(Clone)]