@@ -25,11 +25,10 @@ use std::ops::{RangeBounds, Bound, Index, IndexMut};
2525#[ derive( Clone , PartialEq , Eq , PartialOrd , Ord , Hash , Default , Debug , RustcEncodable ,
2626 RustcDecodable ) ]
2727pub struct SortedMap < K : Ord , V > {
28- data : Vec < ( K , V ) >
28+ data : Vec < ( K , V ) >
2929}
3030
3131impl < K : Ord , V > SortedMap < K , V > {
32-
3332 #[ inline]
3433 pub fn new ( ) -> SortedMap < K , V > {
3534 SortedMap {
@@ -128,13 +127,13 @@ impl<K: Ord, V> SortedMap<K, V> {
128127
129128 /// Iterate over the keys, sorted
130129 #[ inline]
131- pub fn keys ( & self ) -> impl Iterator < Item = & K > + ExactSizeIterator {
130+ pub fn keys ( & self ) -> impl Iterator < Item = & K > + ExactSizeIterator {
132131 self . data . iter ( ) . map ( |& ( ref k, _) | k)
133132 }
134133
135134 /// Iterate over values, sorted by key
136135 #[ inline]
137- pub fn values ( & self ) -> impl Iterator < Item = & V > + ExactSizeIterator {
136+ pub fn values ( & self ) -> impl Iterator < Item = & V > + ExactSizeIterator {
138137 self . data . iter ( ) . map ( |& ( _, ref v) | v)
139138 }
140139
@@ -266,6 +265,7 @@ impl<K: Ord, V> SortedMap<K, V> {
266265impl < K : Ord , V > IntoIterator for SortedMap < K , V > {
267266 type Item = ( K , V ) ;
268267 type IntoIter = :: std:: vec:: IntoIter < ( K , V ) > ;
268+
269269 fn into_iter ( self ) -> Self :: IntoIter {
270270 self . data . into_iter ( )
271271 }
@@ -294,10 +294,12 @@ impl<'a, K, Q, V> IndexMut<&'a Q> for SortedMap<K, V>
294294impl < K : Ord , V > FromIterator < ( K , V ) > for SortedMap < K , V > {
295295 fn from_iter < T : IntoIterator < Item = ( K , V ) > > ( iter : T ) -> Self {
296296 let mut data: Vec < ( K , V ) > = iter. into_iter ( ) . collect ( ) ;
297+
297298 data. sort_unstable_by ( |& ( ref k1, _) , & ( ref k2, _) | k1. cmp ( k2) ) ;
298299 data. dedup_by ( |& mut ( ref k1, _) , & mut ( ref k2, _) | {
299300 k1. cmp ( k2) == Ordering :: Equal
300301 } ) ;
302+
301303 SortedMap {
302304 data
303305 }
0 commit comments