Skip to content

Commit e01c929

Browse files
glandiumjswrenn
authored andcommitted
Allow to use EitherOrBoth<T> to mean the same as EitherOrBoth<T, T>
1 parent 0897f56 commit e01c929

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

src/either_or_both.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use either::Either;
66

77
/// Value that either holds a single A or B, or both.
88
#[derive(Clone, PartialEq, Eq, Hash, Debug)]
9-
pub enum EitherOrBoth<A, B> {
9+
pub enum EitherOrBoth<A, B = A> {
1010
/// Both values are present.
1111
Both(A, B),
1212
/// Only the left value of type `A` is present.

tests/merge_join.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use itertools::EitherOrBoth;
55
fn empty() {
66
let left: Vec<u32> = vec![];
77
let right: Vec<u32> = vec![];
8-
let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![];
8+
let expected_result: Vec<EitherOrBoth<u32>> = vec![];
99
let actual_result = merge_join_by(left, right, |l, r| l.cmp(r)).collect::<Vec<_>>();
1010
assert_eq!(expected_result, actual_result);
1111
}
@@ -14,7 +14,7 @@ fn empty() {
1414
fn left_only() {
1515
let left: Vec<u32> = vec![1, 2, 3];
1616
let right: Vec<u32> = vec![];
17-
let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
17+
let expected_result: Vec<EitherOrBoth<u32>> = vec![
1818
EitherOrBoth::Left(1),
1919
EitherOrBoth::Left(2),
2020
EitherOrBoth::Left(3),
@@ -27,7 +27,7 @@ fn left_only() {
2727
fn right_only() {
2828
let left: Vec<u32> = vec![];
2929
let right: Vec<u32> = vec![1, 2, 3];
30-
let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
30+
let expected_result: Vec<EitherOrBoth<u32>> = vec![
3131
EitherOrBoth::Right(1),
3232
EitherOrBoth::Right(2),
3333
EitherOrBoth::Right(3),
@@ -40,7 +40,7 @@ fn right_only() {
4040
fn first_left_then_right() {
4141
let left: Vec<u32> = vec![1, 2, 3];
4242
let right: Vec<u32> = vec![4, 5, 6];
43-
let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
43+
let expected_result: Vec<EitherOrBoth<u32>> = vec![
4444
EitherOrBoth::Left(1),
4545
EitherOrBoth::Left(2),
4646
EitherOrBoth::Left(3),
@@ -56,7 +56,7 @@ fn first_left_then_right() {
5656
fn first_right_then_left() {
5757
let left: Vec<u32> = vec![4, 5, 6];
5858
let right: Vec<u32> = vec![1, 2, 3];
59-
let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
59+
let expected_result: Vec<EitherOrBoth<u32>> = vec![
6060
EitherOrBoth::Right(1),
6161
EitherOrBoth::Right(2),
6262
EitherOrBoth::Right(3),
@@ -72,7 +72,7 @@ fn first_right_then_left() {
7272
fn interspersed_left_and_right() {
7373
let left: Vec<u32> = vec![1, 3, 5];
7474
let right: Vec<u32> = vec![2, 4, 6];
75-
let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
75+
let expected_result: Vec<EitherOrBoth<u32>> = vec![
7676
EitherOrBoth::Left(1),
7777
EitherOrBoth::Right(2),
7878
EitherOrBoth::Left(3),
@@ -88,7 +88,7 @@ fn interspersed_left_and_right() {
8888
fn overlapping_left_and_right() {
8989
let left: Vec<u32> = vec![1, 3, 4, 6];
9090
let right: Vec<u32> = vec![2, 3, 4, 5];
91-
let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
91+
let expected_result: Vec<EitherOrBoth<u32>> = vec![
9292
EitherOrBoth::Left(1),
9393
EitherOrBoth::Right(2),
9494
EitherOrBoth::Both(3, 3),

0 commit comments

Comments
 (0)