//! Tests that mutation of captured immutable variables in closures are not permitted. | |
#![feature(unboxed_closures, tuple_trait)] | |
use std::io::Read; | |
fn to_fn_once<A: std::marker::Tuple, F: FnOnce<A>>(f: F) -> F { | |
f | |
} | |
fn main() { | |
let x = 1; | |
to_fn_once(move || { | |
x = 2; | |
//~^ ERROR: cannot assign to `x`, as it is not declared as mutable | |
}); | |
let s = std::io::stdin(); | |
to_fn_once(move || { | |
s.read_to_end(&mut Vec::new()); | |
//~^ ERROR: cannot borrow `s` as mutable, as it is not declared as mutable | |
}); | |
} |