1 // Copyright 2015 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.
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.
11 #![feature(augmented_assignments)]
12 #![feature(op_assign_traits)]
16 AddAssign, BitAndAssign, BitOrAssign, BitXorAssign, DivAssign, Index, MulAssign, RemAssign,
17 ShlAssign, ShrAssign, SubAssign,
20 #[derive(Debug, PartialEq)]
26 fn new(slice: &mut [i32]) -> &mut Slice {
37 assert_eq!(x, Int(0b11));
40 assert_eq!(x, Int(0b01));
43 assert_eq!(x, Int(0b11));
46 assert_eq!(x, Int(0b10));
49 assert_eq!(x, Int(1));
52 assert_eq!(x, Int(3));
55 assert_eq!(x, Int(1));
59 assert_eq!(x, Int(2));
62 assert_eq!(x, Int(4));
65 assert_eq!(x, Int(2));
68 assert_eq!(x, Int(1));
71 assert_eq!(x, Int(0));
74 let mut v = vec![Int(1), Int(2)];
76 assert_eq!(v[0], Int(3));
79 let mut array = [0, 1, 2];
80 *Slice::new(&mut array) += 1;
81 assert_eq!(array[0], 1);
82 assert_eq!(array[1], 2);
83 assert_eq!(array[2], 3);
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 {