@@ -207,15 +207,15 @@ impl<S: BoundSided, T: Ord> RangeBound<S, T> {
207207 }
208208}
209209
210- struct OptBound < ' a , S , T > ( & ' a Option < RangeBound < S , T > > ) ;
210+ struct OptBound < ' a , S , T > ( Option < & ' a RangeBound < S , T > > ) ;
211211
212212impl < ' a , S : BoundSided , T : Ord > Ord for OptBound < ' a , S , T > {
213213 fn lt ( & self , other : & OptBound < ' a , S , T > ) -> bool {
214214 match ( * self , * other) {
215- ( OptBound ( & None ) , OptBound ( & None ) ) => false ,
216- ( OptBound ( & None ) , _) => BoundSided :: side ( None :: < S > ) == Lower ,
217- ( _, OptBound ( & None ) ) => BoundSided :: side ( None :: < S > ) == Upper ,
218- ( OptBound ( & Some ( ref a) ) , OptBound ( & Some ( ref b) ) ) => a < b
215+ ( OptBound ( None ) , OptBound ( None ) ) => false ,
216+ ( OptBound ( None ) , _) => BoundSided :: side ( None :: < S > ) == Lower ,
217+ ( _, OptBound ( None ) ) => BoundSided :: side ( None :: < S > ) == Upper ,
218+ ( OptBound ( Some ( a) ) , OptBound ( Some ( b) ) ) => a < b
219219 }
220220 }
221221}
@@ -267,18 +267,18 @@ impl<T: Ord+Normalizable> Range<T> {
267267 }
268268
269269 /// Returns the lower bound if it exists.
270- pub fn lower < ' a > ( & ' a self ) -> & ' a Option < RangeBound < LowerBound , T > > {
270+ pub fn lower < ' a > ( & ' a self ) -> Option < & ' a RangeBound < LowerBound , T > > {
271271 match * self {
272- Empty => & None ,
273- Normal ( ref lower , _ ) => lower
272+ Normal ( Some ( ref lower ) , _ ) => Some ( lower ) ,
273+ _ => None
274274 }
275275 }
276276
277277 /// Returns the upper bound if it exists.
278- pub fn upper < ' a > ( & ' a self ) -> & ' a Option < RangeBound < UpperBound , T > > {
278+ pub fn upper < ' a > ( & ' a self ) -> Option < & ' a RangeBound < UpperBound , T > > {
279279 match * self {
280- Empty => & None ,
281- Normal ( _ , ref upper ) => upper
280+ Normal ( _ , Some ( ref upper ) ) => Some ( upper ) ,
281+ _ => None
282282 }
283283 }
284284
@@ -320,7 +320,7 @@ impl<T: Ord+Normalizable+Clone> Range<T> {
320320 let OptBound ( upper) = cmp:: min ( OptBound ( self . upper ( ) ) ,
321321 OptBound ( other. upper ( ) ) ) ;
322322
323- Range :: new ( lower. clone ( ) , upper. clone ( ) )
323+ Range :: new ( lower. map ( |v| v . clone ( ) ) , upper. map ( |v| v . clone ( ) ) )
324324 }
325325}
326326
@@ -467,7 +467,8 @@ mod test {
467467 assert_eq ! ( r1, ( range!( '(' , ')' ) ) . intersect( & r1) ) ;
468468
469469 let r2 = range ! ( '(' 10i32 , ')' ) ;
470- let exp = Range :: new ( r2. lower ( ) . clone ( ) , r1. upper ( ) . clone ( ) ) ;
470+ let exp = Range :: new ( r2. lower ( ) . map ( |v| v. clone ( ) ) ,
471+ r1. upper ( ) . map ( |v| v. clone ( ) ) ) ;
471472 assert_eq ! ( exp, r1. intersect( & r2) ) ;
472473 assert_eq ! ( exp, r2. intersect( & r1) ) ;
473474
0 commit comments