feat: partial func (WIP)
This commit is contained in:
11
src/env.rs
11
src/env.rs
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user