about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-10-28 13:23:50 -0700
committerBrian Anderson <banderson@mozilla.com>2011-10-28 13:24:39 -0700
commitd53a253dcae826eb50856bf28c90f2a0c84dec33 (patch)
treebee047aa051b3dffd77ee3f0f7b260004e627249
parent83219269d54a04ac072cce0e4eb6d7ca7d07014c (diff)
stdlib: make list::from_vec take [mutable? T]
-rw-r--r--src/lib/list.rs2
-rw-r--r--src/test/stdtest/list.rs8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/list.rs b/src/lib/list.rs
index d368b609275..10500e64c95 100644
--- a/src/lib/list.rs
+++ b/src/lib/list.rs
@@ -25,7 +25,7 @@ Function: from_vec
 
 Create a list from a vector
 */
-fn from_vec<T>(v: [T]) -> list<T> {
+fn from_vec<T>(v: [mutable? T]) -> list<T> {
     let l = nil::<T>;
     // FIXME: This would be faster and more space efficient if it looped over
     // a reverse vector iterator. Unfortunately generic iterators seem not to
diff --git a/src/test/stdtest/list.rs b/src/test/stdtest/list.rs
index a53132e879c..0bfbcbe68a4 100644
--- a/src/test/stdtest/list.rs
+++ b/src/test/stdtest/list.rs
@@ -15,6 +15,14 @@ fn test_from_vec() {
 }
 
 #[test]
+fn test_from_vec_mut() {
+    let l = from_vec([mutable 0, 1, 2]);
+    assert (car(l) == 0);
+    assert (car(cdr(l)) == 1);
+    assert (car(cdr(cdr(l))) == 2);
+}
+
+#[test]
 fn test_foldl() {
     let l = from_vec([0, 1, 2, 3, 4]);
     fn add(&&a: int, &&b: uint) -> uint { ret (a as uint) + b; }