@@ -199,6 +199,7 @@ mod ziggurat_tables;
199
199
/// * `pdf`: the probability density function
200
200
/// * `zero_case`: manual sampling from the tail when we chose the
201
201
/// bottom box (i.e. i == 0)
202
+
202
203
// the perf improvement (25-50%) is definitely worth the extra code
203
204
// size from force-inlining.
204
205
#[ inline( always) ]
@@ -297,6 +298,7 @@ mod tests {
297
298
assert_eq ! ( rand_sample. ind_sample( & mut :: test:: rng( ) ) , ConstRand ( 0 ) ) ;
298
299
}
299
300
#[ test]
301
+ #[ rustfmt_skip]
300
302
fn test_weighted_choice ( ) {
301
303
// this makes assumptions about the internal implementation of
302
304
// WeightedChoice, specifically: it doesn't reorder the items,
@@ -317,94 +319,37 @@ mod tests {
317
319
} }
318
320
}
319
321
320
- t ! ( vec!( Weighted {
321
- weight: 1 ,
322
- item: 10 ,
323
- } ) ,
322
+ t ! ( vec!( Weighted { weight: 1 , item: 10 } ) ,
324
323
[ 10 ] ) ;
325
324
326
325
// skip some
327
- t ! ( vec!( Weighted {
328
- weight: 0 ,
329
- item: 20 ,
330
- } ,
331
- Weighted {
332
- weight: 2 ,
333
- item: 21 ,
334
- } ,
335
- Weighted {
336
- weight: 0 ,
337
- item: 22 ,
338
- } ,
339
- Weighted {
340
- weight: 1 ,
341
- item: 23 ,
342
- } ) ,
326
+ t ! ( vec!( Weighted { weight: 0 , item: 20 } ,
327
+ Weighted { weight: 2 , item: 21 } ,
328
+ Weighted { weight: 0 , item: 22 } ,
329
+ Weighted { weight: 1 , item: 23 } ) ,
343
330
[ 21 , 21 , 23 ] ) ;
344
331
345
332
// different weights
346
- t ! ( vec!( Weighted {
347
- weight: 4 ,
348
- item: 30 ,
349
- } ,
350
- Weighted {
351
- weight: 3 ,
352
- item: 31 ,
353
- } ) ,
333
+ t ! ( vec!( Weighted { weight: 4 , item: 30 } ,
334
+ Weighted { weight: 3 , item: 31 } ) ,
354
335
[ 30 , 30 , 30 , 30 , 31 , 31 , 31 ] ) ;
355
336
356
337
// check that we're binary searching
357
338
// correctly with some vectors of odd
358
339
// length.
359
- t ! ( vec!( Weighted {
360
- weight: 1 ,
361
- item: 40 ,
362
- } ,
363
- Weighted {
364
- weight: 1 ,
365
- item: 41 ,
366
- } ,
367
- Weighted {
368
- weight: 1 ,
369
- item: 42 ,
370
- } ,
371
- Weighted {
372
- weight: 1 ,
373
- item: 43 ,
374
- } ,
375
- Weighted {
376
- weight: 1 ,
377
- item: 44 ,
378
- } ) ,
340
+ t ! ( vec!( Weighted { weight: 1 , item: 40 } ,
341
+ Weighted { weight: 1 , item: 41 } ,
342
+ Weighted { weight: 1 , item: 42 } ,
343
+ Weighted { weight: 1 , item: 43 } ,
344
+ Weighted { weight: 1 , item: 44 } ) ,
379
345
[ 40 , 41 , 42 , 43 , 44 ] ) ;
380
- t ! ( vec!( Weighted {
381
- weight: 1 ,
382
- item: 50 ,
383
- } ,
384
- Weighted {
385
- weight: 1 ,
386
- item: 51 ,
387
- } ,
388
- Weighted {
389
- weight: 1 ,
390
- item: 52 ,
391
- } ,
392
- Weighted {
393
- weight: 1 ,
394
- item: 53 ,
395
- } ,
396
- Weighted {
397
- weight: 1 ,
398
- item: 54 ,
399
- } ,
400
- Weighted {
401
- weight: 1 ,
402
- item: 55 ,
403
- } ,
404
- Weighted {
405
- weight: 1 ,
406
- item: 56 ,
407
- } ) ,
346
+ t ! ( vec!( Weighted { weight: 1 , item: 50 } ,
347
+ Weighted { weight: 1 , item: 51 } ,
348
+ Weighted { weight: 1 , item: 52 } ,
349
+ Weighted { weight: 1 , item: 53 } ,
350
+ Weighted { weight: 1 , item: 54 } ,
351
+ Weighted { weight: 1 , item: 55 } ,
352
+ Weighted { weight: 1 , item: 56 } ) ,
408
353
[ 50 , 51 , 52 , 53 , 54 , 55 , 56 ] ) ;
409
354
}
410
355
@@ -415,35 +360,19 @@ mod tests {
415
360
}
416
361
#[ test]
417
362
#[ should_panic]
363
+ #[ rustfmt_skip]
418
364
fn test_weighted_choice_zero_weight ( ) {
419
- WeightedChoice :: new ( & mut [ Weighted {
420
- weight : 0 ,
421
- item : 0 ,
422
- } ,
423
- Weighted {
424
- weight : 0 ,
425
- item : 1 ,
426
- } ] ) ;
365
+ WeightedChoice :: new ( & mut [ Weighted { weight : 0 , item : 0 } ,
366
+ Weighted { weight : 0 , item : 1 } ] ) ;
427
367
}
428
368
#[ test]
429
369
#[ should_panic]
370
+ #[ rustfmt_skip]
430
371
fn test_weighted_choice_weight_overflows ( ) {
431
372
let x = ( !0 ) as usize / 2 ; // x + x + 2 is the overflow
432
- WeightedChoice :: new ( & mut [ Weighted {
433
- weight : x,
434
- item : 0 ,
435
- } ,
436
- Weighted {
437
- weight : 1 ,
438
- item : 1 ,
439
- } ,
440
- Weighted {
441
- weight : x,
442
- item : 2 ,
443
- } ,
444
- Weighted {
445
- weight : 1 ,
446
- item : 3 ,
447
- } ] ) ;
373
+ WeightedChoice :: new ( & mut [ Weighted { weight : x, item : 0 } ,
374
+ Weighted { weight : 1 , item : 1 } ,
375
+ Weighted { weight : x, item : 2 } ,
376
+ Weighted { weight : 1 , item : 3 } ] ) ;
448
377
}
449
378
}
0 commit comments