1 // Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution.
4 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7 // option. This file may not be copied, modified, or distributed
8 // except according to those terms.
10 #![warn(clippy::temporary_assignment)]
12 use std::ops::{Deref, DerefMut};
14 struct TupleStruct(i32);
25 inner: &'a mut Struct,
28 impl<'a> Deref for Wrapper<'a> {
30 fn deref(&self) -> &Struct {
35 impl<'a> DerefMut for Wrapper<'a> {
36 fn deref_mut(&mut self) -> &mut Struct {
45 const A: TupleStruct = TupleStruct(1);
46 const B: Struct = Struct { field: 1 };
47 const C: MultiStruct = MultiStruct {
48 structure: Struct { field: 1 },
50 const D: ArrayStruct = ArrayStruct { array: [1] };
53 let mut s = Struct { field: 0 };
56 Struct { field: 0 }.field = 1;
58 structure: Struct { field: 0 },
62 ArrayStruct { array: [0] }.array[0] = 1;
67 C.structure.field = 2;
73 Wrapper { inner: &mut s }.field = 1;
74 let mut a_mut = TupleStruct(1);
76 let mut b_mut = Struct { field: 1 };
78 let mut c_mut = MultiStruct {
79 structure: Struct { field: 1 },
81 c_mut.structure.field = 2;
82 let mut d_mut = ArrayStruct { array: [1] };