File tree Expand file tree Collapse file tree 3 files changed +6
-7
lines changed Expand file tree Collapse file tree 3 files changed +6
-7
lines changed Original file line number Diff line number Diff line change @@ -497,7 +497,8 @@ impl BooleanArray {
497497 /// # Safety
498498 ///
499499 /// The iterator must be [`TrustedLen`](https://doc.rust-lang.org/std/iter/trait.TrustedLen.html).
500- /// I.e. that `size_hint().1` correctly reports its length.
500+ /// I.e. that `size_hint().1` correctly reports its length. Note that this is a stronger
501+ /// guarantee that `ExactSizeIterator` provides which could still report a wrong length.
501502 ///
502503 /// # Panics
503504 ///
@@ -506,11 +507,9 @@ impl BooleanArray {
506507 pub unsafe fn from_trusted_len_iter < I , P > ( iter : I ) -> Self
507508 where
508509 P : Into < BooleanAdapter > ,
509- I : IntoIterator < Item = P > ,
510+ I : ExactSizeIterator < Item = P > ,
510511 {
511- let iter = iter. into_iter ( ) ;
512- let ( _, data_len) = iter. size_hint ( ) ;
513- let data_len = data_len. expect ( "Iterator must be sized" ) ;
512+ let data_len = iter. len ( ) ;
514513
515514 let num_bytes = bit_util:: ceil ( data_len, 8 ) ;
516515 let mut null_builder = MutableBuffer :: from_len_zeroed ( num_bytes) ;
Original file line number Diff line number Diff line change @@ -237,7 +237,7 @@ impl Extend<Option<bool>> for BooleanBuilder {
237237 let buffered = iter. into_iter ( ) . collect :: < Vec < _ > > ( ) ;
238238 let array = unsafe {
239239 // SAFETY: buffered.into_iter() is a trusted length iterator
240- BooleanArray :: from_trusted_len_iter ( buffered)
240+ BooleanArray :: from_trusted_len_iter ( buffered. into_iter ( ) )
241241 } ;
242242 self . append_array ( & array)
243243 }
Original file line number Diff line number Diff line change @@ -209,7 +209,7 @@ fn array_from_vec_benchmark(c: &mut Criterion) {
209209fn gen_option_iter < TItem : Clone + ' static > (
210210 item : TItem ,
211211 len : usize ,
212- ) -> Box < dyn Iterator < Item = Option < TItem > > > {
212+ ) -> Box < dyn ExactSizeIterator < Item = Option < TItem > > > {
213213 hint:: black_box ( Box :: new ( repeat_n ( item, len) . enumerate ( ) . map (
214214 |( idx, item) | {
215215 if idx % 3 == 0 {
You can’t perform that action at this time.
0 commit comments