@@ -62,7 +62,7 @@ use core::any::Any;
62
62
use core:: borrow;
63
63
use core:: cmp:: Ordering ;
64
64
use core:: fmt;
65
- use core:: hash:: { self , Hash } ;
65
+ use core:: hash:: { self , Hash , Hasher } ;
66
66
use core:: iter:: FusedIterator ;
67
67
use core:: marker:: { self , Unsize } ;
68
68
use core:: mem;
@@ -456,6 +456,52 @@ impl<T: ?Sized + Hash> Hash for Box<T> {
456
456
}
457
457
}
458
458
459
+ #[ stable( feature = "indirect_hasher_impl" , since = "1.21.0" ) ]
460
+ impl < T : ?Sized + Hasher > Hasher for Box < T > {
461
+ fn finish ( & self ) -> u64 {
462
+ ( * * self ) . finish ( )
463
+ }
464
+ fn write ( & mut self , bytes : & [ u8 ] ) {
465
+ ( * * self ) . write ( bytes)
466
+ }
467
+ fn write_u8 ( & mut self , i : u8 ) {
468
+ ( * * self ) . write_u8 ( i)
469
+ }
470
+ fn write_u16 ( & mut self , i : u16 ) {
471
+ ( * * self ) . write_u16 ( i)
472
+ }
473
+ fn write_u32 ( & mut self , i : u32 ) {
474
+ ( * * self ) . write_u32 ( i)
475
+ }
476
+ fn write_u64 ( & mut self , i : u64 ) {
477
+ ( * * self ) . write_u64 ( i)
478
+ }
479
+ fn write_u128 ( & mut self , i : u128 ) {
480
+ ( * * self ) . write_u128 ( i)
481
+ }
482
+ fn write_usize ( & mut self , i : usize ) {
483
+ ( * * self ) . write_usize ( i)
484
+ }
485
+ fn write_i8 ( & mut self , i : i8 ) {
486
+ ( * * self ) . write_i8 ( i)
487
+ }
488
+ fn write_i16 ( & mut self , i : i16 ) {
489
+ ( * * self ) . write_i16 ( i)
490
+ }
491
+ fn write_i32 ( & mut self , i : i32 ) {
492
+ ( * * self ) . write_i32 ( i)
493
+ }
494
+ fn write_i64 ( & mut self , i : i64 ) {
495
+ ( * * self ) . write_i64 ( i)
496
+ }
497
+ fn write_i128 ( & mut self , i : i128 ) {
498
+ ( * * self ) . write_i128 ( i)
499
+ }
500
+ fn write_isize ( & mut self , i : isize ) {
501
+ ( * * self ) . write_isize ( i)
502
+ }
503
+ }
504
+
459
505
#[ stable( feature = "from_for_ptrs" , since = "1.6.0" ) ]
460
506
impl < T > From < T > for Box < T > {
461
507
fn from ( t : T ) -> Self {
0 commit comments