mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:53:24
 | 
						|
   |
 | 
						|
LL |     let __isize = &mut x.y;
 | 
						|
   |                        ^ cannot borrow as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be mutable
 | 
						|
   |
 | 
						|
LL | fn deref_mut_field1(mut x: Own<Point>) {
 | 
						|
   |                     +++
 | 
						|
 | 
						|
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:65:10
 | 
						|
   |
 | 
						|
LL |     &mut x.y
 | 
						|
   |          ^ `x` is a `&` reference, so the data it refers to cannot be borrowed as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be a mutable reference
 | 
						|
   |
 | 
						|
LL | fn deref_extend_mut_field1(x: &mut Own<Point>) -> &mut isize {
 | 
						|
   |                                +++
 | 
						|
 | 
						|
error[E0499]: cannot borrow `*x` as mutable more than once at a time
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:78:19
 | 
						|
   |
 | 
						|
LL |     let _x = &mut x.x;
 | 
						|
   |                   - first mutable borrow occurs here
 | 
						|
LL |     let _y = &mut x.y;
 | 
						|
   |                   ^ second mutable borrow occurs here
 | 
						|
LL |     use_mut(_x);
 | 
						|
   |             -- first borrow later used here
 | 
						|
 | 
						|
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:88:5
 | 
						|
   |
 | 
						|
LL |     x.y = 3;
 | 
						|
   |     ^ cannot borrow as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be mutable
 | 
						|
   |
 | 
						|
LL | fn assign_field1<'a>(mut x: Own<Point>) {
 | 
						|
   |                      +++
 | 
						|
 | 
						|
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:92:5
 | 
						|
   |
 | 
						|
LL |     x.y = 3;
 | 
						|
   |     ^ `x` is a `&` reference, so the data it refers to cannot be borrowed as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be a mutable reference
 | 
						|
   |
 | 
						|
LL | fn assign_field2<'a>(x: &'a mut Own<Point>) {
 | 
						|
   |                             +++
 | 
						|
 | 
						|
error[E0499]: cannot borrow `*x` as mutable more than once at a time
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:101:5
 | 
						|
   |
 | 
						|
LL |     let _p: &mut Point = &mut **x;
 | 
						|
   |                                -- first mutable borrow occurs here
 | 
						|
LL |     x.y = 3;
 | 
						|
   |     ^ second mutable borrow occurs here
 | 
						|
LL |     use_mut(_p);
 | 
						|
   |             -- first borrow later used here
 | 
						|
 | 
						|
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:109:5
 | 
						|
   |
 | 
						|
LL |     x.set(0, 0);
 | 
						|
   |     ^ cannot borrow as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be mutable
 | 
						|
   |
 | 
						|
LL | fn deref_mut_method1(mut x: Own<Point>) {
 | 
						|
   |                      +++
 | 
						|
 | 
						|
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:121:5
 | 
						|
   |
 | 
						|
LL |     x.y_mut()
 | 
						|
   |     ^ `x` is a `&` reference, so the data it refers to cannot be borrowed as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be a mutable reference
 | 
						|
   |
 | 
						|
LL | fn deref_extend_mut_method1(x: &mut Own<Point>) -> &mut isize {
 | 
						|
   |                                 +++
 | 
						|
 | 
						|
error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:129:6
 | 
						|
   |
 | 
						|
LL |     *x.y_mut() = 3;
 | 
						|
   |      ^ cannot borrow as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be mutable
 | 
						|
   |
 | 
						|
LL | fn assign_method1<'a>(mut x: Own<Point>) {
 | 
						|
   |                       +++
 | 
						|
 | 
						|
error[E0596]: cannot borrow `*x` as mutable, as it is behind a `&` reference
 | 
						|
  --> $DIR/borrowck-borrow-overloaded-auto-deref-mut.rs:133:6
 | 
						|
   |
 | 
						|
LL |     *x.y_mut() = 3;
 | 
						|
   |      ^ `x` is a `&` reference, so the data it refers to cannot be borrowed as mutable
 | 
						|
   |
 | 
						|
help: consider changing this to be a mutable reference
 | 
						|
   |
 | 
						|
LL | fn assign_method2<'a>(x: &'a mut Own<Point>) {
 | 
						|
   |                              +++
 | 
						|
 | 
						|
error: aborting due to 10 previous errors
 | 
						|
 | 
						|
Some errors have detailed explanations: E0499, E0596.
 | 
						|
For more information about an error, try `rustc --explain E0499`.
 |