about summary refs log tree commit diff
path: root/src/libcore/vec.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-09-02 15:37:15 -0700
committerBrian Anderson <banderson@mozilla.com>2012-09-02 15:38:18 -0700
commit087c5032a86ad2f2433c6e5f9dcc597ec01de004 (patch)
treec397c9d080854d4be94730f2e9a7ce31ff067dc0 /src/libcore/vec.rs
parent7fb1a4e2d1606f444d1ac40654b3ad11b081a07c (diff)
core: deny(vecs_implicity_copyable)
Diffstat (limited to 'src/libcore/vec.rs')
-rw-r--r--src/libcore/vec.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs
index 3f5051ac55b..0f99ec2a227 100644
--- a/src/libcore/vec.rs
+++ b/src/libcore/vec.rs
@@ -419,7 +419,7 @@ fn rsplit<T: copy>(v: &[T], f: fn(T) -> bool) -> ~[~[T]] {
     if (ln == 0u) { return ~[] }
 
     let mut end = ln;
-    let mut result = ~[];
+    let mut result = ~[mut ];
     while end > 0u {
         match rposition_between(v, 0u, end, f) {
           None => break,
@@ -430,7 +430,8 @@ fn rsplit<T: copy>(v: &[T], f: fn(T) -> bool) -> ~[~[T]] {
         }
     }
     push(result, slice(v, 0u, end));
-    reversed(result)
+    reverse(result);
+    return from_mut(move result);
 }
 
 /**
@@ -443,7 +444,7 @@ fn rsplitn<T: copy>(v: &[T], n: uint, f: fn(T) -> bool) -> ~[~[T]] {
 
     let mut end = ln;
     let mut count = n;
-    let mut result = ~[];
+    let mut result = ~[mut ];
     while end > 0u && count > 0u {
         match rposition_between(v, 0u, end, f) {
           None => break,
@@ -456,7 +457,8 @@ fn rsplitn<T: copy>(v: &[T], n: uint, f: fn(T) -> bool) -> ~[~[T]] {
         }
     }
     push(result, slice(v, 0u, end));
-    reversed(result)
+    reverse(result);
+    return from_mut(result);
 }
 
 // Mutators
@@ -1481,7 +1483,7 @@ impl<T: Ord> @[T]: Ord {
 impl<T: copy> ~[T]: add<&[const T],~[T]> {
     #[inline(always)]
     pure fn add(rhs: &[const T]) -> ~[T] {
-        append(self, rhs)
+        append(copy self, rhs)
     }
 }