1
+ use core:: alloc:: { self , Allocator } ;
1
2
use core:: mem:: ManuallyDrop ;
2
3
use core:: ptr:: { self } ;
3
- use crate :: Global ;
4
- use crate :: DEFAULT_COOP_PREFERRED ;
5
4
6
5
use super :: { IntoIter , SpecExtend , SpecFromIterNested , Vec } ;
7
6
@@ -28,17 +27,21 @@ pub(super) trait SpecFromIter<T, I> {
28
27
}
29
28
30
29
#[ allow( unused_braces) ]
31
- impl < T , I > SpecFromIter < T , I > for Vec < T , Global , { DEFAULT_COOP_PREFERRED ! ( ) } >
30
+ impl < T , I , A : Allocator , const COOP_PREFERRED : bool > SpecFromIter < T , I > for Vec < T , A , COOP_PREFERRED >
32
31
where
33
32
I : Iterator < Item = T > ,
33
+ [ ( ) ; alloc:: co_alloc_metadata_num_slots_with_preference :: < A > ( COOP_PREFERRED ) ] : ,
34
34
{
35
35
default fn from_iter ( iterator : I ) -> Self {
36
36
SpecFromIterNested :: from_iter ( iterator)
37
37
}
38
38
}
39
39
40
40
#[ allow( unused_braces) ]
41
- impl < T > SpecFromIter < T , IntoIter < T > > for Vec < T , Global , { DEFAULT_COOP_PREFERRED ! ( ) } > {
41
+ impl < T , A : Allocator , const COOP_PREFERRED : bool > SpecFromIter < T , IntoIter < T > > for Vec < T , A , COOP_PREFERRED >
42
+ where
43
+ [ ( ) ; alloc:: co_alloc_metadata_num_slots_with_preference :: < A > ( COOP_PREFERRED ) ] : ,
44
+ {
42
45
fn from_iter ( iterator : IntoIter < T > ) -> Self {
43
46
// A common case is passing a vector into a function which immediately
44
47
// re-collects into a vector. We can short circuit this if the IntoIter
0 commit comments