diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-01-15 16:53:02 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-01-15 16:53:02 +0100 |
| commit | d763f0f5a6a700352ee8926c15c8e58624f705c9 (patch) | |
| tree | d287edfdab9793a796404516c7313689e4e69964 /src/lib.rs | |
| parent | 0f0416054f263b80ccec1a463ce4ab20913bdf71 (diff) | |
Split state and scopes, less ref-counting 🔀
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -42,18 +42,21 @@ pub mod pretty; pub mod shaping; pub mod syntax; -use std::rc::Rc; - use crate::diag::{Feedback, Pass}; -use crate::env::SharedEnv; -use crate::eval::State; +use crate::env::Env; +use crate::eval::{Scope, State}; use crate::layout::Frame; /// Process _Typst_ source code directly into a collection of frames. -pub fn typeset(src: &str, env: SharedEnv, state: State) -> Pass<Vec<Frame>> { +pub fn typeset( + src: &str, + env: &mut Env, + scope: &Scope, + state: State, +) -> Pass<Vec<Frame>> { let Pass { output: syntax_tree, feedback: f1 } = parse::parse(src); let Pass { output: layout_tree, feedback: f2 } = - eval::eval(&syntax_tree, Rc::clone(&env), state); + eval::eval(&syntax_tree, env, scope, state); let frames = layout::layout(&layout_tree, env); Pass::new(frames, Feedback::join(f1, f2)) } |
