aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/_vec.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/_vec.rs b/src/lib/_vec.rs
index 1ddb07e3..36b529cc 100644
--- a/src/lib/_vec.rs
+++ b/src/lib/_vec.rs
@@ -1,3 +1,6 @@
+import option.none;
+import option.some;
+
import vbuf = rustrt.vbuf;
type operator2[T,U,V] = fn(&T, &U) -> V;
@@ -115,6 +118,15 @@ fn print_debug_info[T](vec[mutable? T] v) {
rustrt.vec_print_debug_info[T](v);
}
+// Returns the last element of v.
+fn last[T](vec[mutable? T] v) -> option.t[T] {
+ auto l = len[T](v);
+ if (l == 0u) {
+ ret none[T];
+ }
+ ret some[T](v.(l - 1u));
+}
+
// Returns elements from [start..end) from v.
fn slice[T](vec[mutable? T] v, uint start, uint end) -> vec[T] {
check (start <= end);