summaryrefslogtreecommitdiff
path: root/src/model/cast.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-12-21 16:19:46 +0100
committerLaurenz <laurmaedje@gmail.com>2022-12-21 16:19:46 +0100
commit31f904a2c406953cbce334e02b37a712b9b9d016 (patch)
treec23f6e063864d97afb9b3d58c10ce4c2877106c5 /src/model/cast.rs
parent4af7b9118c5ce612b3d9d7dd06118ce23b731d9c (diff)
Split up and document shapes
Diffstat (limited to 'src/model/cast.rs')
-rw-r--r--src/model/cast.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/model/cast.rs b/src/model/cast.rs
index 1a5cae45..17ed2d30 100644
--- a/src/model/cast.rs
+++ b/src/model/cast.rs
@@ -415,9 +415,9 @@ impl<T: Cast> Cast for Smart<T> {
}
}
-impl<T> Cast for Sides<T>
+impl<T> Cast for Sides<Option<T>>
where
- T: Cast + Default + Copy,
+ T: Cast + Copy,
{
fn is(value: &Value) -> bool {
matches!(value, Value::Dict(_)) || T::is(value)
@@ -439,9 +439,9 @@ where
dict.finish(&["left", "top", "right", "bottom", "x", "y", "rest"])?;
- Ok(sides.map(Option::unwrap_or_default))
+ Ok(sides)
} else if T::is(&value) {
- Ok(Self::splat(T::cast(value)?))
+ Ok(Self::splat(Some(T::cast(value)?)))
} else {
<Self as Cast>::error(value)
}
@@ -452,9 +452,9 @@ where
}
}
-impl<T> Cast for Corners<T>
+impl<T> Cast for Corners<Option<T>>
where
- T: Cast + Default + Copy,
+ T: Cast + Copy,
{
fn is(value: &Value) -> bool {
matches!(value, Value::Dict(_)) || T::is(value)
@@ -488,9 +488,9 @@ where
"rest",
])?;
- Ok(corners.map(Option::unwrap_or_default))
+ Ok(corners)
} else if T::is(&value) {
- Ok(Self::splat(T::cast(value)?))
+ Ok(Self::splat(Some(T::cast(value)?)))
} else {
<Self as Cast>::error(value)
}