summaryrefslogtreecommitdiff
path: root/src/eval/mod.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-12-22 19:04:35 +0100
committerLaurenz <laurmaedje@gmail.com>2021-12-22 19:19:32 +0100
commit438255519e88bb790480306b9a9b452aaf054519 (patch)
treebadd3076f6146cec34c55764600df5124c408521 /src/eval/mod.rs
parent11565a40b315212474f52eb576a9fd92b11f1132 (diff)
Review One: A Set Rules Story
Diffstat (limited to 'src/eval/mod.rs')
-rw-r--r--src/eval/mod.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs
index d05f2ddf..17cc46ef 100644
--- a/src/eval/mod.rs
+++ b/src/eval/mod.rs
@@ -167,8 +167,10 @@ impl Eval for Markup {
fn eval(&self, ctx: &mut EvalContext) -> TypResult<Self::Output> {
let prev = mem::take(&mut ctx.styles);
- let mut seq = vec![];
- for piece in self.nodes() {
+ let nodes = self.nodes();
+ let upper = nodes.size_hint().1.unwrap_or_default();
+ let mut seq = Vec::with_capacity(upper);
+ for piece in nodes {
seq.push((piece.eval(ctx)?, ctx.styles.clone()));
}
ctx.styles = prev;
@@ -468,11 +470,9 @@ impl Eval for CallExpr {
}
Value::Class(class) => {
- let mut styles = Styles::new();
- class.set(&mut styles, &mut args)?;
let node = class.construct(ctx, &mut args)?;
args.finish()?;
- Ok(Value::Node(node.styled(styles)))
+ Ok(Value::Node(node))
}
v => bail!(
@@ -651,7 +651,7 @@ impl Eval for SetExpr {
let class = self.class();
let class = class.eval(ctx)?.cast::<Class>().at(class.span())?;
let mut args = self.args().eval(ctx)?;
- class.set(&mut ctx.styles, &mut args)?;
+ class.set(&mut args, &mut ctx.styles)?;
args.finish()?;
Ok(Value::None)
}