9
9
// except according to those terms.
10
10
11
11
use std:: alloc:: { handle_alloc_error, Alloc , Global , Layout , LayoutErr } ;
12
- use std:: collections:: CollectionAllocErr ;
12
+ use std:: collections:: TryReserveError ;
13
13
use std:: hash:: { BuildHasher , Hash , Hasher } ;
14
14
use std:: marker;
15
15
use std:: mem;
@@ -679,7 +679,7 @@ impl<K, V> RawTable<K, V> {
679
679
unsafe fn new_uninitialized_internal (
680
680
capacity : usize ,
681
681
fallibility : Fallibility ,
682
- ) -> Result < RawTable < K , V > , CollectionAllocErr > {
682
+ ) -> Result < RawTable < K , V > , TryReserveError > {
683
683
if capacity == 0 {
684
684
return Ok ( RawTable {
685
685
size : 0 ,
@@ -694,10 +694,16 @@ impl<K, V> RawTable<K, V> {
694
694
// we just allocate a single array, and then have the subarrays
695
695
// point into it.
696
696
let ( layout, _) = calculate_layout :: < K , V > ( capacity) ?;
697
- let buffer = Global . alloc ( layout) . map_err ( |e| match fallibility {
698
- Infallible => handle_alloc_error ( layout) ,
699
- Fallible => e,
700
- } ) ?;
697
+ let buffer = Global
698
+ . alloc ( layout)
699
+ . map_err ( |e| match fallibility {
700
+ Infallible => handle_alloc_error ( layout) ,
701
+ Fallible => e,
702
+ } )
703
+ . map_err ( |_alloc_err| TryReserveError :: AllocError {
704
+ layout : layout,
705
+ non_exhaustive : ( ) ,
706
+ } ) ?;
701
707
702
708
Ok ( RawTable {
703
709
capacity_mask : capacity. wrapping_sub ( 1 ) ,
@@ -711,8 +717,8 @@ impl<K, V> RawTable<K, V> {
711
717
/// at the very least, set every hash to EMPTY_BUCKET.
712
718
unsafe fn new_uninitialized ( capacity : usize ) -> RawTable < K , V > {
713
719
match Self :: new_uninitialized_internal ( capacity, Infallible ) {
714
- Err ( CollectionAllocErr :: CapacityOverflow ) => panic ! ( "capacity overflow" ) ,
715
- Err ( CollectionAllocErr :: AllocErr ) => unreachable ! ( ) ,
720
+ Err ( TryReserveError :: CapacityOverflow ) => panic ! ( "capacity overflow" ) ,
721
+ Err ( TryReserveError :: AllocError { .. } ) => unreachable ! ( ) ,
716
722
Ok ( table) => table,
717
723
}
718
724
}
@@ -733,7 +739,7 @@ impl<K, V> RawTable<K, V> {
733
739
fn new_internal (
734
740
capacity : usize ,
735
741
fallibility : Fallibility ,
736
- ) -> Result < RawTable < K , V > , CollectionAllocErr > {
742
+ ) -> Result < RawTable < K , V > , TryReserveError > {
737
743
unsafe {
738
744
let ret = RawTable :: new_uninitialized_internal ( capacity, fallibility) ?;
739
745
if capacity > 0 {
@@ -744,18 +750,18 @@ impl<K, V> RawTable<K, V> {
744
750
}
745
751
746
752
/// Tries to create a new raw table from a given capacity. If it cannot allocate,
747
- /// it returns with AllocErr .
753
+ /// it returns with AllocError .
748
754
#[ allow( unused) ]
749
- pub fn try_new ( capacity : usize ) -> Result < RawTable < K , V > , CollectionAllocErr > {
755
+ pub fn try_new ( capacity : usize ) -> Result < RawTable < K , V > , TryReserveError > {
750
756
Self :: new_internal ( capacity, Fallible )
751
757
}
752
758
753
759
/// Creates a new raw table from a given capacity. All buckets are
754
760
/// initially empty.
755
761
pub fn new ( capacity : usize ) -> RawTable < K , V > {
756
762
match Self :: new_internal ( capacity, Infallible ) {
757
- Err ( CollectionAllocErr :: CapacityOverflow ) => panic ! ( "capacity overflow" ) ,
758
- Err ( CollectionAllocErr :: AllocErr ) => unreachable ! ( ) ,
763
+ Err ( TryReserveError :: CapacityOverflow ) => panic ! ( "capacity overflow" ) ,
764
+ Err ( TryReserveError :: AllocError { .. } ) => unreachable ! ( ) ,
759
765
Ok ( table) => table,
760
766
}
761
767
}
0 commit comments