@@ -22,6 +22,7 @@ use crate::internal_prelude::*;
2222
2323/// Represents the HDF5 dataset object.
2424#[ repr( transparent) ]
25+ #[ derive( Clone ) ]
2526pub struct Dataset ( Handle ) ;
2627
2728impl ObjectClass for Dataset {
@@ -311,7 +312,7 @@ impl<T: H5Type> DatasetBuilder<T> {
311312
312313 let dims = match self . chunk {
313314 Chunk :: Manual ( ref c) => c. clone( ) ,
314- _ => infer_chunk_size( shape. clone ( ) , datatype. size( ) ) ,
315+ _ => infer_chunk_size( & shape, datatype. size( ) ) ,
315316 } ;
316317
317318 ensure!(
@@ -399,7 +400,7 @@ impl<T: H5Type> DatasetBuilder<T> {
399400 }
400401}
401402
402- fn infer_chunk_size < D : Dimension > ( shape : D , typesize : usize ) -> Vec < Ix > {
403+ fn infer_chunk_size < D : Dimension > ( shape : & D , typesize : usize ) -> Vec < Ix > {
403404 // This algorithm is borrowed from h5py, though the idea originally comes from PyTables.
404405
405406 const CHUNK_BASE : f64 = ( 16 * 1024 ) as _ ;
@@ -452,27 +453,27 @@ pub mod tests {
452453
453454 #[ test]
454455 pub fn test_infer_chunk_size ( ) {
455- assert_eq ! ( infer_chunk_size( ( ) , 1 ) , vec![ ] ) ;
456- assert_eq ! ( infer_chunk_size( 0 , 1 ) , vec![ 1 ] ) ;
457- assert_eq ! ( infer_chunk_size( ( 1 , ) , 1 ) , vec![ 1 ] ) ;
456+ assert_eq ! ( infer_chunk_size( & ( ) , 1 ) , vec![ ] ) ;
457+ assert_eq ! ( infer_chunk_size( & 0 , 1 ) , vec![ 1 ] ) ;
458+ assert_eq ! ( infer_chunk_size( & ( 1 , ) , 1 ) , vec![ 1 ] ) ;
458459
459460 // generated regression tests vs h5py implementation
460- assert_eq ! ( infer_chunk_size( ( 65682868 , ) , 1 ) , vec![ 64144 ] ) ;
461- assert_eq ! ( infer_chunk_size( ( 56755037 , ) , 2 ) , vec![ 27713 ] ) ;
462- assert_eq ! ( infer_chunk_size( ( 56882283 , ) , 4 ) , vec![ 27775 ] ) ;
463- assert_eq ! ( infer_chunk_size( ( 21081789 , ) , 8 ) , vec![ 10294 ] ) ;
464- assert_eq ! ( infer_chunk_size( ( 5735 , 6266 ) , 1 ) , vec![ 180 , 392 ] ) ;
465- assert_eq ! ( infer_chunk_size( ( 467 , 4427 ) , 2 ) , vec![ 30 , 554 ] ) ;
466- assert_eq ! ( infer_chunk_size( ( 5579 , 8323 ) , 4 ) , vec![ 88 , 261 ] ) ;
467- assert_eq ! ( infer_chunk_size( ( 1686 , 770 ) , 8 ) , vec![ 106 , 49 ] ) ;
468- assert_eq ! ( infer_chunk_size( ( 344 , 414 , 294 ) , 1 ) , vec![ 22 , 52 , 37 ] ) ;
469- assert_eq ! ( infer_chunk_size( ( 386 , 192 , 444 ) , 2 ) , vec![ 25 , 24 , 56 ] ) ;
470- assert_eq ! ( infer_chunk_size( ( 277 , 161 , 460 ) , 4 ) , vec![ 18 , 21 , 58 ] ) ;
471- assert_eq ! ( infer_chunk_size( ( 314 , 22 , 253 ) , 8 ) , vec![ 40 , 3 , 32 ] ) ;
472- assert_eq ! ( infer_chunk_size( ( 89 , 49 , 91 , 59 ) , 1 ) , vec![ 12 , 13 , 23 , 15 ] ) ;
473- assert_eq ! ( infer_chunk_size( ( 42 , 92 , 60 , 80 ) , 2 ) , vec![ 6 , 12 , 15 , 20 ] ) ;
474- assert_eq ! ( infer_chunk_size( ( 15 , 62 , 62 , 47 ) , 4 ) , vec![ 4 , 16 , 16 , 12 ] ) ;
475- assert_eq ! ( infer_chunk_size( ( 62 , 51 , 55 , 64 ) , 8 ) , vec![ 8 , 7 , 7 , 16 ] ) ;
461+ assert_eq ! ( infer_chunk_size( & ( 65682868 , ) , 1 ) , vec![ 64144 ] ) ;
462+ assert_eq ! ( infer_chunk_size( & ( 56755037 , ) , 2 ) , vec![ 27713 ] ) ;
463+ assert_eq ! ( infer_chunk_size( & ( 56882283 , ) , 4 ) , vec![ 27775 ] ) ;
464+ assert_eq ! ( infer_chunk_size( & ( 21081789 , ) , 8 ) , vec![ 10294 ] ) ;
465+ assert_eq ! ( infer_chunk_size( & ( 5735 , 6266 ) , 1 ) , vec![ 180 , 392 ] ) ;
466+ assert_eq ! ( infer_chunk_size( & ( 467 , 4427 ) , 2 ) , vec![ 30 , 554 ] ) ;
467+ assert_eq ! ( infer_chunk_size( & ( 5579 , 8323 ) , 4 ) , vec![ 88 , 261 ] ) ;
468+ assert_eq ! ( infer_chunk_size( & ( 1686 , 770 ) , 8 ) , vec![ 106 , 49 ] ) ;
469+ assert_eq ! ( infer_chunk_size( & ( 344 , 414 , 294 ) , 1 ) , vec![ 22 , 52 , 37 ] ) ;
470+ assert_eq ! ( infer_chunk_size( & ( 386 , 192 , 444 ) , 2 ) , vec![ 25 , 24 , 56 ] ) ;
471+ assert_eq ! ( infer_chunk_size( & ( 277 , 161 , 460 ) , 4 ) , vec![ 18 , 21 , 58 ] ) ;
472+ assert_eq ! ( infer_chunk_size( & ( 314 , 22 , 253 ) , 8 ) , vec![ 40 , 3 , 32 ] ) ;
473+ assert_eq ! ( infer_chunk_size( & ( 89 , 49 , 91 , 59 ) , 1 ) , vec![ 12 , 13 , 23 , 15 ] ) ;
474+ assert_eq ! ( infer_chunk_size( & ( 42 , 92 , 60 , 80 ) , 2 ) , vec![ 6 , 12 , 15 , 20 ] ) ;
475+ assert_eq ! ( infer_chunk_size( & ( 15 , 62 , 62 , 47 ) , 4 ) , vec![ 4 , 16 , 16 , 12 ] ) ;
476+ assert_eq ! ( infer_chunk_size( & ( 62 , 51 , 55 , 64 ) , 8 ) , vec![ 8 , 7 , 7 , 16 ] ) ;
476477 }
477478
478479 #[ test]
0 commit comments