@@ -19,7 +19,7 @@ impl<T: fmt::Display> fmt::Display for Array<T>{
1919 try!( write ! ( fmt,
2020"[{}:{}]" ,
2121 dim. lower_bound,
22- dim. lower_bound as isize + dim. lenas isize - 1 ) ) ;
22+ dim. lower_bound + dim. len - 1 ) ) ;
2323}
2424 try!( write ! ( fmt, "=" ) ) ;
2525}
@@ -61,7 +61,7 @@ impl<T> Array<T>{
6161/// elements specified by the dimensions.
6262pub fn from_parts ( data : Vec < T > , dimensions : Vec < Dimension > ) -> Array < T > {
6363assert ! ( ( data. is_empty( ) && dimensions. is_empty( ) ) ||
64- data. len( ) == dimensions. iter( ) . fold( 1 , |acc, i| acc * i. lenas usize ) ,
64+ data. len( ) as i32 == dimensions. iter( ) . fold( 1 , |acc, i| acc * i. len) ,
6565"size mismatch" ) ;
6666Array {
6767dims : dimensions,
@@ -120,15 +120,15 @@ impl<T> Array<T>{
120120& self . dims
121121}
122122
123- fn shift_idx ( & self , indices : & [ isize ] ) -> usize {
123+ fn shift_idx ( & self , indices : & [ i32 ] ) -> i32 {
124124assert_eq ! ( self . dims. len( ) , indices. len( ) ) ;
125125self . dims
126126. iter ( )
127127. zip ( indices. iter ( ) . cloned ( ) )
128128. rev ( )
129129. fold ( ( 0 , 1 ) , |( acc, stride) , ( dim, idx) | {
130130let shifted = dim. shift ( idx) ;
131- ( acc + shifted * stride, dim. len as usize * stride)
131+ ( acc + shifted * stride, dim. len * stride)
132132} )
133133. 0
134134}
@@ -161,51 +161,51 @@ pub trait ArrayIndex{
161161///
162162/// Panics if the value of `self` does not correspond to an in-bounds
163163/// element of the `Array`.
164- fn index < T > ( & self , array : & Array < T > ) -> usize ;
164+ fn index < T > ( & self , array : & Array < T > ) -> i32 ;
165165}
166166
167- impl < ' a > ArrayIndex for & ' a [ isize ] {
168- fn index < T > ( & self , array : & Array < T > ) -> usize {
167+ impl < ' a > ArrayIndex for & ' a [ i32 ] {
168+ fn index < T > ( & self , array : & Array < T > ) -> i32 {
169169 array. shift_idx ( * self )
170170}
171171}
172172
173- impl ArrayIndex for isize {
174- fn index < T > ( & self , array : & Array < T > ) -> usize {
175- let slice: & [ isize ] = & [ * self ] ;
173+ impl ArrayIndex for i32 {
174+ fn index < T > ( & self , array : & Array < T > ) -> i32 {
175+ let slice: & [ i32 ] = & [ * self ] ;
176176ArrayIndex :: index ( & slice, array)
177177}
178178}
179179
180180macro_rules! tuple_impl {
181181( $( $name: ident : $t: ty) ,+) => {
182182impl ArrayIndex for ( $( $t, ) +) {
183- fn index<T >( & self , array: & Array <T >) -> usize {
183+ fn index<T >( & self , array: & Array <T >) -> i32 {
184184let ( $( $name, ) +) = * self ;
185- let slice: & [ isize ] = & [ $( $name) ,+] ;
185+ let slice: & [ i32 ] = & [ $( $name) ,+] ;
186186ArrayIndex :: index( & slice, array)
187187}
188188}
189189}
190190}
191191
192- tuple_impl ! ( a: isize ) ;
193- tuple_impl ! ( a: isize , b: isize ) ;
194- tuple_impl ! ( a: isize , b: isize , c: isize ) ;
195- tuple_impl ! ( a: isize , b: isize , c: isize , d: isize ) ;
196- tuple_impl ! ( a: isize , b: isize , c: isize , d: isize , e: isize ) ;
197- tuple_impl ! ( a: isize , b: isize , c: isize , d: isize , e: isize , f: isize ) ;
198- tuple_impl ! ( a: isize , b: isize , c: isize , d: isize , e: isize , f: isize , g: isize ) ;
199- tuple_impl ! ( a: isize , b: isize , c: isize , d: isize , e: isize , f: isize , g: isize , h: isize ) ;
200- tuple_impl ! ( a: isize , b: isize , c: isize , d: isize , e: isize , f: isize , g: isize , h: isize , i: isize ) ;
192+ tuple_impl ! ( a: i32 ) ;
193+ tuple_impl ! ( a: i32 , b: i32 ) ;
194+ tuple_impl ! ( a: i32 , b: i32 , c: i32 ) ;
195+ tuple_impl ! ( a: i32 , b: i32 , c: i32 , d: i32 ) ;
196+ tuple_impl ! ( a: i32 , b: i32 , c: i32 , d: i32 , e: i32 ) ;
197+ tuple_impl ! ( a: i32 , b: i32 , c: i32 , d: i32 , e: i32 , f: i32 ) ;
198+ tuple_impl ! ( a: i32 , b: i32 , c: i32 , d: i32 , e: i32 , f: i32 , g: i32 ) ;
199+ tuple_impl ! ( a: i32 , b: i32 , c: i32 , d: i32 , e: i32 , f: i32 , g: i32 , h: i32 ) ;
200+ tuple_impl ! ( a: i32 , b: i32 , c: i32 , d: i32 , e: i32 , f: i32 , g: i32 , h: i32 , i: i32 ) ;
201201
202202/// Indexes into the `Array`, retrieving a reference to the contained
203203/// value.
204204///
205205/// Since `Array`s can be multi-dimensional, the `Index` trait is
206206/// implemented for a variety of index types. In the most generic case, a
207- /// `&[isize ]` can be used. In addition, a bare `isize ` as well as tuples
208- /// of up to 10 `isize ` values may be used for convenience.
207+ /// `&[i32 ]` can be used. In addition, a bare `i32 ` as well as tuples
208+ /// of up to 10 `i32 ` values may be used for convenience.
209209///
210210/// # Panics
211211///
@@ -228,14 +228,14 @@ impl<T, I: ArrayIndex> Index<I> for Array<T>{
228228type Output = T ;
229229fn index ( & self , idx : I ) -> & T {
230230let idx = idx. index ( self ) ;
231- & self . data [ idx]
231+ & self . data [ idxas usize ]
232232}
233233}
234234
235235impl < T , I : ArrayIndex > IndexMut < I > for Array < T > {
236236fn index_mut ( & mut self , idx : I ) -> & mut T {
237237let idx = idx. index ( self ) ;
238- & mut self . data [ idx]
238+ & mut self . data [ idxas usize ]
239239}
240240}
241241
0 commit comments