pub struct StepBrand;Expand description
Brand for Step.
Trait Implementations§
Source§impl Bifoldable for StepBrand
impl Bifoldable for StepBrand
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 the step from right to left using two step functions.
Applies f to the Loop value or g to the Done value.
§Type Signature
forall A B C. ((A, C) -> C, (B, C) -> C, C, Step 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 Loop value.B: The type of the Done value.C: The accumulator type.
§Parameters
f: The step function for the Loop variant.g: The step function for the Done variant.z: The initial accumulator.p: The step to fold.
§Returns
The folded result.
§Examples
use fp_library::{
brands::*,
functions::*,
types::*,
};
let x: Step<i32, i32> = Step::Loop(3);
assert_eq!(
bi_fold_right::<RcFnBrand, StepBrand, _, _, _>(|a, acc| acc - a, |b, acc| acc + b, 10, x,),
7
);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 the step from left to right using two step functions.
Applies f to the Loop value or g to the Done value.
§Type Signature
forall A B C. ((C, A) -> C, (C, B) -> C, C, Step 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 Loop value.B: The type of the Done value.C: The accumulator type.
§Parameters
f: The step function for the Loop variant.g: The step function for the Done variant.z: The initial accumulator.p: The step to fold.
§Returns
The folded result.
§Examples
use fp_library::{
brands::*,
functions::*,
types::*,
};
let x: Step<i32, i32> = Step::Done(5);
assert_eq!(
bi_fold_left::<RcFnBrand, StepBrand, _, _, _>(|acc, a| acc - a, |acc, b| acc + b, 10, x,),
15
);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 the value to a monoid depending on the variant.
Applies f if Loop, g if Done.
§Type Signature
forall A B M. Monoid M => (A -> M, B -> M, Step 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 Loop value.B: The type of the Done value.M: The monoid type.
§Parameters
f: The function mapping the Loop value to the monoid.g: The function mapping the Done value to the monoid.p: The step to fold.
§Returns
The monoid value.
§Examples
use fp_library::{
brands::*,
functions::*,
types::*,
};
let x: Step<i32, i32> = Step::Loop(3);
assert_eq!(
bi_fold_map::<RcFnBrand, StepBrand, _, _, _>(
|a: i32| a.to_string(),
|b: i32| b.to_string(),
x,
),
"3".to_string()
);Source§impl Bifunctor for StepBrand
impl Bifunctor for StepBrand
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 step.
This method applies one function to the loop value and another to the done value.
§Type Signature
forall A B C D. (A -> B, C -> D, Step A C) -> Step B D
§Type Parameters
'a: The lifetime of the values.A: The type of the loop value.B: The type of the mapped loop value.C: The type of the done value.D: The type of the mapped done value.
§Parameters
f: The function to apply to the loop value.g: The function to apply to the done value.p: The step to map over.
§Returns
A new step containing the mapped values.
§Examples
use fp_library::{
brands::*,
classes::bifunctor::*,
functions::*,
types::*,
};
let x = Step::Loop(1);
assert_eq!(bimap::<StepBrand, _, _, _, _>(|a| a + 1, |b: i32| b * 2, x), Step::Loop(2));Source§impl Bitraversable for StepBrand
impl Bitraversable for StepBrand
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 the step with two effectful functions.
Applies f to the Loop value or g to the Done value,
wrapping the result in the applicative context.
§Type Signature
forall A B C D F. Applicative F => (A -> F C, B -> F D, Step A B) -> F (Step C D)
§Type Parameters
'a: The lifetime of the values.A: The type of the Loop value.B: The type of the Done value.C: The output type for Loop.D: The output type for Done.F: The applicative context.
§Parameters
f: The function applied to the Loop value.g: The function applied to the Done value.p: The step to traverse.
§Returns
The transformed step wrapped in the applicative context.
§Examples
use fp_library::{
brands::*,
functions::*,
types::*,
};
let x: Step<i32, i32> = Step::Loop(3);
assert_eq!(
bi_traverse::<StepBrand, _, _, _, _, OptionBrand>(
|a: i32| Some(a + 1),
|b: i32| Some(b * 2),
x,
),
Some(Step::Loop(4))
);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 Kind_266801a817966495 for StepBrand
Generated implementation of Kind_266801a817966495 for StepBrand.
impl Kind_266801a817966495 for StepBrand
Generated implementation of Kind_266801a817966495 for StepBrand.
Source§impl Kind_5b1bcedfd80bdc16 for StepBrand
Generated implementation of Kind_5b1bcedfd80bdc16 for StepBrand.
impl Kind_5b1bcedfd80bdc16 for StepBrand
Generated implementation of Kind_5b1bcedfd80bdc16 for StepBrand.
Source§impl Ord for StepBrand
impl Ord for StepBrand
Source§impl PartialOrd for StepBrand
impl PartialOrd for StepBrand
impl Copy for StepBrand
impl Eq for StepBrand
impl StructuralPartialEq for StepBrand
Auto Trait Implementations§
impl Freeze for StepBrand
impl RefUnwindSafe for StepBrand
impl Send for StepBrand
impl Sync for StepBrand
impl Unpin for StepBrand
impl UnsafeUnpin for StepBrand
impl UnwindSafe for StepBrand
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