Skip to content

Commit 6b14719

Browse files
committed
Rollup merge of rust-lang#22887 - JP-Ellis:master, r=huonw
Updated the function to allow comparisons between different types since PartialOrd and PartialEq allow this.
2 parents fcd1c36 + bbd060d commit 6b14719

File tree

1 file changed

+20
-34
lines changed

1 file changed

+20
-34
lines changed

src/libcore/iter.rs

+20-34
Original file line numberDiff line numberDiff line change
@@ -2874,10 +2874,10 @@ pub mod order {
28742874
use super::Iterator;
28752875

28762876
/// Compare `a` and `b` for equality using `Eq`
2877-
pub fn equals<A, T, S>(mut a: T, mut b: S) -> bool where
2877+
pub fn equals<A, L, R>(mut a: L, mut b: R) -> bool where
28782878
A: Eq,
2879-
T: Iterator<Item=A>,
2880-
S: Iterator<Item=A>,
2879+
L: Iterator<Item=A>,
2880+
R: Iterator<Item=A>,
28812881
{
28822882
loop {
28832883
match (a.next(), b.next()) {
@@ -2889,10 +2889,10 @@ pub mod order {
28892889
}
28902890

28912891
/// Order `a` and `b` lexicographically using `Ord`
2892-
pub fn cmp<A, T, S>(mut a: T, mut b: S) -> cmp::Ordering where
2892+
pub fn cmp<A, L, R>(mut a: L, mut b: R) -> cmp::Ordering where
28932893
A: Ord,
2894-
T: Iterator<Item=A>,
2895-
S: Iterator<Item=A>,
2894+
L: Iterator<Item=A>,
2895+
R: Iterator<Item=A>,
28962896
{
28972897
loop {
28982898
match (a.next(), b.next()) {
@@ -2908,10 +2908,8 @@ pub mod order {
29082908
}
29092909

29102910
/// Order `a` and `b` lexicographically using `PartialOrd`
2911-
pub fn partial_cmp<A, T, S>(mut a: T, mut b: S) -> Option<cmp::Ordering> where
2912-
A: PartialOrd,
2913-
T: Iterator<Item=A>,
2914-
S: Iterator<Item=A>,
2911+
pub fn partial_cmp<L: Iterator, R: Iterator>(mut a: L, mut b: R) -> Option<cmp::Ordering> where
2912+
L::Item: PartialOrd<R::Item>
29152913
{
29162914
loop {
29172915
match (a.next(), b.next()) {
@@ -2927,10 +2925,8 @@ pub mod order {
29272925
}
29282926

29292927
/// Compare `a` and `b` for equality (Using partial equality, `PartialEq`)
2930-
pub fn eq<A, B, L, R>(mut a: L, mut b: R) -> bool where
2931-
A: PartialEq<B>,
2932-
L: Iterator<Item=A>,
2933-
R: Iterator<Item=B>,
2928+
pub fn eq<L: Iterator, R: Iterator>(mut a: L, mut b: R) -> bool where
2929+
L::Item: PartialEq<R::Item>,
29342930
{
29352931
loop {
29362932
match (a.next(), b.next()) {
@@ -2942,10 +2938,8 @@ pub mod order {
29422938
}
29432939

29442940
/// Compare `a` and `b` for nonequality (Using partial equality, `PartialEq`)
2945-
pub fn ne<A, B, L, R>(mut a: L, mut b: R) -> bool where
2946-
A: PartialEq<B>,
2947-
L: Iterator<Item=A>,
2948-
R: Iterator<Item=B>,
2941+
pub fn ne<L: Iterator, R: Iterator>(mut a: L, mut b: R) -> bool where
2942+
L::Item: PartialEq<R::Item>,
29492943
{
29502944
loop {
29512945
match (a.next(), b.next()) {
@@ -2957,10 +2951,8 @@ pub mod order {
29572951
}
29582952

29592953
/// Return `a` < `b` lexicographically (Using partial order, `PartialOrd`)
2960-
pub fn lt<A, T, S>(mut a: T, mut b: S) -> bool where
2961-
A: PartialOrd,
2962-
T: Iterator<Item=A>,
2963-
S: Iterator<Item=A>,
2954+
pub fn lt<R: Iterator, L: Iterator>(mut a: L, mut b: R) -> bool where
2955+
L::Item: PartialOrd<R::Item>,
29642956
{
29652957
loop {
29662958
match (a.next(), b.next()) {
@@ -2973,10 +2965,8 @@ pub mod order {
29732965
}
29742966

29752967
/// Return `a` <= `b` lexicographically (Using partial order, `PartialOrd`)
2976-
pub fn le<A, T, S>(mut a: T, mut b: S) -> bool where
2977-
A: PartialOrd,
2978-
T: Iterator<Item=A>,
2979-
S: Iterator<Item=A>,
2968+
pub fn le<L: Iterator, R: Iterator>(mut a: L, mut b: R) -> bool where
2969+
L::Item: PartialOrd<R::Item>,
29802970
{
29812971
loop {
29822972
match (a.next(), b.next()) {
@@ -2989,10 +2979,8 @@ pub mod order {
29892979
}
29902980

29912981
/// Return `a` > `b` lexicographically (Using partial order, `PartialOrd`)
2992-
pub fn gt<A, T, S>(mut a: T, mut b: S) -> bool where
2993-
A: PartialOrd,
2994-
T: Iterator<Item=A>,
2995-
S: Iterator<Item=A>,
2982+
pub fn gt<L: Iterator, R: Iterator>(mut a: L, mut b: R) -> bool where
2983+
L::Item: PartialOrd<R::Item>,
29962984
{
29972985
loop {
29982986
match (a.next(), b.next()) {
@@ -3005,10 +2993,8 @@ pub mod order {
30052993
}
30062994

30072995
/// Return `a` >= `b` lexicographically (Using partial order, `PartialOrd`)
3008-
pub fn ge<A, T, S>(mut a: T, mut b: S) -> bool where
3009-
A: PartialOrd,
3010-
T: Iterator<Item=A>,
3011-
S: Iterator<Item=A>,
2996+
pub fn ge<L: Iterator, R: Iterator>(mut a: L, mut b: R) -> bool where
2997+
L::Item: PartialOrd<R::Item>,
30122998
{
30132999
loop {
30143000
match (a.next(), b.next()) {

0 commit comments

Comments
 (0)