remove redundant Send impls for references
also move them next to the trait they are implementing
This commit is contained in:
parent
edabf59ca4
commit
73d655e9c2
@ -44,6 +44,12 @@ impl<T: ?Sized> !Send for *const T {}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: ?Sized> !Send for *mut T {}
|
||||
|
||||
// Most instances arise automatically, but this instance is needed to link up `T: Sync` with
|
||||
// `&T: Send` (and it also removes the unsound default instance `T Send` -> `&T: Send` that would
|
||||
// otherwise exist).
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
unsafe impl<T: Sync + ?Sized> Send for &T {}
|
||||
|
||||
/// Types with a constant size known at compile time.
|
||||
///
|
||||
/// All type parameters have an implicit bound of `Sized`. The special syntax
|
||||
@ -680,13 +686,6 @@ impl<T: ?Sized> StructuralEq for $t<T> {}
|
||||
|
||||
impls! { PhantomData }
|
||||
|
||||
mod impls {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
unsafe impl<T: Sync + ?Sized> Send for &T {}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
unsafe impl<T: Send + ?Sized> Send for &mut T {}
|
||||
}
|
||||
|
||||
/// Compiler-internal trait used to indicate the type of enum discriminants.
|
||||
///
|
||||
/// This trait is automatically implemented for every type and does not add any
|
||||
|
@ -27,7 +27,7 @@ error: future cannot be sent between threads safely
|
||||
LL | assert_send(non_sync_with_method_call());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ future returned by `non_sync_with_method_call` is not `Send`
|
||||
|
|
||||
= help: the trait `Send` is not implemented for `dyn std::fmt::Write`
|
||||
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `dyn std::fmt::Write`
|
||||
note: future is not `Send` as this value is used across an await
|
||||
--> $DIR/async-fn-nonsend.rs:46:14
|
||||
|
|
||||
|
Loading…
Reference in New Issue
Block a user