diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index f6e2d78e16f72..9622e3a11b4b3 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -1625,6 +1625,7 @@ impl &[const T]: CopyableVector { } trait ImmutableVector { + pure fn view(start: uint, end: uint) -> &[T]; pure fn foldr(z: U, p: fn(T, U) -> U) -> U; pure fn iter(f: fn(T)); pure fn iteri(f: fn(uint, T)); @@ -1647,6 +1648,10 @@ trait ImmutableEqVector { /// Extension methods for vectors impl &[T]: ImmutableVector { + /// Return a slice that points into another slice. + pure fn view(start: uint, end: uint) -> &[T] { + view(self, start, end) + } /// Reduce a vector from right to left #[inline] pure fn foldr(z: U, p: fn(T, U) -> U) -> U { foldr(self, z, p) } @@ -2909,17 +2914,14 @@ mod tests { assert capacity(v) == 10u; } -/* #[test] - #[ignore] // region inference doesn't work well enough for this yet. fn test_view() { let v = ~[1, 2, 3, 4, 5]; - let v = view(v, 1u, 3u); + let v = v.view(1u, 3u); assert(len(v) == 2u); assert(v[0] == 2); assert(v[1] == 3); } -*/ } // Local Variables: