aboutsummaryrefslogtreecommitdiff
path: root/src/lib/util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util.rs')
-rw-r--r--src/lib/util.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/util.rs b/src/lib/util.rs
index 72844d5f..f6e1327b 100644
--- a/src/lib/util.rs
+++ b/src/lib/util.rs
@@ -1,3 +1,21 @@
+tag option[T] {
+ none;
+ some(T);
+}
+
+type operator[T, U] = fn(&T) -> U;
+
+fn option_map[T, U](&operator[T, U] f, &option[T] opt) -> option[U] {
+ alt (opt) {
+ case (some[T](?x)) {
+ ret some[U](f(x));
+ }
+ case (none[T]) {
+ ret none[U];
+ }
+ }
+}
+
fn id[T](&T x) -> T {
ret x;
}