@@ -133,7 +133,7 @@ bounded_normalizable!(i32)
133133bounded_normalizable ! ( i64 )
134134
135135/// The possible sides of a bound
136- #[ deriving( PartialEq , Eq ) ]
136+ #[ deriving( PartialEq , Eq , Copy ) ]
137137pub enum BoundSide {
138138 /// An upper bound
139139 Upper ,
@@ -150,9 +150,11 @@ pub trait BoundSided {
150150}
151151
152152/// A tag type representing an upper bound
153+ #[ allow( missing_copy_implementations) ]
153154pub enum UpperBound { }
154155
155156/// A tag type representing a lower bound
157+ #[ allow( missing_copy_implementations) ]
156158pub enum LowerBound { }
157159
158160impl BoundSided for UpperBound {
@@ -168,7 +170,7 @@ impl BoundSided for LowerBound {
168170}
169171
170172/// The type of a range bound
171- #[ deriving( PartialEq , Eq , Clone ) ]
173+ #[ deriving( PartialEq , Eq , Clone , Copy ) ]
172174pub enum BoundType {
173175 /// The bound includes its value
174176 Inclusive ,
@@ -186,6 +188,8 @@ pub struct RangeBound<S: BoundSided, T> {
186188 pub type_ : BoundType
187189}
188190
191+ impl < S , T > Copy for RangeBound < S , T > where S : BoundSided , T : Copy { }
192+
189193impl < S , T > Clone for RangeBound < S , T > where S : BoundSided , T : Clone {
190194 fn clone ( & self ) -> RangeBound < S , T > {
191195 RangeBound {
@@ -280,24 +284,24 @@ impl<'a, S, T> PartialEq for OptBound<'a, S, T> where S: BoundSided, T: PartialE
280284
281285impl < ' a , S , T > PartialOrd for OptBound < ' a , S , T > where S : BoundSided , T : PartialOrd {
282286 fn partial_cmp ( & self , other : & OptBound < ' a , S , T > ) -> Option < Ordering > {
283- match ( * self , * other, BoundSided :: side ( None :: < S > ) ) {
284- ( OptBound ( None ) , OptBound ( None ) , _) => Some ( Equal ) ,
285- ( OptBound ( None ) , _, Lower )
286- | ( _, OptBound ( None ) , Upper ) => Some ( Less ) ,
287- ( OptBound ( None ) , _, Upper )
288- | ( _, OptBound ( None ) , Lower ) => Some ( Greater ) ,
289- ( OptBound ( Some ( a) ) , OptBound ( Some ( b) ) , _) => a. partial_cmp ( b)
287+ match ( self , other, BoundSided :: side ( None :: < S > ) ) {
288+ ( & OptBound ( None ) , & OptBound ( None ) , _) => Some ( Equal ) ,
289+ ( & OptBound ( None ) , _, Lower )
290+ | ( _, & OptBound ( None ) , Upper ) => Some ( Less ) ,
291+ ( & OptBound ( None ) , _, Upper )
292+ | ( _, & OptBound ( None ) , Lower ) => Some ( Greater ) ,
293+ ( & OptBound ( Some ( a) ) , & OptBound ( Some ( b) ) , _) => a. partial_cmp ( b)
290294 }
291295 }
292296}
293297
294298/// Represents a range of values.
295- #[ deriving( PartialEq , Eq , Clone ) ]
299+ #[ deriving( PartialEq , Eq , Clone , Copy ) ]
296300pub struct Range < T > {
297301 inner : InnerRange < T > ,
298302}
299303
300- #[ deriving( PartialEq , Eq , Clone ) ]
304+ #[ deriving( PartialEq , Eq , Clone , Copy ) ]
301305enum InnerRange < T > {
302306 Empty ,
303307 Normal ( Option < RangeBound < LowerBound , T > > ,
0 commit comments