@@ -2,7 +2,7 @@ use super::array::Array;
2
2
use super :: defines:: AfError ;
3
3
use super :: error:: HANDLE_ERROR ;
4
4
use super :: seq:: Seq ;
5
- use super :: util:: { af_array, af_index_t, dim_t, HasAfEnum } ;
5
+ use super :: util:: { af_array, af_index_t, dim_t, HasAfEnum , IndexableType } ;
6
6
7
7
use libc:: { c_double, c_int, c_uint} ;
8
8
use std:: default:: Default ;
@@ -142,7 +142,10 @@ pub trait Indexable {
142
142
///
143
143
/// This is used in functions [index_gen](./fn.index_gen.html) and
144
144
/// [assign_gen](./fn.assign_gen.html)
145
- impl < T : HasAfEnum > Indexable for Array < T > {
145
+ impl < T > Indexable for Array < T >
146
+ where
147
+ T : HasAfEnum + IndexableType ,
148
+ {
146
149
fn set ( & self , idxr : & mut Indexer , dim : u32 , _is_batch : Option < bool > ) {
147
150
unsafe {
148
151
let err_val = af_set_array_indexer ( idxr. get ( ) , self . get ( ) , dim as dim_t ) ;
@@ -155,9 +158,10 @@ impl<T: HasAfEnum> Indexable for Array<T> {
155
158
///
156
159
/// This is used in functions [index_gen](./fn.index_gen.html) and
157
160
/// [assign_gen](./fn.assign_gen.html)
158
- impl < T : Copy > Indexable for Seq < T >
161
+ impl < T > Indexable for Seq < T >
159
162
where
160
163
c_double : From < T > ,
164
+ T : Copy + IndexableType ,
161
165
{
162
166
fn set ( & self , idxr : & mut Indexer , dim : u32 , is_batch : Option < bool > ) {
163
167
unsafe {
@@ -256,10 +260,11 @@ impl<'object> Drop for Indexer<'object> {
256
260
/// println!("a(seq(1, 3, 1), span)");
257
261
/// print(&sub);
258
262
/// ```
259
- pub fn index < IO , T : Copy > ( input : & Array < IO > , seqs : & [ Seq < T > ] ) -> Array < IO >
263
+ pub fn index < IO , T > ( input : & Array < IO > , seqs : & [ Seq < T > ] ) -> Array < IO >
260
264
where
261
265
c_double : From < T > ,
262
266
IO : HasAfEnum ,
267
+ T : Copy + HasAfEnum + IndexableType ,
263
268
{
264
269
let seqs: Vec < SeqInternal > = seqs. iter ( ) . map ( |s| SeqInternal :: from_seq ( s) ) . collect ( ) ;
265
270
unsafe {
@@ -462,7 +467,7 @@ where
462
467
pub fn lookup < T , I > ( input : & Array < T > , indices : & Array < I > , seq_dim : i32 ) -> Array < T >
463
468
where
464
469
T : HasAfEnum ,
465
- I : HasAfEnum ,
470
+ I : HasAfEnum + IndexableType ,
466
471
{
467
472
unsafe {
468
473
let mut temp: af_array = std:: ptr:: null_mut ( ) ;
@@ -504,10 +509,11 @@ where
504
509
/// // 1.0 1.0 1.0
505
510
/// // 2.0 2.0 2.0
506
511
/// ```
507
- pub fn assign_seq < T : Copy , I > ( lhs : & mut Array < I > , seqs : & [ Seq < T > ] , rhs : & Array < I > )
512
+ pub fn assign_seq < T , I > ( lhs : & mut Array < I > , seqs : & [ Seq < T > ] , rhs : & Array < I > )
508
513
where
509
514
c_double : From < T > ,
510
515
I : HasAfEnum ,
516
+ T : Copy + IndexableType ,
511
517
{
512
518
let seqs: Vec < SeqInternal > = seqs. iter ( ) . map ( |s| SeqInternal :: from_seq ( s) ) . collect ( ) ;
513
519
unsafe {
@@ -632,9 +638,10 @@ struct SeqInternal {
632
638
}
633
639
634
640
impl SeqInternal {
635
- fn from_seq < T : Copy > ( s : & Seq < T > ) -> Self
641
+ fn from_seq < T > ( s : & Seq < T > ) -> Self
636
642
where
637
643
c_double : From < T > ,
644
+ T : Copy + IndexableType ,
638
645
{
639
646
Self {
640
647
begin : From :: from ( s. begin ( ) ) ,
0 commit comments