feat: partial func (WIP)

This commit is contained in:
2025-06-20 21:48:58 +08:00
parent d875951c09
commit 75e8705098
6 changed files with 88 additions and 48 deletions

View File

@@ -4,7 +4,7 @@ use std::rc::{Rc, Weak};
use ecow::EcoString;
use hashbrown::HashMap;
use crate::error::{Error, Result};
use crate::error::Result;
use crate::stack::Stack;
use crate::ty::internal::Value;
@@ -48,15 +48,14 @@ impl Env {
}
}
pub fn enter_cache_level<T>(&mut self, f: impl FnOnce(&mut Self) -> T) -> T {
pub fn enter_cache_level<T>(&mut self, f: impl FnOnce(&mut Self) -> T) -> (T, HashMap<usize, Value>) {
self.cache.push(HashMap::new());
let ret = f(self);
self.cache.pop();
ret
(ret, self.cache.pop().unwrap())
}
pub fn pop_cache_level(&mut self) {
self.cache.pop();
pub fn pop_cache_level(&mut self) -> HashMap<usize, Value> {
self.cache.pop().unwrap()
}
pub fn insert_cache(&mut self, idx: usize, val: Value) {