@@ -3171,7 +3171,6 @@ mod test_map {
3171
3171
use super :: DefaultHashBuilder ;
3172
3172
use super :: Entry :: { Occupied , Vacant } ;
3173
3173
use super :: { HashMap , RawEntryMut } ;
3174
- use crate :: TryReserveError :: * ;
3175
3174
use rand:: { rngs:: SmallRng , Rng , SeedableRng } ;
3176
3175
use std:: cell:: RefCell ;
3177
3176
use std:: usize;
@@ -4327,11 +4326,11 @@ mod test_map {
4327
4326
let key = "hello there" ;
4328
4327
let value = "value goes here" ;
4329
4328
assert ! ( a. is_empty( ) ) ;
4330
- a. insert ( key. clone ( ) , value. clone ( ) ) ;
4329
+ a. insert ( key, value) ;
4331
4330
assert_eq ! ( a. len( ) , 1 ) ;
4332
4331
assert_eq ! ( a[ key] , value) ;
4333
4332
4334
- match a. entry ( key. clone ( ) ) {
4333
+ match a. entry ( key) {
4335
4334
Vacant ( _) => panic ! ( ) ,
4336
4335
Occupied ( e) => assert_eq ! ( key, * e. key( ) ) ,
4337
4336
}
@@ -4346,11 +4345,11 @@ mod test_map {
4346
4345
let value = "value goes here" ;
4347
4346
4348
4347
assert ! ( a. is_empty( ) ) ;
4349
- match a. entry ( key. clone ( ) ) {
4348
+ match a. entry ( key) {
4350
4349
Occupied ( _) => panic ! ( ) ,
4351
4350
Vacant ( e) => {
4352
4351
assert_eq ! ( key, * e. key( ) ) ;
4353
- e. insert ( value. clone ( ) ) ;
4352
+ e. insert ( value) ;
4354
4353
}
4355
4354
}
4356
4355
assert_eq ! ( a. len( ) , 1 ) ;
@@ -4446,102 +4445,6 @@ mod test_map {
4446
4445
}
4447
4446
}
4448
4447
4449
- #[ test]
4450
- #[ cfg_attr( miri, ignore) ] // FIXME: no OOM signalling (https://github.com/rust-lang/miri/issues/613)
4451
- fn test_try_reserve ( ) {
4452
- let mut empty_bytes: HashMap < u8 , u8 > = HashMap :: new ( ) ;
4453
-
4454
- const MAX_USIZE : usize = usize:: MAX ;
4455
-
4456
- if let Err ( CapacityOverflow ) = empty_bytes. try_reserve ( MAX_USIZE ) {
4457
- } else {
4458
- panic ! ( "usize::MAX should trigger an overflow!" ) ;
4459
- }
4460
-
4461
- if let Err ( AllocError { .. } ) = empty_bytes. try_reserve ( MAX_USIZE / 8 ) {
4462
- } else {
4463
- // This may succeed if there is enough free memory. Attempt to
4464
- // allocate a second hashmap to ensure the allocation will fail.
4465
- let mut empty_bytes2: HashMap < u8 , u8 > = HashMap :: new ( ) ;
4466
- if let Err ( AllocError { .. } ) = empty_bytes2. try_reserve ( MAX_USIZE / 8 ) {
4467
- } else {
4468
- panic ! ( "usize::MAX / 8 should trigger an OOM!" ) ;
4469
- }
4470
- }
4471
- }
4472
-
4473
- #[ test]
4474
- #[ cfg( feature = "raw" ) ]
4475
- fn test_into_iter_refresh ( ) {
4476
- use core:: hash:: { BuildHasher , Hash , Hasher } ;
4477
-
4478
- #[ cfg( miri) ]
4479
- const N : usize = 32 ;
4480
- #[ cfg( not( miri) ) ]
4481
- const N : usize = 128 ;
4482
-
4483
- let mut rng = rand:: thread_rng ( ) ;
4484
- for n in 0 ..N {
4485
- let mut m = HashMap :: new ( ) ;
4486
- for i in 0 ..n {
4487
- assert ! ( m. insert( i, 2 * i) . is_none( ) ) ;
4488
- }
4489
- let hasher = m. hasher ( ) . clone ( ) ;
4490
-
4491
- let mut it = unsafe { m. table . iter ( ) } ;
4492
- assert_eq ! ( it. len( ) , n) ;
4493
-
4494
- let mut i = 0 ;
4495
- let mut left = n;
4496
- let mut removed = Vec :: new ( ) ;
4497
- loop {
4498
- // occasionally remove some elements
4499
- if i < n && rng. gen_bool ( 0.1 ) {
4500
- let mut hsh = hasher. build_hasher ( ) ;
4501
- i. hash ( & mut hsh) ;
4502
- let hash = hsh. finish ( ) ;
4503
-
4504
- unsafe {
4505
- let e = m. table . find ( hash, |q| q. 0 . eq ( & i) ) ;
4506
- if let Some ( e) = e {
4507
- it. reflect_remove ( & e) ;
4508
- let t = m. table . remove ( e) ;
4509
- removed. push ( t) ;
4510
- left -= 1 ;
4511
- } else {
4512
- assert ! ( removed. contains( & ( i, 2 * i) ) , "{} not in {:?}" , i, removed) ;
4513
- let e = m. table . insert (
4514
- hash,
4515
- ( i, 2 * i) ,
4516
- super :: make_hasher :: < usize , _ , _ , _ > ( & hasher) ,
4517
- ) ;
4518
- it. reflect_insert ( & e) ;
4519
- if let Some ( p) = removed. iter ( ) . position ( |e| e == & ( i, 2 * i) ) {
4520
- removed. swap_remove ( p) ;
4521
- }
4522
- left += 1 ;
4523
- }
4524
- }
4525
- }
4526
-
4527
- let e = it. next ( ) ;
4528
- if e. is_none ( ) {
4529
- break ;
4530
- }
4531
- assert ! ( i < n) ;
4532
- let t = unsafe { e. unwrap ( ) . as_ref ( ) } ;
4533
- assert ! ( !removed. contains( t) ) ;
4534
- let ( k, v) = t;
4535
- assert_eq ! ( * v, 2 * k) ;
4536
- i += 1 ;
4537
- }
4538
- assert ! ( i <= n) ;
4539
-
4540
- // just for safety:
4541
- assert_eq ! ( m. table. len( ) , left) ;
4542
- }
4543
- }
4544
-
4545
4448
#[ test]
4546
4449
fn test_raw_entry ( ) {
4547
4450
use super :: RawEntryMut :: { Occupied , Vacant } ;
0 commit comments