File tree Expand file tree Collapse file tree 3 files changed +47
-0
lines changed Expand file tree Collapse file tree 3 files changed +47
-0
lines changed Original file line number Diff line number Diff line change @@ -295,4 +295,13 @@ mod test {
295
295
let _b = x. borrow ( ) ;
296
296
x. with_mut ( |x| * x += 1 ) ;
297
297
}
298
+
299
+ #[ test]
300
+ #[ should_fail]
301
+ fn discard_doesnt_unborrow ( ) {
302
+ let x = Mut :: new ( 0 ) ;
303
+ let _b = x. borrow ( ) ;
304
+ let _ = _b;
305
+ let _b = x. borrow_mut ( ) ;
306
+ }
298
307
}
Original file line number Diff line number Diff line change
1
+ // Copyright 2013 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
+ use std:: mutable:: Mut ;
12
+
13
+ fn main ( ) {
14
+ let m = Mut :: new ( 0 ) ;
15
+ let mut b = m. borrow_mut ( ) ;
16
+ let b1 = b. get ( ) ;
17
+ let b2 = b. get ( ) ; //~ ERROR cannot borrow `b` as mutable more than once at a time
18
+ }
Original file line number Diff line number Diff line change
1
+ // Copyright 2013 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
+ use std:: mutable:: Mut ;
12
+
13
+ fn main ( ) {
14
+ let m = Mut :: new ( 0 ) ;
15
+ let p;
16
+ {
17
+ let b = m. borrow ( ) ;
18
+ p = b. get ( ) ; //~ ERROR borrowed value does not live long enough
19
+ }
20
+ }
You can’t perform that action at this time.
0 commit comments