]> git.proxmox.com Git - rustc.git/blame - src/test/compile-fail/borrowck-loan-vec-content.rs
Imported Upstream version 1.5.0+dfsg1
[rustc.git] / src / test / compile-fail / borrowck-loan-vec-content.rs
CommitLineData
223e47cc
LB
1// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution and at
3// http://rust-lang.org/COPYRIGHT.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11// Here we check that it is allowed to lend out an element of a
12// (locally rooted) mutable, unique vector, and that we then prevent
13// modifications to the contents.
14
1a4d82fc 15fn takes_imm_elt<F>(_v: &isize, f: F) where F: FnOnce() {
223e47cc
LB
16 f();
17}
18
19fn has_mut_vec_and_does_not_try_to_change_it() {
1a4d82fc
JJ
20 let mut v: Vec<isize> = vec!(1, 2, 3);
21 takes_imm_elt(&v[0], || {})
223e47cc
LB
22}
23
24fn has_mut_vec_but_tries_to_change_it() {
1a4d82fc
JJ
25 let mut v: Vec<isize> = vec!(1, 2, 3);
26 takes_imm_elt(
27 &v[0],
28 || { //~ ERROR cannot borrow `v` as mutable
29 v[1] = 4;
30 })
223e47cc
LB
31}
32
33fn main() {
34}