| error[E0391]: cycle detected when computing type of `cycle1::{{opaque}}#0` |
| --> $DIR/auto-trait-leak.rs:12:16 |
| | |
| LL | fn cycle1() -> impl Clone { |
| | ^^^^^^^^^^ |
| | |
| note: ...which requires borrow-checking `cycle1`... |
| --> $DIR/auto-trait-leak.rs:12:1 |
| | |
| LL | fn cycle1() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires processing `cycle1`... |
| --> $DIR/auto-trait-leak.rs:12:1 |
| | |
| LL | fn cycle1() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires processing MIR for `cycle1`... |
| --> $DIR/auto-trait-leak.rs:12:1 |
| | |
| LL | fn cycle1() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires unsafety-checking `cycle1`... |
| --> $DIR/auto-trait-leak.rs:12:1 |
| | |
| LL | fn cycle1() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires building MIR for `cycle1`... |
| --> $DIR/auto-trait-leak.rs:12:1 |
| | |
| LL | fn cycle1() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires type-checking `cycle1`... |
| --> $DIR/auto-trait-leak.rs:12:1 |
| | |
| LL | fn cycle1() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`... |
| note: ...which requires computing type of `cycle2::{{opaque}}#0`... |
| --> $DIR/auto-trait-leak.rs:20:16 |
| | |
| LL | fn cycle2() -> impl Clone { |
| | ^^^^^^^^^^ |
| note: ...which requires borrow-checking `cycle2`... |
| --> $DIR/auto-trait-leak.rs:20:1 |
| | |
| LL | fn cycle2() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires processing `cycle2`... |
| --> $DIR/auto-trait-leak.rs:20:1 |
| | |
| LL | fn cycle2() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires processing MIR for `cycle2`... |
| --> $DIR/auto-trait-leak.rs:20:1 |
| | |
| LL | fn cycle2() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires unsafety-checking `cycle2`... |
| --> $DIR/auto-trait-leak.rs:20:1 |
| | |
| LL | fn cycle2() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires building MIR for `cycle2`... |
| --> $DIR/auto-trait-leak.rs:20:1 |
| | |
| LL | fn cycle2() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| note: ...which requires type-checking `cycle2`... |
| --> $DIR/auto-trait-leak.rs:20:1 |
| | |
| LL | fn cycle2() -> impl Clone { |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`... |
| = note: ...which again requires computing type of `cycle1::{{opaque}}#0`, completing the cycle |
| note: cycle used when checking item types in top-level module |
| --> $DIR/auto-trait-leak.rs:1:1 |
| | |
| LL | / use std::cell::Cell; |
| LL | | use std::rc::Rc; |
| LL | | |
| LL | | fn send<T: Send>(_: T) {} |
| ... | |
| LL | | Rc::new(String::from("foo")) |
| LL | | } |
| | |_^ |
| |
| error[E0277]: `std::rc::Rc<std::string::String>` cannot be sent between threads safely |
| --> $DIR/auto-trait-leak.rs:14:5 |
| | |
| LL | fn send<T: Send>(_: T) {} |
| | ---- required by this bound in `send` |
| ... |
| LL | send(cycle2().clone()); |
| | ^^^^ `std::rc::Rc<std::string::String>` cannot be sent between threads safely |
| ... |
| LL | fn cycle2() -> impl Clone { |
| | ---------- within this `impl std::clone::Clone` |
| | |
| = help: within `impl std::clone::Clone`, the trait `std::marker::Send` is not implemented for `std::rc::Rc<std::string::String>` |
| = note: required because it appears within the type `impl std::clone::Clone` |
| |
| error: aborting due to 2 previous errors |
| |
| Some errors have detailed explanations: E0277, E0391. |
| For more information about an error, try `rustc --explain E0277`. |