| //! This test ensures that a mutable reference cannot be passed as a resume argument twice. | |
| #![feature(generators, generator_trait)] | |
| use std::marker::Unpin; | |
| use std::ops::{ | |
| Generator, | |
| GeneratorState::{self, *}, | |
| }; | |
| use std::pin::Pin; | |
| fn main() { | |
| let mut thing = String::from("hello"); | |
| let mut gen = |r| { | |
| if false { | |
| yield r; | |
| } | |
| }; | |
| let mut gen = Pin::new(&mut gen); | |
| gen.as_mut().resume(&mut thing); | |
| gen.as_mut().resume(&mut thing); | |
| //~^ cannot borrow `thing` as mutable more than once at a time | |
| } |