5b54286640
Remove the "which is required by `{root_obligation}`" post-script in "the trait `X` is not implemented for `Y`" explanation in E0277. This information is already conveyed in the notes explaining requirements, making it redundant while making the text (particularly in labels) harder to read. ``` error[E0277]: the trait bound `NotCopy: Copy` is not satisfied --> $DIR/wf-static-type.rs:10:13 | LL | static FOO: IsCopy<Option<NotCopy>> = IsCopy { t: None }; | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `NotCopy` | = note: required for `Option<NotCopy>` to implement `Copy` note: required by a bound in `IsCopy` --> $DIR/wf-static-type.rs:7:17 | LL | struct IsCopy<T:Copy> { t: T } | ^^^^ required by this bound in `IsCopy` ``` vs the prior ``` error[E0277]: the trait bound `NotCopy: Copy` is not satisfied --> $DIR/wf-static-type.rs:10:13 | LL | static FOO: IsCopy<Option<NotCopy>> = IsCopy { t: None }; | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `NotCopy`, which is required by `Option<NotCopy>: Copy` | = note: required for `Option<NotCopy>` to implement `Copy` note: required by a bound in `IsCopy` --> $DIR/wf-static-type.rs:7:17 | LL | struct IsCopy<T:Copy> { t: T } | ^^^^ required by this bound in `IsCopy` ```
100 lines
3.6 KiB
Plaintext
100 lines
3.6 KiB
Plaintext
error: future cannot be sent between threads safely
|
|
--> $DIR/async-await-let-else.rs:45:13
|
|
|
|
|
LL | is_send(foo(Some(true)));
|
|
| ^^^^^^^^^^^^^^^ future returned by `foo` is not `Send`
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
|
note: future is not `Send` as this value is used across an await
|
|
--> $DIR/async-await-let-else.rs:8:15
|
|
|
|
|
LL | let r = Rc::new(());
|
|
| - has type `Rc<()>` which is not `Send`
|
|
LL | bar().await
|
|
| ^^^^^ await occurs here, with `r` maybe used later
|
|
note: required by a bound in `is_send`
|
|
--> $DIR/async-await-let-else.rs:16:15
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
error[E0277]: `Rc<()>` cannot be sent between threads safely
|
|
--> $DIR/async-await-let-else.rs:47:13
|
|
|
|
|
LL | async fn foo2(x: Option<bool>) {
|
|
| ------------------------------ within this `impl Future<Output = ()>`
|
|
...
|
|
LL | is_send(foo2(Some(true)));
|
|
| ------- ^^^^^^^^^^^^^^^^ `Rc<()>` cannot be sent between threads safely
|
|
| |
|
|
| required by a bound introduced by this call
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
|
note: required because it's used within this `async` fn body
|
|
--> $DIR/async-await-let-else.rs:24:29
|
|
|
|
|
LL | async fn bar2<T>(_: T) -> ! {
|
|
| _____________________________^
|
|
LL | | panic!()
|
|
LL | | }
|
|
| |_^
|
|
note: required because it's used within this `async` fn body
|
|
--> $DIR/async-await-let-else.rs:18:32
|
|
|
|
|
LL | async fn foo2(x: Option<bool>) {
|
|
| ________________________________^
|
|
LL | | let Some(_) = x else {
|
|
LL | | bar2(Rc::new(())).await
|
|
LL | | };
|
|
LL | | }
|
|
| |_^
|
|
note: required by a bound in `is_send`
|
|
--> $DIR/async-await-let-else.rs:16:15
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
error: future cannot be sent between threads safely
|
|
--> $DIR/async-await-let-else.rs:49:13
|
|
|
|
|
LL | is_send(foo3(Some(true)));
|
|
| ^^^^^^^^^^^^^^^^ future returned by `foo3` is not `Send`
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
|
note: future is not `Send` as this value is used across an await
|
|
--> $DIR/async-await-let-else.rs:30:29
|
|
|
|
|
LL | (Rc::new(()), bar().await);
|
|
| ----------- ^^^^^ await occurs here, with `Rc::new(())` maybe used later
|
|
| |
|
|
| has type `Rc<()>` which is not `Send`
|
|
note: required by a bound in `is_send`
|
|
--> $DIR/async-await-let-else.rs:16:15
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
error: future cannot be sent between threads safely
|
|
--> $DIR/async-await-let-else.rs:51:13
|
|
|
|
|
LL | is_send(foo4(Some(true)));
|
|
| ^^^^^^^^^^^^^^^^ future returned by `foo4` is not `Send`
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
|
note: future is not `Send` as this value is used across an await
|
|
--> $DIR/async-await-let-else.rs:38:15
|
|
|
|
|
LL | let r = Rc::new(());
|
|
| - has type `Rc<()>` which is not `Send`
|
|
LL | bar().await;
|
|
| ^^^^^ await occurs here, with `r` maybe used later
|
|
note: required by a bound in `is_send`
|
|
--> $DIR/async-await-let-else.rs:16:15
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
error: aborting due to 4 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0277`.
|