diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index b58d5b3b3b1..3f34ee5aabb 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -255,18 +255,14 @@ pure fn slice(v: [const T]/&, start: uint, end: uint) -> [T] { assert (start <= end); assert (end <= len(v)); let mut result = []; - -// unchecked { -// push_all(result, view(v, start, end)); -// } - - let mut i = start; - while i < end { result += [v[i]]; i += 1u; } + unchecked { + push_all(result, view(v, start, end)); + } ret result; } #[doc = "Return a slice that points into another slice."] -pure fn view(v: [const T]/&a, start: uint, end: uint) -> [T]/&a { +pure fn view(v: [const T]/&, start: uint, end: uint) -> [T]/&a { assert (start <= end); assert (end <= len(v)); unpack_slice(v) {|p, _len|