diff options
Diffstat (limited to 'src/lib/util.rs')
| -rw-r--r-- | src/lib/util.rs | 18 |
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; } |