blob: 2d219643f3e9c4eeb696234c5277d851b0c57163 [file] [log] [blame]
// run-pass
// Test that in a by-ref once closure we move some variables even as
// we capture others by mutable reference.
fn call<F>(f: F) where F : FnOnce() {
f();
}
fn main() {
let mut x = vec![format!("Hello")];
let y = vec![format!("World")];
call(|| {
// Here: `x` must be captured with a mutable reference in
// order for us to append on it, and `y` must be captured by
// value.
for item in y {
x.push(item);
}
});
assert_eq!(x.len(), 2);
assert_eq!(&*x[0], "Hello");
assert_eq!(&*x[1], "World");
}