diff options
| author | Martin Haug <mhaug@live.de> | 2022-05-01 13:21:07 +0200 |
|---|---|---|
| committer | Martin Haug <mhaug@live.de> | 2022-05-01 14:56:07 +0200 |
| commit | 84a4961a5dd03072b0e94c715957475d4ae21e4f (patch) | |
| tree | f23f7b2917943079c12a218de3dd649ef6e590b7 /src/model | |
| parent | 5f1499d380e223e7e1b2a8a96eb99e3ec95a56ac (diff) | |
Outset; fix folding
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/styles.rs | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/model/styles.rs b/src/model/styles.rs index 2e752625..00d1df0f 100644 --- a/src/model/styles.rs +++ b/src/model/styles.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use super::{Content, Show, ShowNode}; use crate::diag::{At, TypResult}; use crate::eval::{Args, Func, Node, Smart, Value}; -use crate::geom::{Numeric, Relative, Sides, Spec}; +use crate::geom::{Length, Numeric, Relative, Sides, Spec}; use crate::library::layout::PageNode; use crate::library::structure::{EnumNode, ListNode}; use crate::library::text::{FontFamily, ParNode, TextNode}; @@ -459,17 +459,30 @@ where } } -impl<T> Fold for Sides<Option<T>> +impl<T> Fold for Sides<T> where - T: Default, + T: Fold, { - type Output = Sides<T>; + type Output = Sides<T::Output>; + + fn fold(self, outer: Self::Output) -> Self::Output { + Sides { + left: self.left.fold(outer.left), + top: self.top.fold(outer.top), + right: self.right.fold(outer.right), + bottom: self.bottom.fold(outer.bottom), + } + } +} + +impl Fold for Sides<Option<Relative<Length>>> { + type Output = Sides<Relative<Length>>; fn fold(self, outer: Self::Output) -> Self::Output { Sides { left: self.left.unwrap_or(outer.left), - right: self.right.unwrap_or(outer.right), top: self.top.unwrap_or(outer.top), + right: self.right.unwrap_or(outer.right), bottom: self.bottom.unwrap_or(outer.bottom), } } |
