diff --git a/src/library/layout.rs b/src/library/layout.rs index e958f3a3..87cedd99 100644 --- a/src/library/layout.rs +++ b/src/library/layout.rs @@ -188,8 +188,22 @@ pub fn pad(_: &mut EvalContext, args: &mut Args) -> TypResult { /// `stack`: Stack children along an axis. pub fn stack(_: &mut EvalContext, args: &mut Args) -> TypResult { + enum Child { + Spacing(Linear), + Any(Template), + } + + castable! { + Child: "linear or template", + Value::Length(v) => Self::Spacing(v.into()), + Value::Relative(v) => Self::Spacing(v.into()), + Value::Linear(v) => Self::Spacing(v), + Value::Template(v) => Self::Any(v), + } + let dir = args.named("dir")?; - let children: Vec