Pass function for Thread
as Send
to Thread::imp
This commit is contained in:
parent
7cd732f990
commit
9b2e41a218
1 changed files with 3 additions and 2 deletions
|
@ -561,7 +561,8 @@ impl Builder {
|
||||||
let main = Box::new(main);
|
let main = Box::new(main);
|
||||||
// SAFETY: dynamic size and alignment of the Box remain the same. See below for why the
|
// SAFETY: dynamic size and alignment of the Box remain the same. See below for why the
|
||||||
// lifetime change is justified.
|
// lifetime change is justified.
|
||||||
let main = unsafe { Box::from_raw(Box::into_raw(main) as *mut (dyn FnOnce() + 'static)) };
|
let main =
|
||||||
|
unsafe { Box::from_raw(Box::into_raw(main) as *mut (dyn FnOnce() + Send + 'static)) };
|
||||||
|
|
||||||
Ok(JoinInner {
|
Ok(JoinInner {
|
||||||
// SAFETY:
|
// SAFETY:
|
||||||
|
@ -1544,7 +1545,7 @@ struct Packet<'scope, T> {
|
||||||
// The type `T` should already always be Send (otherwise the thread could not
|
// The type `T` should already always be Send (otherwise the thread could not
|
||||||
// have been created) and the Packet is Sync because all access to the
|
// have been created) and the Packet is Sync because all access to the
|
||||||
// `UnsafeCell` synchronized (by the `join()` boundary), and `ScopeData` is Sync.
|
// `UnsafeCell` synchronized (by the `join()` boundary), and `ScopeData` is Sync.
|
||||||
unsafe impl<'scope, T: Sync> Sync for Packet<'scope, T> {}
|
unsafe impl<'scope, T: Send> Sync for Packet<'scope, T> {}
|
||||||
|
|
||||||
impl<'scope, T> Drop for Packet<'scope, T> {
|
impl<'scope, T> Drop for Packet<'scope, T> {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue