summaryrefslogtreecommitdiff
path: root/library/src/layout/spacing.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-06-06 21:13:59 +0200
committerLaurenz <laurmaedje@gmail.com>2023-06-06 22:06:16 +0200
commitfd417da04f7ca4b995de7f6510abafd3e9c31307 (patch)
tree3675529c75ca7363701ac8ea306de2cc1d3cbcb3 /library/src/layout/spacing.rs
parent168bdf35bd773e67343c965cb473492cc5cae9e7 (diff)
Improve value casting infrastructure
Diffstat (limited to 'library/src/layout/spacing.rs')
-rw-r--r--library/src/layout/spacing.rs25
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),
}