diff options
| author | bors <bors@rust-lang.org> | 2017-08-25 10:20:15 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-08-25 10:20:15 +0000 |
| commit | ba65645c78a87f1fa5c6d7132130bb3175fbe68b (patch) | |
| tree | abbeb24770cb1c25e1dbc1f603988c5bf84f020d /src/liballoc | |
| parent | 32b50e280faf56f21cbd82d1cf82cb4795535143 (diff) | |
| parent | c4cb2d1f2e74b4df4d9615b410ebc1c789c287dc (diff) | |
| download | rust-ba65645c78a87f1fa5c6d7132130bb3175fbe68b.tar.gz rust-ba65645c78a87f1fa5c6d7132130bb3175fbe68b.zip | |
Auto merge of #44031 - scottmcm:swap_with_slice, r=alexcrichton
Add [T]::swap_with_slice The safe version of a method from `ptr`, like `[T]::copy_from_slice` is. Tracking issue: https://github.com/rust-lang/rust/issues/44030
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/lib.rs | 2 | ||||
| -rw-r--r-- | src/liballoc/slice.rs | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs index 227fcfabcf1..4e91be365e2 100644 --- a/src/liballoc/lib.rs +++ b/src/liballoc/lib.rs @@ -121,7 +121,7 @@ #![feature(unsize)] #![feature(allocator_internals)] -#![cfg_attr(not(test), feature(fused, fn_traits, placement_new_protocol))] +#![cfg_attr(not(test), feature(fused, fn_traits, placement_new_protocol, swap_with_slice))] #![cfg_attr(test, feature(test, box_heap))] // Allow testing this library diff --git a/src/liballoc/slice.rs b/src/liballoc/slice.rs index 356ca7a5f5e..cbf242e884a 100644 --- a/src/liballoc/slice.rs +++ b/src/liballoc/slice.rs @@ -1461,6 +1461,31 @@ impl<T> [T] { core_slice::SliceExt::copy_from_slice(self, src) } + /// Swaps all elements in `self` with those in `src`. + /// + /// The length of `src` must be the same as `self`. + /// + /// # Panics + /// + /// This function will panic if the two slices have different lengths. + /// + /// # Example + /// + /// ``` + /// #![feature(swap_with_slice)] + /// + /// let mut src = [1, 2, 3]; + /// let mut dst = [7, 8, 9]; + /// + /// src.swap_with_slice(&mut dst); + /// assert_eq!(src, [7, 8, 9]); + /// assert_eq!(dst, [1, 2, 3]); + /// ``` + #[unstable(feature = "swap_with_slice", issue = "44030")] + pub fn swap_with_slice(&mut self, src: &mut [T]) { + core_slice::SliceExt::swap_with_slice(self, src) + } + /// Copies `self` into a new `Vec`. /// /// # Examples |
