summaryrefslogtreecommitdiff
path: root/src/eval
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval')
-rw-r--r--src/eval/styles.rs5
-rw-r--r--src/eval/value.rs11
2 files changed, 16 insertions, 0 deletions
diff --git a/src/eval/styles.rs b/src/eval/styles.rs
index e52aa9f3..7fcaf734 100644
--- a/src/eval/styles.rs
+++ b/src/eval/styles.rs
@@ -539,6 +539,11 @@ impl<T> StyleVec<T> {
self.items.is_empty()
}
+ /// Number of items in the sequence.
+ pub fn len(&self) -> usize {
+ self.items.len()
+ }
+
/// Iterate over the contained items.
pub fn items(&self) -> std::slice::Iter<'_, T> {
self.items.iter()
diff --git a/src/eval/value.rs b/src/eval/value.rs
index 8867b38a..0e0d08a8 100644
--- a/src/eval/value.rs
+++ b/src/eval/value.rs
@@ -491,6 +491,17 @@ impl<T> Smart<T> {
Self::Custom(x) => x,
}
}
+
+ /// Returns the contained custom value or computes a default value.
+ pub fn unwrap_or_else<F>(self, f: F) -> T
+ where
+ F: FnOnce() -> T,
+ {
+ match self {
+ Self::Auto => f(),
+ Self::Custom(x) => x,
+ }
+ }
}
impl<T> Default for Smart<T> {