diff options
| author | Michael Layzell <michael@thelayzells.com> | 2015-09-24 18:19:23 -0400 |
|---|---|---|
| committer | Michael Layzell <michael@thelayzells.com> | 2015-10-08 09:49:32 -0400 |
| commit | 493355d8e92ab00f0f6b787e4226c095ccd83a55 (patch) | |
| tree | e9cc4591e5e0ea3d3e560ec07a07aa44c53c2432 | |
| parent | 45be6fc4d755b1376942196edc9efc7b62a43808 (diff) | |
| download | rust-493355d8e92ab00f0f6b787e4226c095ccd83a55.tar.gz rust-493355d8e92ab00f0f6b787e4226c095ccd83a55.zip | |
Add unsafe Send and Sync impls to VecDeque's Drain<T>
| -rw-r--r-- | src/libcollections/vec_deque.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/sync-send-iterators-in-libcollections.rs | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/libcollections/vec_deque.rs b/src/libcollections/vec_deque.rs index 27a996055f5..807c02af6e1 100644 --- a/src/libcollections/vec_deque.rs +++ b/src/libcollections/vec_deque.rs @@ -1800,6 +1800,9 @@ pub struct Drain<'a, T: 'a> { deque: *mut VecDeque<T>, } +unsafe impl<'a, T: Sync> Sync for Drain<'a, T> {} +unsafe impl<'a, T: Send> Send for Drain<'a, T> {} + #[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: 'a> Drop for Drain<'a, T> { fn drop(&mut self) { diff --git a/src/test/run-pass/sync-send-iterators-in-libcollections.rs b/src/test/run-pass/sync-send-iterators-in-libcollections.rs index 8160fe56fd0..7fa592105c0 100644 --- a/src/test/run-pass/sync-send-iterators-in-libcollections.rs +++ b/src/test/run-pass/sync-send-iterators-in-libcollections.rs @@ -93,7 +93,8 @@ fn main() { } all_sync_send!(EnumSet::<Foo>::new(), iter); - all_sync_send!(VecDeque::<usize>::new(), iter, iter_mut, drain, into_iter); + all_sync_send!(VecDeque::<usize>::new(), iter, iter_mut, into_iter); + is_sync_send!(VecDeque::<usize>::new(), drain(..)); all_sync_send!(Vec::<usize>::new(), into_iter); is_sync_send!(Vec::<usize>::new(), drain(..)); |
