about summary refs log tree commit diff
path: root/src/lib/vec.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-06-03 16:14:29 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-06-03 16:15:14 -0700
commitcb4c969ba6ec61007ac1bbdaeed7eb5f21859949 (patch)
tree5650e438fd25d75c682883156869f848403bbb81 /src/lib/vec.rs
parent088ab03fdbdd2fad29b678f5eeaadde4e15cb205 (diff)
downloadrust-cb4c969ba6ec61007ac1bbdaeed7eb5f21859949.tar.gz
rust-cb4c969ba6ec61007ac1bbdaeed7eb5f21859949.zip
rustc: Add a "smallintmap" implementation
Diffstat (limited to 'src/lib/vec.rs')
-rw-r--r--src/lib/vec.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/vec.rs b/src/lib/vec.rs
index 969fca9a17e..8259e494e25 100644
--- a/src/lib/vec.rs
+++ b/src/lib/vec.rs
@@ -163,6 +163,19 @@ fn slice[T](array[T] v, uint start, uint end) -> vec[T] {
     ret result;
 }
 
+// FIXME: Should go away eventually.
+fn slice_mut[T](array[T] v, uint start, uint end) -> vec[mutable T] {
+    assert (start <= end);
+    assert (end <= len[T](v));
+    auto result = alloc_mut[T](end - start);
+    let uint i = start;
+    while (i < end) {
+        result += [mutable v.(i)];
+        i += 1u;
+    }
+    ret result;
+}
+
 fn shift[T](&mutable array[T] v) -> T {
     auto ln = len[T](v);
     assert (ln > 0u);