Skip to content

Commit 744ec88

Browse files
committed
Use const generics for some VecDeque impls.
1 parent 8b57f68 commit 744ec88

File tree

1 file changed

+14
-26
lines changed

1 file changed

+14
-26
lines changed

src/liballoc/collections/vec_deque.rs

+14-26
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
1010
#![stable(feature = "rust1", since = "1.0.0")]
1111

12+
use core::array::LengthAtMost32;
1213
use core::cmp::{self, Ordering};
1314
use core::fmt;
1415
use core::iter::{repeat_with, FromIterator, FusedIterator};
@@ -2571,13 +2572,14 @@ impl<A: PartialEq> PartialEq for VecDeque<A> {
25712572
impl<A: Eq> Eq for VecDeque<A> {}
25722573

25732574
macro_rules! __impl_slice_eq1 {
2574-
($Lhs: ty, $Rhs: ty) => {
2575-
__impl_slice_eq1! { $Lhs, $Rhs, Sized }
2576-
};
2577-
($Lhs: ty, $Rhs: ty, $Bound: ident) => {
2575+
([$($vars:tt)*] $lhs:ty, $rhs:ty, $($constraints:tt)*) => {
25782576
#[stable(feature = "vec_deque_partial_eq_slice", since = "1.17.0")]
2579-
impl<A: $Bound, B> PartialEq<$Rhs> for $Lhs where A: PartialEq<B> {
2580-
fn eq(&self, other: &$Rhs) -> bool {
2577+
impl<A, B, $($vars)*> PartialEq<$rhs> for $lhs
2578+
where
2579+
A: PartialEq<B>,
2580+
$($constraints)*
2581+
{
2582+
fn eq(&self, other: &$rhs) -> bool {
25812583
if self.len() != other.len() {
25822584
return false;
25832585
}
@@ -2589,26 +2591,12 @@ macro_rules! __impl_slice_eq1 {
25892591
}
25902592
}
25912593

2592-
__impl_slice_eq1! { VecDeque<A>, Vec<B> }
2593-
__impl_slice_eq1! { VecDeque<A>, &[B] }
2594-
__impl_slice_eq1! { VecDeque<A>, &mut [B] }
2595-
2596-
macro_rules! array_impls {
2597-
($($N: expr)+) => {
2598-
$(
2599-
__impl_slice_eq1! { VecDeque<A>, [B; $N] }
2600-
__impl_slice_eq1! { VecDeque<A>, &[B; $N] }
2601-
__impl_slice_eq1! { VecDeque<A>, &mut [B; $N] }
2602-
)+
2603-
}
2604-
}
2605-
2606-
array_impls! {
2607-
0 1 2 3 4 5 6 7 8 9
2608-
10 11 12 13 14 15 16 17 18 19
2609-
20 21 22 23 24 25 26 27 28 29
2610-
30 31 32
2611-
}
2594+
__impl_slice_eq1! { [] VecDeque<A>, Vec<B>, }
2595+
__impl_slice_eq1! { [] VecDeque<A>, &[B], }
2596+
__impl_slice_eq1! { [] VecDeque<A>, &mut [B], }
2597+
__impl_slice_eq1! { [const N: usize] VecDeque<A>, [B; N], [B; N]: LengthAtMost32 }
2598+
__impl_slice_eq1! { [const N: usize] VecDeque<A>, &[B; N], [B; N]: LengthAtMost32 }
2599+
__impl_slice_eq1! { [const N: usize] VecDeque<A>, &mut [B; N], [B; N]: LengthAtMost32 }
26122600

26132601
#[stable(feature = "rust1", since = "1.0.0")]
26142602
impl<A: PartialOrd> PartialOrd for VecDeque<A> {

0 commit comments

Comments
 (0)