diff options
| author | Cadence Marseille <cadencemarseille@gmail.com> | 2014-03-16 17:20:44 -0400 |
|---|---|---|
| committer | Cadence Marseille <cadencemarseille@gmail.com> | 2014-03-16 17:20:44 -0400 |
| commit | 5db7f7ed2413476e2006af6068d1b3a53e00db38 (patch) | |
| tree | 14c69ef83ce049e373eb646360660696d62e127d | |
| parent | 7156ded5bcf6831a6da22688d08f71985fdc81df (diff) | |
| download | rust-5db7f7ed2413476e2006af6068d1b3a53e00db38.tar.gz rust-5db7f7ed2413476e2006af6068d1b3a53e00db38.zip | |
Add method Vec<T>::as_mut_ptr()
| -rw-r--r-- | src/libstd/vec_ng.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libstd/vec_ng.rs b/src/libstd/vec_ng.rs index 7b77a4b60fb..d36617e1924 100644 --- a/src/libstd/vec_ng.rs +++ b/src/libstd/vec_ng.rs @@ -415,8 +415,7 @@ impl<T> Vec<T> { unsafe { // infallible // The spot to put the new value { - let slice = self.as_mut_slice(); - let p = slice.as_mut_ptr().offset(index as int); + let p = self.as_mut_ptr().offset(index as int); // Shift everything over to make space. (Duplicating the // `index`th element into two consecutive places.) ptr::copy_memory(p.offset(1), &*p, len - index); @@ -434,9 +433,8 @@ impl<T> Vec<T> { unsafe { // infallible let ret; { - let slice = self.as_mut_slice(); // the place we are taking from. - let ptr = slice.as_mut_ptr().offset(index as int); + let ptr = self.as_mut_ptr().offset(index as int); // copy it out, unsafely having a copy of the value on // the stack and in the vector at the same time. ret = Some(ptr::read(ptr as *T)); @@ -499,6 +497,11 @@ impl<T> Vec<T> { pub fn as_ptr(&self) -> *T { self.as_slice().as_ptr() } + + #[inline] + pub fn as_mut_ptr(&mut self) -> *mut T { + self.as_mut_slice().as_mut_ptr() + } } impl<T> Mutable for Vec<T> { |
