@@ -62,6 +62,7 @@ use clone::Clone;
62
62
use cmp;
63
63
use cmp:: Ord ;
64
64
use default:: Default ;
65
+ use marker;
65
66
use mem;
66
67
use num:: { ToPrimitive , Int } ;
67
68
use ops:: { Add , Deref , FnMut } ;
@@ -947,7 +948,7 @@ pub trait IteratorExt: Iterator + Sized {
947
948
FromB : Default + Extend < B > ,
948
949
Self : Iterator < Item =( A , B ) > ,
949
950
{
950
- struct SizeHint < A > ( usize , Option < usize > ) ;
951
+ struct SizeHint < A > ( usize , Option < usize > , marker :: PhantomData < A > ) ;
951
952
impl < A > Iterator for SizeHint < A > {
952
953
type Item = A ;
953
954
@@ -961,8 +962,8 @@ pub trait IteratorExt: Iterator + Sized {
961
962
let mut ts: FromA = Default :: default ( ) ;
962
963
let mut us: FromB = Default :: default ( ) ;
963
964
964
- ts. extend ( SizeHint ( lo, hi) ) ;
965
- us. extend ( SizeHint ( lo, hi) ) ;
965
+ ts. extend ( SizeHint ( lo, hi, marker :: PhantomData ) ) ;
966
+ us. extend ( SizeHint ( lo, hi, marker :: PhantomData ) ) ;
966
967
967
968
for ( t, u) in self {
968
969
ts. extend ( Some ( t) . into_iter ( ) ) ;
@@ -2047,8 +2048,8 @@ pub struct Scan<I, St, F> {
2047
2048
}
2048
2049
2049
2050
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
2050
- impl < B , I : Iterator , St , F > Iterator for Scan < I , St , F > where
2051
- F : FnMut ( & mut St , I :: Item ) -> Option < B > ,
2051
+ impl < A , B , I : Iterator < Item = A > , St , F > Iterator for Scan < I , St , F > where
2052
+ F : FnMut ( & mut St , A ) -> Option < B > ,
2052
2053
{
2053
2054
type Item = B ;
2054
2055
0 commit comments