aboutsummaryrefslogtreecommitdiff
path: root/src/lib/option.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/option.rs')
-rw-r--r--src/lib/option.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lib/option.rs b/src/lib/option.rs
index 66a41bca..e214c774 100644
--- a/src/lib/option.rs
+++ b/src/lib/option.rs
@@ -39,12 +39,16 @@ fn is_none[T](&t[T] opt) -> bool {
}
fn from_maybe[T](&T def, &t[T] opt) -> T {
- alt(opt) {
- case (none[T]) { ret def; }
- case (some[T](?t)) { ret t; }
- }
+ auto f = bind util.id[T](_);
+ ret maybe[T, T](def, f, opt);
}
+fn maybe[T, U](&U def, fn(&T) -> U f, &t[T] opt) -> U {
+ alt (opt) {
+ case (none[T]) { ret def; }
+ case (some[T](?t)) { ret f(t); }
+ }
+}
// Local Variables:
// mode: rust;
// fill-column: 78;