diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-06-06 21:13:59 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-06-06 22:06:16 +0200 |
| commit | fd417da04f7ca4b995de7f6510abafd3e9c31307 (patch) | |
| tree | 3675529c75ca7363701ac8ea306de2cc1d3cbcb3 /library/src/layout/spacing.rs | |
| parent | 168bdf35bd773e67343c965cb473492cc5cae9e7 (diff) | |
Improve value casting infrastructure
Diffstat (limited to 'library/src/layout/spacing.rs')
| -rw-r--r-- | library/src/layout/spacing.rs | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/library/src/layout/spacing.rs b/library/src/layout/spacing.rs index 588f9f29..0cbf6641 100644 --- a/library/src/layout/spacing.rs +++ b/library/src/layout/spacing.rs @@ -157,7 +157,7 @@ impl Behave for VElem { } } -cast_from_value! { +cast! { VElem, v: Content => v.to::<Self>().cloned().ok_or("expected `v` element")?, } @@ -221,23 +221,20 @@ impl PartialOrd for Spacing { } } -cast_from_value! { +cast! { Spacing, - v: Rel<Length> => Self::Rel(v), - v: Fr => Self::Fr(v), -} - -cast_to_value! { - v: Spacing => match v { - Spacing::Rel(rel) => { + self => match self { + Self::Rel(rel) => { if rel.rel.is_zero() { - Value::Length(rel.abs) + rel.abs.into_value() } else if rel.abs.is_zero() { - Value::Ratio(rel.rel) + rel.rel.into_value() } else { - Value::Relative(rel) + rel.into_value() } } - Spacing::Fr(fr) => Value::Fraction(fr), - } + Self::Fr(fr) => fr.into_value(), + }, + v: Rel<Length> => Self::Rel(v), + v: Fr => Self::Fr(v), } |
