@@ -104,6 +104,20 @@ pub(super) struct COVER_best_t {
104104 pub ( super ) compressedSize : size_t ,
105105}
106106
107+ impl COVER_best_t {
108+ pub ( crate ) fn new ( ) -> Self {
109+ Self {
110+ mutex : Mutex :: new ( ( ) ) ,
111+ cond : Condvar :: new ( ) ,
112+ liveJobs : 0 ,
113+ dict : Box :: default ( ) ,
114+ dictSize : 0 ,
115+ compressedSize : -( 1 as core:: ffi:: c_int ) as size_t ,
116+ parameters : ZDICT_cover_params_t :: default ( ) ,
117+ }
118+ }
119+ }
120+
107121#[ repr( C ) ]
108122struct COVER_tryParameters_data_t < ' a , ' b > {
109123 ctx : & ' b COVER_ctx_t < ' a > ,
@@ -942,14 +956,6 @@ pub(super) fn COVER_checkTotalCompressedSize(
942956 totalCompressedSize
943957}
944958
945- pub ( super ) fn COVER_best_init ( best : & mut COVER_best_t ) {
946- best. liveJobs = 0 ;
947- best. dict = Box :: default ( ) ;
948- best. dictSize = 0 ;
949- best. compressedSize = -( 1 as core:: ffi:: c_int ) as size_t ;
950- best. parameters = ZDICT_cover_params_t :: default ( ) ;
951- }
952-
953959pub ( super ) fn COVER_best_wait ( best : & mut COVER_best_t ) {
954960 let mut guard = best. mutex . lock ( ) . unwrap ( ) ;
955961 #[ expect( clippy:: while_immutable_condition) ]
@@ -1232,15 +1238,6 @@ pub unsafe extern "C" fn ZDICT_optimizeTrainFromBuffer_cover(
12321238 let shrinkDict = 0 as core:: ffi:: c_uint ;
12331239 let displayLevel = ( * parameters) . zParams . notificationLevel as core:: ffi:: c_int ;
12341240 let mut iteration = 1 as core:: ffi:: c_uint ;
1235- let mut best = COVER_best_t {
1236- mutex : Mutex :: new ( ( ) ) ,
1237- cond : Condvar :: new ( ) ,
1238- liveJobs : 0 ,
1239- dict : Box :: default ( ) ,
1240- dictSize : 0 ,
1241- parameters : ZDICT_cover_params_t :: default ( ) ,
1242- compressedSize : 0 ,
1243- } ;
12441241 let mut pool = core:: ptr:: null_mut ( ) ;
12451242 let mut warned = 0 ;
12461243 let mut lastUpdateTime = 0 ;
@@ -1274,11 +1271,24 @@ pub unsafe extern "C" fn ZDICT_optimizeTrainFromBuffer_cover(
12741271 return Error :: memory_allocation. to_error_code ( ) ;
12751272 }
12761273 }
1277- COVER_best_init ( & mut best) ;
12781274 if displayLevel >= 2 {
12791275 eprintln ! ( "Trying {} different sets of parameters" , kIterations) ;
12801276 }
12811277
1278+ let samplesSizes = if samplesSizes. is_null ( ) || nbSamples == 0 {
1279+ & [ ]
1280+ } else {
1281+ core:: slice:: from_raw_parts ( samplesSizes, nbSamples as usize )
1282+ } ;
1283+ let totalSamplesSize = samplesSizes. iter ( ) . sum :: < usize > ( ) ;
1284+ let samples = if samplesBuffer. is_null ( ) || totalSamplesSize == 0 {
1285+ & [ ]
1286+ } else {
1287+ core:: slice:: from_raw_parts ( samplesBuffer. cast :: < u8 > ( ) , totalSamplesSize)
1288+ } ;
1289+
1290+ let mut best = COVER_best_t :: new ( ) ;
1291+
12821292 for d in ( kMinD..=kMaxD) . step_by ( 2 ) {
12831293 let mut ctx = COVER_ctx_t :: default ( ) ;
12841294 if displayLevel >= 3 {
@@ -1290,18 +1300,6 @@ pub unsafe extern "C" fn ZDICT_optimizeTrainFromBuffer_cover(
12901300 displayLevel - 1
12911301 } ;
12921302
1293- let samplesSizes = if samplesSizes. is_null ( ) || nbSamples == 0 {
1294- & [ ]
1295- } else {
1296- core:: slice:: from_raw_parts ( samplesSizes, nbSamples as usize )
1297- } ;
1298- let totalSamplesSize = samplesSizes. iter ( ) . sum :: < usize > ( ) ;
1299- let samples = if samplesBuffer. is_null ( ) || totalSamplesSize == 0 {
1300- & [ ]
1301- } else {
1302- core:: slice:: from_raw_parts ( samplesBuffer. cast :: < u8 > ( ) , totalSamplesSize)
1303- } ;
1304-
13051303 let initVal = COVER_ctx_init (
13061304 & mut ctx,
13071305 samples,
0 commit comments