error[E0626]: borrow may still be in use when coroutine yields --> $DIR/yield-while-iterating.rs:13:18 | LL | let _b =#[coroutine] move || { | ------- within this coroutine LL | for p in &x { | ^^ LL | yield(); | ------- possible yield occurs here | help: add `static` to mark this coroutine as unmovable | LL | let _b =#[coroutine] static move || { | ++++++ error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable --> $DIR/yield-while-iterating.rs:58:20 | LL | let mut b = #[coroutine] || { | -- mutable borrow occurs here LL | for p in &mut x { | - first borrow occurs due to use of `x` in coroutine ... LL | println!("{}", x[0]); | ^ immutable borrow occurs here LL | Pin::new(&mut b).resume(()); | ------ mutable borrow later used here error: aborting due to 2 previous errors Some errors have detailed explanations: E0502, E0626. For more information about an error, try `rustc --explain E0502`.