From da65ee39162d0323321340b2a9cef9a013ad36ef Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sun, 29 Mar 2026 23:09:46 +0200 Subject: Beginning sema work --- oryxc/src/intern.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'oryxc/src/intern.rs') diff --git a/oryxc/src/intern.rs b/oryxc/src/intern.rs index 5fb5cd0..86088a8 100644 --- a/oryxc/src/intern.rs +++ b/oryxc/src/intern.rs @@ -5,7 +5,7 @@ use dashmap::DashMap; pub struct Interner where - V: Copy + Eq + Hash, + V: Clone + Eq + Hash, I: Copy + From + Into, { map: DashMap, @@ -14,7 +14,7 @@ where impl Interner where - V: Copy + Eq + Hash, + V: Clone + Eq + Hash, I: Copy + From + Into, { pub fn new() -> Self { @@ -24,15 +24,15 @@ where }; } - pub fn get(&self, key: I) -> V { - return self.store[key.into()]; + pub fn get(&self, key: I) -> &V { + return &self.store[key.into()]; } pub fn intern(&self, value: V) -> I { if let Some(key) = self.map.get(&value) { return *key; } - let key = self.store.push(value).into(); + let key = self.store.push(value.clone()).into(); self.map.insert(value, key); return key; } @@ -66,7 +66,7 @@ mod tests { let ys = xs.iter().map(|&x| interner.intern(x)).collect::>(); for i in 0..ys.len() { - assert_eq!(interner.get(ys[i]), xs[0]); + assert_eq!(*interner.get(ys[i]), xs[0]); } } } -- cgit v1.2.3