Skip to content

Commit 6076cf6

Browse files
author
Stjepan Glavina
committed
Remove T: Ord bound from BTreeSet::{is_empty, len}
1 parent 8d1a302 commit 6076cf6

File tree

1 file changed

+68
-72
lines changed

1 file changed

+68
-72
lines changed

src/liballoc/btree/set.rs

+68-72
Original file line numberDiff line numberDiff line change
@@ -228,43 +228,7 @@ impl<T: Ord> BTreeSet<T> {
228228
pub fn new() -> BTreeSet<T> {
229229
BTreeSet { map: BTreeMap::new() }
230230
}
231-
}
232-
233-
impl<T> BTreeSet<T> {
234-
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
235-
///
236-
/// # Examples
237-
///
238-
/// ```
239-
/// use std::collections::BTreeSet;
240-
///
241-
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
242-
/// let mut set_iter = set.iter();
243-
/// assert_eq!(set_iter.next(), Some(&1));
244-
/// assert_eq!(set_iter.next(), Some(&2));
245-
/// assert_eq!(set_iter.next(), Some(&3));
246-
/// assert_eq!(set_iter.next(), None);
247-
/// ```
248-
///
249-
/// Values returned by the iterator are returned in ascending order:
250-
///
251-
/// ```
252-
/// use std::collections::BTreeSet;
253-
///
254-
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
255-
/// let mut set_iter = set.iter();
256-
/// assert_eq!(set_iter.next(), Some(&1));
257-
/// assert_eq!(set_iter.next(), Some(&2));
258-
/// assert_eq!(set_iter.next(), Some(&3));
259-
/// assert_eq!(set_iter.next(), None);
260-
/// ```
261-
#[stable(feature = "rust1", since = "1.0.0")]
262-
pub fn iter(&self) -> Iter<T> {
263-
Iter { iter: self.map.keys() }
264-
}
265-
}
266231

267-
impl<T: Ord> BTreeSet<T> {
268232
/// Constructs a double-ended iterator over a sub-range of elements in the set.
269233
/// The simplest way is to use the range syntax `min..max`, thus `range(min..max)` will
270234
/// yield elements from min (inclusive) to max (exclusive).
@@ -293,9 +257,7 @@ impl<T: Ord> BTreeSet<T> {
293257
{
294258
Range { iter: self.map.range(range) }
295259
}
296-
}
297260

298-
impl<T: Ord> BTreeSet<T> {
299261
/// Visits the values representing the difference,
300262
/// i.e. the values that are in `self` but not in `other`,
301263
/// in ascending order.
@@ -408,40 +370,6 @@ impl<T: Ord> BTreeSet<T> {
408370
}
409371
}
410372

411-
/// Returns the number of elements in the set.
412-
///
413-
/// # Examples
414-
///
415-
/// ```
416-
/// use std::collections::BTreeSet;
417-
///
418-
/// let mut v = BTreeSet::new();
419-
/// assert_eq!(v.len(), 0);
420-
/// v.insert(1);
421-
/// assert_eq!(v.len(), 1);
422-
/// ```
423-
#[stable(feature = "rust1", since = "1.0.0")]
424-
pub fn len(&self) -> usize {
425-
self.map.len()
426-
}
427-
428-
/// Returns `true` if the set contains no elements.
429-
///
430-
/// # Examples
431-
///
432-
/// ```
433-
/// use std::collections::BTreeSet;
434-
///
435-
/// let mut v = BTreeSet::new();
436-
/// assert!(v.is_empty());
437-
/// v.insert(1);
438-
/// assert!(!v.is_empty());
439-
/// ```
440-
#[stable(feature = "rust1", since = "1.0.0")]
441-
pub fn is_empty(&self) -> bool {
442-
self.len() == 0
443-
}
444-
445373
/// Clears the set, removing all values.
446374
///
447375
/// # Examples
@@ -724,6 +652,74 @@ impl<T: Ord> BTreeSet<T> {
724652
}
725653
}
726654

655+
impl<T> BTreeSet<T> {
656+
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
657+
///
658+
/// # Examples
659+
///
660+
/// ```
661+
/// use std::collections::BTreeSet;
662+
///
663+
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
664+
/// let mut set_iter = set.iter();
665+
/// assert_eq!(set_iter.next(), Some(&1));
666+
/// assert_eq!(set_iter.next(), Some(&2));
667+
/// assert_eq!(set_iter.next(), Some(&3));
668+
/// assert_eq!(set_iter.next(), None);
669+
/// ```
670+
///
671+
/// Values returned by the iterator are returned in ascending order:
672+
///
673+
/// ```
674+
/// use std::collections::BTreeSet;
675+
///
676+
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
677+
/// let mut set_iter = set.iter();
678+
/// assert_eq!(set_iter.next(), Some(&1));
679+
/// assert_eq!(set_iter.next(), Some(&2));
680+
/// assert_eq!(set_iter.next(), Some(&3));
681+
/// assert_eq!(set_iter.next(), None);
682+
/// ```
683+
#[stable(feature = "rust1", since = "1.0.0")]
684+
pub fn iter(&self) -> Iter<T> {
685+
Iter { iter: self.map.keys() }
686+
}
687+
688+
/// Returns the number of elements in the set.
689+
///
690+
/// # Examples
691+
///
692+
/// ```
693+
/// use std::collections::BTreeSet;
694+
///
695+
/// let mut v = BTreeSet::new();
696+
/// assert_eq!(v.len(), 0);
697+
/// v.insert(1);
698+
/// assert_eq!(v.len(), 1);
699+
/// ```
700+
#[stable(feature = "rust1", since = "1.0.0")]
701+
pub fn len(&self) -> usize {
702+
self.map.len()
703+
}
704+
705+
/// Returns `true` if the set contains no elements.
706+
///
707+
/// # Examples
708+
///
709+
/// ```
710+
/// use std::collections::BTreeSet;
711+
///
712+
/// let mut v = BTreeSet::new();
713+
/// assert!(v.is_empty());
714+
/// v.insert(1);
715+
/// assert!(!v.is_empty());
716+
/// ```
717+
#[stable(feature = "rust1", since = "1.0.0")]
718+
pub fn is_empty(&self) -> bool {
719+
self.len() == 0
720+
}
721+
}
722+
727723
#[stable(feature = "rust1", since = "1.0.0")]
728724
impl<T: Ord> FromIterator<T> for BTreeSet<T> {
729725
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> BTreeSet<T> {

0 commit comments

Comments
 (0)