diff options
| author | bors <bors@rust-lang.org> | 2022-01-13 03:46:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-01-13 03:46:19 +0000 |
| commit | 256721ee519f6ff15dc5c1cfaf3ebf9af75efa4a (patch) | |
| tree | e9ef6705d6784d0e68b441ffd061a8613491ee13 | |
| parent | e916815d21e37af5cd85f9eb67cda155d7129fff (diff) | |
| parent | a45b3ac1836b8d29a2a7b199aed169402aa01805 (diff) | |
| download | rust-256721ee519f6ff15dc5c1cfaf3ebf9af75efa4a.tar.gz rust-256721ee519f6ff15dc5c1cfaf3ebf9af75efa4a.zip | |
Auto merge of #92553 - m-ou-se:thread-join-simplify, r=Mark-Simulacrum
Simpilfy thread::JoinInner. `JoinInner`'s `native` field was an `Option`, but that's unnecessary. Also, thanks to `Arc::get_mut`, there's no unsafety needed in `JoinInner::join()`.
| -rw-r--r-- | library/std/src/thread/mod.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/library/std/src/thread/mod.rs b/library/std/src/thread/mod.rs index ae4b65871ec..546f8a15b70 100644 --- a/library/std/src/thread/mod.rs +++ b/library/std/src/thread/mod.rs @@ -498,12 +498,12 @@ impl Builder { // exist after the thread has terminated, which is signaled by `Thread::join` // returning. native: unsafe { - Some(imp::Thread::new( + imp::Thread::new( stack_size, mem::transmute::<Box<dyn FnOnce() + 'a>, Box<dyn FnOnce() + 'static>>( Box::new(main), ), - )?) + )? }, thread: my_thread, packet: Packet(my_packet), @@ -1261,15 +1261,15 @@ unsafe impl<T: Sync> Sync for Packet<T> {} /// Inner representation for JoinHandle struct JoinInner<T> { - native: Option<imp::Thread>, + native: imp::Thread, thread: Thread, packet: Packet<T>, } impl<T> JoinInner<T> { - fn join(&mut self) -> Result<T> { - self.native.take().unwrap().join(); - unsafe { (*self.packet.0.get()).take().unwrap() } + fn join(mut self) -> Result<T> { + self.native.join(); + Arc::get_mut(&mut self.packet.0).unwrap().get_mut().take().unwrap() } } @@ -1400,7 +1400,7 @@ impl<T> JoinHandle<T> { /// join_handle.join().expect("Couldn't join on the associated thread"); /// ``` #[stable(feature = "rust1", since = "1.0.0")] - pub fn join(mut self) -> Result<T> { + pub fn join(self) -> Result<T> { self.0.join() } @@ -1416,13 +1416,13 @@ impl<T> JoinHandle<T> { impl<T> AsInner<imp::Thread> for JoinHandle<T> { fn as_inner(&self) -> &imp::Thread { - self.0.native.as_ref().unwrap() + &self.0.native } } impl<T> IntoInner<imp::Thread> for JoinHandle<T> { fn into_inner(self) -> imp::Thread { - self.0.native.unwrap() + self.0.native } } |
