3 #![allow(unused_imports)]
4 #![deny(unused_assignments)]
8 AddAssign, BitAndAssign, BitOrAssign, BitXorAssign, DivAssign, Index, MulAssign, RemAssign,
9 ShlAssign, ShrAssign, SubAssign,
12 #[derive(Debug, PartialEq)]
18 fn new(slice: &mut [i32]) -> &mut Slice {
25 struct View<'a>(&'a mut [i32]);
31 assert_eq!(x, Int(0b11));
34 assert_eq!(x, Int(0b01));
37 assert_eq!(x, Int(0b11));
40 assert_eq!(x, Int(0b10));
43 assert_eq!(x, Int(1));
46 assert_eq!(x, Int(3));
49 assert_eq!(x, Int(1));
53 assert_eq!(x, Int(2));
56 assert_eq!(x, Int(4));
59 assert_eq!(x, Int(2));
62 assert_eq!(x, Int(1));
65 assert_eq!(x, Int(0));
68 let mut v = vec![Int(1), Int(2)];
70 assert_eq!(v[0], Int(3));
73 let mut array = [0, 1, 2];
74 *Slice::new(&mut array) += 1;
75 assert_eq!(array[0], 1);
76 assert_eq!(array[1], 2);
77 assert_eq!(array[2], 3);
80 // check that this does *not* trigger the unused_assignments lint
81 let mut array = [0, 1, 2];
82 let mut view = View(&mut array);
86 impl AddAssign for Int {
87 fn add_assign(&mut self, rhs: Int) {
92 impl BitAndAssign for Int {
93 fn bitand_assign(&mut self, rhs: Int) {
98 impl BitOrAssign for Int {
99 fn bitor_assign(&mut self, rhs: Int) {
104 impl BitXorAssign for Int {
105 fn bitxor_assign(&mut self, rhs: Int) {
110 impl DivAssign for Int {
111 fn div_assign(&mut self, rhs: Int) {
116 impl MulAssign for Int {
117 fn mul_assign(&mut self, rhs: Int) {
122 impl RemAssign for Int {
123 fn rem_assign(&mut self, rhs: Int) {
128 impl ShlAssign<u8> for Int {
129 fn shl_assign(&mut self, rhs: u8) {
134 impl ShlAssign<u16> for Int {
135 fn shl_assign(&mut self, rhs: u16) {
140 impl ShrAssign<u8> for Int {
141 fn shr_assign(&mut self, rhs: u8) {
146 impl ShrAssign<u16> for Int {
147 fn shr_assign(&mut self, rhs: u16) {
152 impl SubAssign for Int {
153 fn sub_assign(&mut self, rhs: Int) {
158 impl AddAssign<i32> for Slice {
159 fn add_assign(&mut self, rhs: i32) {
160 for lhs in &mut self.0 {
166 impl<'a> AddAssign<i32> for View<'a> {
167 fn add_assign(&mut self, rhs: i32) {
168 for lhs in self.0.iter_mut() {