Skip to content

Commit 0b714b4

Browse files
pcwaltonhuonw
authored andcommitted
libstd: Add some methods to Vec<T>.
1 parent caf17fe commit 0b714b4

File tree

3 files changed

+21
-18
lines changed

3 files changed

+21
-18
lines changed

src/libstd/rt/local_heap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use rt::global_heap;
2121
use rt::local::Local;
2222
use rt::task::Task;
2323
use raw;
24-
use slice::ImmutableVector;
24+
use slice::{ImmutableVector, Vector};
2525
use vec::Vec;
2626

2727
// This has no meaning with out rtdebug also turned on.

src/libstd/str.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ use ptr::RawPtr;
101101
use from_str::FromStr;
102102
use slice;
103103
use slice::{OwnedVector, OwnedCloneableVector, ImmutableVector, MutableVector};
104+
use slice::{Vector};
104105
use vec::Vec;
105106
use default::Default;
106107
use raw::Repr;

src/libstd/vec.rs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use ptr;
2828
use rt::global_heap::{malloc_raw, realloc_raw};
2929
use raw::Slice;
3030
use slice::{ImmutableEqVector, ImmutableVector, Items, MutItems, MutableVector};
31-
use slice::{MutableTotalOrdVector};
31+
use slice::{MutableTotalOrdVector, Vector};
3232

3333
/// An owned, growable vector.
3434
///
@@ -534,22 +534,6 @@ impl<T> Vec<T> {
534534
self.len = len;
535535
}
536536

537-
/// Work with `self` as a slice.
538-
///
539-
/// # Example
540-
///
541-
/// ```rust
542-
/// fn foo(slice: &[int]) {}
543-
///
544-
/// let vec = vec!(1, 2);
545-
/// foo(vec.as_slice());
546-
/// ```
547-
#[inline]
548-
pub fn as_slice<'a>(&'a self) -> &'a [T] {
549-
let slice = Slice { data: self.ptr as *T, len: self.len };
550-
unsafe { transmute(slice) }
551-
}
552-
553537
/// Work with `self` as a mutable slice.
554538
///
555539
/// # Example
@@ -1172,6 +1156,24 @@ impl<T:Eq> Vec<T> {
11721156
}
11731157
}
11741158

1159+
impl<T> Vector<T> for Vec<T> {
1160+
/// Work with `self` as a slice.
1161+
///
1162+
/// # Example
1163+
///
1164+
/// ```rust
1165+
/// fn foo(slice: &[int]) {}
1166+
///
1167+
/// let vec = vec!(1, 2);
1168+
/// foo(vec.as_slice());
1169+
/// ```
1170+
#[inline]
1171+
fn as_slice<'a>(&'a self) -> &'a [T] {
1172+
let slice = Slice { data: self.ptr as *T, len: self.len };
1173+
unsafe { transmute(slice) }
1174+
}
1175+
}
1176+
11751177
/// Iterates over the `second` vector, copying each element and appending it to
11761178
/// the `first`. Afterwards, the `first` is then returned for use again.
11771179
///

0 commit comments

Comments
 (0)