pub struct Tuple2Brand;Expand description
Brand for (First, Second), with neither First nor Second applied.
Trait Implementations§
Source§impl Bifoldable for Tuple2Brand
impl Bifoldable for Tuple2Brand
Source§fn bi_fold_right<'a, FnBrand: CloneableFn + 'a, A: 'a + Clone, B: 'a + Clone, C: 'a>(
f: impl Fn(A, C) -> C + 'a,
g: impl Fn(B, C) -> C + 'a,
z: C,
p: <Self as Kind_266801a817966495>::Of<'a, A, B>,
) -> C
fn bi_fold_right<'a, FnBrand: CloneableFn + 'a, A: 'a + Clone, B: 'a + Clone, C: 'a>( f: impl Fn(A, C) -> C + 'a, g: impl Fn(B, C) -> C + 'a, z: C, p: <Self as Kind_266801a817966495>::Of<'a, A, B>, ) -> C
Folds a tuple using two step functions, right-associatively.
Applies f to the first value and g to the second value,
folding (a, b) as f(a, g(b, z)).
§Type Signature
forall A B C. ((A, C) -> C, (B, C) -> C, C, Tuple2 A B) -> C
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function to use.A: The type of the first element.B: The type of the second element.C: The accumulator type.
§Parameters
f: The step function applied to the first element.g: The step function applied to the second element.z: The initial accumulator.p: The tuple to fold.
§Returns
f(a, g(b, z)).
§Examples
use fp_library::{
brands::*,
functions::*,
};
assert_eq!(
bi_fold_right::<RcFnBrand, Tuple2Brand, _, _, _>(
|a: i32, acc| acc - a,
|b: i32, acc| acc + b,
0,
(3, 5),
),
2
);Source§fn bi_fold_left<'a, FnBrand: CloneableFn + 'a, A: 'a + Clone, B: 'a + Clone, C: 'a>(
f: impl Fn(C, A) -> C + 'a,
g: impl Fn(C, B) -> C + 'a,
z: C,
p: <Self as Kind_266801a817966495>::Of<'a, A, B>,
) -> C
fn bi_fold_left<'a, FnBrand: CloneableFn + 'a, A: 'a + Clone, B: 'a + Clone, C: 'a>( f: impl Fn(C, A) -> C + 'a, g: impl Fn(C, B) -> C + 'a, z: C, p: <Self as Kind_266801a817966495>::Of<'a, A, B>, ) -> C
Folds a tuple using two step functions, left-associatively.
Applies f to the first value and g to the second value,
folding (a, b) as g(f(z, a), b).
§Type Signature
forall A B C. ((C, A) -> C, (C, B) -> C, C, Tuple2 A B) -> C
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function to use.A: The type of the first element.B: The type of the second element.C: The accumulator type.
§Parameters
f: The step function applied to the first element.g: The step function applied to the second element.z: The initial accumulator.p: The tuple to fold.
§Returns
g(f(z, a), b).
§Examples
use fp_library::{
brands::*,
functions::*,
};
assert_eq!(
bi_fold_left::<RcFnBrand, Tuple2Brand, _, _, _>(
|acc, a: i32| acc - a,
|acc, b: i32| acc + b,
0,
(3, 5),
),
2
);Source§fn bi_fold_map<'a, FnBrand: CloneableFn + 'a, A: 'a + Clone, B: 'a + Clone, M>(
f: impl Fn(A) -> M + 'a,
g: impl Fn(B) -> M + 'a,
p: <Self as Kind_266801a817966495>::Of<'a, A, B>,
) -> Mwhere
M: Monoid + 'a,
fn bi_fold_map<'a, FnBrand: CloneableFn + 'a, A: 'a + Clone, B: 'a + Clone, M>(
f: impl Fn(A) -> M + 'a,
g: impl Fn(B) -> M + 'a,
p: <Self as Kind_266801a817966495>::Of<'a, A, B>,
) -> Mwhere
M: Monoid + 'a,
Maps both elements of a tuple to a monoid and combines the results.
Computes M::append(f(a), g(b)) for a tuple (a, b).
§Type Signature
forall A B M. Monoid M => (A -> M, B -> M, Tuple2 A B) -> M
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function to use.A: The type of the first element.B: The type of the second element.M: The monoid type.
§Parameters
f: The function mapping the first element to the monoid.g: The function mapping the second element to the monoid.p: The tuple to fold.
§Returns
M::append(f(a), g(b)).
§Examples
use fp_library::{
brands::*,
functions::*,
};
assert_eq!(
bi_fold_map::<RcFnBrand, Tuple2Brand, _, _, _>(
|a: i32| a.to_string(),
|b: i32| b.to_string(),
(3, 5),
),
"35".to_string()
);Source§impl Bifunctor for Tuple2Brand
impl Bifunctor for Tuple2Brand
Source§fn bimap<'a, A: 'a, B: 'a, C: 'a, D: 'a>(
f: impl Fn(A) -> B + 'a,
g: impl Fn(C) -> D + 'a,
p: <Self as Kind_266801a817966495>::Of<'a, A, C>,
) -> <Self as Kind_266801a817966495>::Of<'a, B, D>
fn bimap<'a, A: 'a, B: 'a, C: 'a, D: 'a>( f: impl Fn(A) -> B + 'a, g: impl Fn(C) -> D + 'a, p: <Self as Kind_266801a817966495>::Of<'a, A, C>, ) -> <Self as Kind_266801a817966495>::Of<'a, B, D>
Maps functions over the values in the tuple.
This method applies one function to the first value and another to the second value.
§Type Signature
forall A B C D. (A -> B, C -> D, Tuple2 A C) -> Tuple2 B D
§Type Parameters
'a: The lifetime of the values.A: The type of the first value.B: The type of the mapped first value.C: The type of the second value.D: The type of the mapped second value.
§Parameters
f: The function to apply to the first value.g: The function to apply to the second value.p: The tuple to map over.
§Returns
A new tuple containing the mapped values.
§Examples
use fp_library::{
brands::*,
classes::bifunctor::*,
functions::*,
};
let x = (1, 5);
assert_eq!(bimap::<Tuple2Brand, _, _, _, _>(|a| a + 1, |b| b * 2, x), (2, 10));Source§impl Bitraversable for Tuple2Brand
impl Bitraversable for Tuple2Brand
Source§fn bi_traverse<'a, A: 'a + Clone, B: 'a + Clone, C: 'a + Clone, D: 'a + Clone, F: Applicative>(
f: impl Fn(A) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, C> + 'a,
g: impl Fn(B) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, D> + 'a,
p: <Self as Kind_266801a817966495>::Of<'a, A, B>,
) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_266801a817966495>::Of<'a, C, D>>
fn bi_traverse<'a, A: 'a + Clone, B: 'a + Clone, C: 'a + Clone, D: 'a + Clone, F: Applicative>( f: impl Fn(A) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, C> + 'a, g: impl Fn(B) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, D> + 'a, p: <Self as Kind_266801a817966495>::Of<'a, A, B>, ) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_266801a817966495>::Of<'a, C, D>>
Traverses a tuple with two effectful functions.
Applies f to the first element and g to the second element,
combining the effects via lift2.
§Type Signature
forall A B C D F. Applicative F => (A -> F C, B -> F D, Tuple2 A B) -> F (Tuple2 C D)
§Type Parameters
'a: The lifetime of the values.A: The type of the first element.B: The type of the second element.C: The output type for the first element.D: The output type for the second element.F: The applicative context.
§Parameters
f: The function applied to the first element.g: The function applied to the second element.p: The tuple to traverse.
§Returns
lift2(|c, d| (c, d), f(a), g(b)).
§Examples
use fp_library::{
brands::*,
functions::*,
};
assert_eq!(
bi_traverse::<Tuple2Brand, _, _, _, _, OptionBrand>(
|a: i32| Some(a + 1),
|b: i32| Some(b * 2),
(3, 5),
),
Some((4, 10))
);Source§fn bi_sequence<'a, A: 'a + Clone, B: 'a + Clone, F: Applicative>(
ta: <Self as Kind_266801a817966495>::Of<'a, <F as Kind_cdc7cd43dac7585f>::Of<'a, A>, <F as Kind_cdc7cd43dac7585f>::Of<'a, B>>,
) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_266801a817966495>::Of<'a, A, B>>where
<F as Kind_cdc7cd43dac7585f>::Of<'a, A>: Clone,
<F as Kind_cdc7cd43dac7585f>::Of<'a, B>: Clone,
fn bi_sequence<'a, A: 'a + Clone, B: 'a + Clone, F: Applicative>(
ta: <Self as Kind_266801a817966495>::Of<'a, <F as Kind_cdc7cd43dac7585f>::Of<'a, A>, <F as Kind_cdc7cd43dac7585f>::Of<'a, B>>,
) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_266801a817966495>::Of<'a, A, B>>where
<F as Kind_cdc7cd43dac7585f>::Of<'a, A>: Clone,
<F as Kind_cdc7cd43dac7585f>::Of<'a, B>: Clone,
Source§impl Clone for Tuple2Brand
impl Clone for Tuple2Brand
Source§fn clone(&self) -> Tuple2Brand
fn clone(&self) -> Tuple2Brand
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Tuple2Brand
impl Debug for Tuple2Brand
Source§impl Default for Tuple2Brand
impl Default for Tuple2Brand
Source§fn default() -> Tuple2Brand
fn default() -> Tuple2Brand
Source§impl Hash for Tuple2Brand
impl Hash for Tuple2Brand
Source§impl Kind_266801a817966495 for Tuple2Brand
Generated implementation of Kind_266801a817966495 for Tuple2Brand.
impl Kind_266801a817966495 for Tuple2Brand
Generated implementation of Kind_266801a817966495 for Tuple2Brand.
Source§type Of<'a, First: 'a, Second: 'a> = (First, Second)
type Of<'a, First: 'a, Second: 'a> = (First, Second)
Source§impl Kind_5b1bcedfd80bdc16 for Tuple2Brand
Generated implementation of Kind_5b1bcedfd80bdc16 for Tuple2Brand.
impl Kind_5b1bcedfd80bdc16 for Tuple2Brand
Generated implementation of Kind_5b1bcedfd80bdc16 for Tuple2Brand.
Source§type Of<First, Second> = (First, Second)
type Of<First, Second> = (First, Second)
Source§impl Ord for Tuple2Brand
impl Ord for Tuple2Brand
Source§fn cmp(&self, other: &Tuple2Brand) -> Ordering
fn cmp(&self, other: &Tuple2Brand) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for Tuple2Brand
impl PartialEq for Tuple2Brand
Source§impl PartialOrd for Tuple2Brand
impl PartialOrd for Tuple2Brand
impl Copy for Tuple2Brand
impl Eq for Tuple2Brand
impl StructuralPartialEq for Tuple2Brand
Auto Trait Implementations§
impl Freeze for Tuple2Brand
impl RefUnwindSafe for Tuple2Brand
impl Send for Tuple2Brand
impl Sync for Tuple2Brand
impl Unpin for Tuple2Brand
impl UnsafeUnpin for Tuple2Brand
impl UnwindSafe for Tuple2Brand
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more