@@ -61,21 +61,19 @@ use serde_json::{Map, Value};
61
61
///
62
62
/// * `schema` - The schema of the record batch.
63
63
/// * `batch` - The record batch to modify.
64
- /// * `indexes` - The indexes of the columns to replace.
65
- /// * `arrays` - The new arrays to replace the columns with.
64
+ /// * `indexed_arrays` - A list of indexes and arrays to replace the columns indexed with.
66
65
///
67
66
/// # Returns
68
67
///
69
68
/// The modified record batch with the columns replaced.
70
69
pub fn replace_columns (
71
70
schema : Arc < Schema > ,
72
71
batch : & RecordBatch ,
73
- indexes : & [ usize ] ,
74
- arrays : & [ Arc < dyn Array + ' static > ] ,
72
+ indexed_arrays : & [ ( usize , Arc < dyn Array + ' static > ) ] ,
75
73
) -> RecordBatch {
76
74
let mut batch_arrays = batch. columns ( ) . iter ( ) . map ( Arc :: clone) . collect_vec ( ) ;
77
- for ( & index, arr) in indexes . iter ( ) . zip ( arrays . iter ( ) ) {
78
- batch_arrays[ index] = Arc :: clone ( arr) ;
75
+ for ( index, arr) in indexed_arrays {
76
+ batch_arrays[ * index] = Arc :: clone ( arr) ;
79
77
}
80
78
RecordBatch :: try_new ( schema, batch_arrays) . unwrap ( )
81
79
}
@@ -180,7 +178,7 @@ mod tests {
180
178
181
179
let arr: Arc < dyn Array + ' static > = Arc :: new ( Int32Array :: from_value ( 0 , 3 ) ) ;
182
180
183
- let new_rb = replace_columns ( schema_ref. clone ( ) , & rb, & [ 2 ] , & [ arr] ) ;
181
+ let new_rb = replace_columns ( schema_ref. clone ( ) , & rb, & [ ( 2 , arr) ] ) ;
184
182
185
183
assert_eq ! ( new_rb. schema( ) , schema_ref) ;
186
184
assert_eq ! ( new_rb. num_columns( ) , 3 ) ;
0 commit comments