pub struct IdentityBrand;Expand description
Brand for Identity.
Trait Implementations§
Source§impl ApplyFirst for IdentityBrand
impl ApplyFirst for IdentityBrand
Source§fn apply_first<'a, A: 'a + Clone, B: 'a + Clone>(
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
fb: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>
fn apply_first<'a, A: 'a + Clone, B: 'a + Clone>( fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>, fb: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>, ) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>
Source§impl ApplySecond for IdentityBrand
impl ApplySecond for IdentityBrand
Source§fn apply_second<'a, A: 'a + Clone, B: 'a + Clone>(
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
fb: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>
fn apply_second<'a, A: 'a + Clone, B: 'a + Clone>( fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>, fb: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>, ) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>
Source§impl Clone for IdentityBrand
impl Clone for IdentityBrand
Source§fn clone(&self) -> IdentityBrand
fn clone(&self) -> IdentityBrand
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IdentityBrand
impl Debug for IdentityBrand
Source§impl Default for IdentityBrand
impl Default for IdentityBrand
Source§fn default() -> IdentityBrand
fn default() -> IdentityBrand
Source§impl Foldable for IdentityBrand
impl Foldable for IdentityBrand
Source§fn fold_right<'a, FnBrand, A: 'a, B: 'a, Func>(
func: Func,
initial: B,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> Bwhere
Func: Fn(A, B) -> B + 'a,
FnBrand: CloneableFn + 'a,
fn fold_right<'a, FnBrand, A: 'a, B: 'a, Func>(
func: Func,
initial: B,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> Bwhere
Func: Fn(A, B) -> B + 'a,
FnBrand: CloneableFn + 'a,
Folds the identity from the right.
This method performs a right-associative fold of the identity. Since Identity contains only one element, this is equivalent to applying the function to the element and the initial value.
§Type Signature
forall self a b. Foldable self => ((a, b) -> b, b, self a) -> b
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function to use.A: The type of the elements in the structure.B: The type of the accumulator.Func: The type of the folding function.
§Parameters
func: The function to apply to each element and the accumulator.initial: The initial value of the accumulator.fa: The identity to fold.
§Returns
The final accumulator value.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(5);
let y = fold_right::<RcFnBrand, IdentityBrand, _, _, _>(|a, b| a + b, 10, x);
assert_eq!(y, 15);Source§fn fold_left<'a, FnBrand, A: 'a, B: 'a, Func>(
func: Func,
initial: B,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> Bwhere
Func: Fn(B, A) -> B + 'a,
FnBrand: CloneableFn + 'a,
fn fold_left<'a, FnBrand, A: 'a, B: 'a, Func>(
func: Func,
initial: B,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> Bwhere
Func: Fn(B, A) -> B + 'a,
FnBrand: CloneableFn + 'a,
Folds the identity from the left.
This method performs a left-associative fold of the identity. Since Identity contains only one element, this is equivalent to applying the function to the initial value and the element.
§Type Signature
forall self a b. Foldable self => ((b, a) -> b, b, self a) -> b
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function to use.A: The type of the elements in the structure.B: The type of the accumulator.Func: The type of the folding function.
§Parameters
func: The function to apply to the accumulator and each element.initial: The initial value of the accumulator.fa: The structure to fold.
§Returns
The final accumulator value.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(5);
let y = fold_left::<RcFnBrand, IdentityBrand, _, _, _>(|b, a| b + a, 10, x);
assert_eq!(y, 15);Source§fn fold_map<'a, FnBrand, A: 'a, M, Func>(
func: Func,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> M
fn fold_map<'a, FnBrand, A: 'a, M, Func>( func: Func, fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>, ) -> M
Maps the value to a monoid and returns it.
This method maps the element of the identity to a monoid.
§Type Signature
forall self a m. (Foldable self, Monoid m) => (a -> m, self a) -> m
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function to use.A: The type of the elements in the structure.M: The type of the monoid.Func: The type of the mapping function.
§Parameters
func: The mapping function.fa: The identity to fold.
§Returns
The monoid value.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(5);
let y = fold_map::<RcFnBrand, IdentityBrand, _, _, _>(|a: i32| a.to_string(), x);
assert_eq!(y, "5".to_string());Source§impl Functor for IdentityBrand
impl Functor for IdentityBrand
Source§fn map<'a, A: 'a, B: 'a, Func>(
func: Func,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>where
Func: Fn(A) -> B + 'a,
fn map<'a, A: 'a, B: 'a, Func>(
func: Func,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>where
Func: Fn(A) -> B + 'a,
Maps a function over the value in the identity.
This method applies a function to the value inside the identity, producing a new identity with the transformed value.
§Type Signature
forall self a b. Functor self => (a -> b, self a) -> self b
§Type Parameters
'a: The lifetime of the value.A: The type of the value inside the identity.B: The type of the result of applying the function.Func: The type of the function to apply.
§Parameters
func: The function to apply.fa: The identity to map over.
§Returns
A new identity containing the result of applying the function.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(5);
let y = map::<IdentityBrand, _, _, _>(|i| i * 2, x);
assert_eq!(y, Identity(10));Source§impl Hash for IdentityBrand
impl Hash for IdentityBrand
Source§impl Kind_cdc7cd43dac7585f for IdentityBrand
Generated implementation of Kind_cdc7cd43dac7585f for IdentityBrand.
impl Kind_cdc7cd43dac7585f for IdentityBrand
Generated implementation of Kind_cdc7cd43dac7585f for IdentityBrand.
Source§impl Lift for IdentityBrand
impl Lift for IdentityBrand
Source§fn lift2<'a, A, B, C, Func>(
func: Func,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
fb: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, C>where
Func: Fn(A, B) -> C + 'a,
A: 'a,
B: 'a,
C: 'a,
fn lift2<'a, A, B, C, Func>(
func: Func,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
fb: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, C>where
Func: Fn(A, B) -> C + 'a,
A: 'a,
B: 'a,
C: 'a,
Lifts a binary function into the identity context.
This method lifts a binary function to operate on values within the identity context.
§Type Signature
forall self a b c. Lift self => ((a, b) -> c, self a, self b) -> self c
§Type Parameters
'a: The lifetime of the values.A: The type of the first identity’s value.B: The type of the second identity’s value.C: The return type of the function.Func: The type of the binary function.
§Parameters
func: The binary function to apply.fa: The first identity.fb: The second identity.
§Returns
A new identity containing the result of applying the function.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(1);
let y = Identity(2);
let z = lift2::<IdentityBrand, _, _, _, _>(|a, b| a + b, x, y);
assert_eq!(z, Identity(3));Source§impl Ord for IdentityBrand
impl Ord for IdentityBrand
Source§fn cmp(&self, other: &IdentityBrand) -> Ordering
fn cmp(&self, other: &IdentityBrand) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl ParFoldable for IdentityBrand
impl ParFoldable for IdentityBrand
Source§fn par_fold_map<'a, FnBrand, A, M>(
func: <FnBrand as SendCloneableFn>::SendOf<'a, A, M>,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> M
fn par_fold_map<'a, FnBrand, A, M>( func: <FnBrand as SendCloneableFn>::SendOf<'a, A, M>, fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>, ) -> M
Maps the value to a monoid and returns it in parallel.
This method maps the element of the identity to a monoid. Since Identity contains only one element, no actual parallelism occurs, but the interface is satisfied.
§Type Signature
forall self a m. (ParFoldable self, Monoid m) => (a -> m, self a) -> m
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function wrapper.A: The element type.M: The monoid type.
§Parameters
func: The mapping function.fa: The identity to fold.
§Returns
The combined monoid value.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(1);
let f = send_cloneable_fn_new::<ArcFnBrand, _, _>(|x: i32| x.to_string());
let y = par_fold_map::<ArcFnBrand, IdentityBrand, _, _>(f, x);
assert_eq!(y, "1".to_string());Source§fn par_fold_right<'a, FnBrand, A, B>(
func: <FnBrand as SendCloneableFn>::SendOf<'a, (A, B), B>,
initial: B,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> B
fn par_fold_right<'a, FnBrand, A, B>( func: <FnBrand as SendCloneableFn>::SendOf<'a, (A, B), B>, initial: B, fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>, ) -> B
Folds the identity from the right in parallel.
This method performs a right-associative fold of the identity. Since Identity contains only one element, no actual parallelism occurs.
§Type Signature
forall self a b. ParFoldable self => ((a, b) -> b, b, self a) -> b
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function wrapper.A: The element type.B: The accumulator type.
§Parameters
func: The thread-safe function to apply to each element and the accumulator.initial: The initial value of the accumulator.fa: The identity to fold.
§Returns
The final accumulator value.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(1);
let f = send_cloneable_fn_new::<ArcFnBrand, _, _>(|(a, b): (i32, i32)| a + b);
let y = par_fold_right::<ArcFnBrand, IdentityBrand, _, _>(f, 10, x);
assert_eq!(y, 11);Source§impl PartialEq for IdentityBrand
impl PartialEq for IdentityBrand
Source§impl PartialOrd for IdentityBrand
impl PartialOrd for IdentityBrand
Source§impl Pointed for IdentityBrand
impl Pointed for IdentityBrand
Source§fn pure<'a, A: 'a>(a: A) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>
fn pure<'a, A: 'a>(a: A) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>
Wraps a value in an identity.
This method wraps a value in an identity context.
§Type Signature
forall self a. Pointed self => a -> self a
§Type Parameters
'a: The lifetime of the value.A: The type of the value to wrap.
§Parameters
a: The value to wrap.
§Returns
An identity containing the value.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = pure::<IdentityBrand, _>(5);
assert_eq!(x, Identity(5));Source§impl Semiapplicative for IdentityBrand
impl Semiapplicative for IdentityBrand
Source§fn apply<'a, FnBrand: 'a + CloneableFn, A: 'a + Clone, B: 'a>(
ff: <Self as Kind_cdc7cd43dac7585f>::Of<'a, <FnBrand as CloneableFn>::Of<'a, A, B>>,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>
fn apply<'a, FnBrand: 'a + CloneableFn, A: 'a + Clone, B: 'a>( ff: <Self as Kind_cdc7cd43dac7585f>::Of<'a, <FnBrand as CloneableFn>::Of<'a, A, B>>, fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>, ) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>
Applies a wrapped function to a wrapped value.
This method applies a function wrapped in an identity to a value wrapped in an identity.
§Type Signature
forall self a b. Semiapplicative self => (self (a -> b), self a) -> self b
§Type Parameters
'a: The lifetime of the values.FnBrand: The brand of the cloneable function wrapper.A: The type of the input value.B: The type of the output value.
§Parameters
ff: The identity containing the function.fa: The identity containing the value.
§Returns
A new identity containing the result of applying the function.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let f = Identity(cloneable_fn_new::<RcFnBrand, _, _>(|x: i32| x * 2));
let x = Identity(5);
let y = apply::<RcFnBrand, IdentityBrand, _, _>(f, x);
assert_eq!(y, Identity(10));Source§impl Semimonad for IdentityBrand
impl Semimonad for IdentityBrand
Source§fn bind<'a, A: 'a, B: 'a, Func>(
ma: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
func: Func,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>
fn bind<'a, A: 'a, B: 'a, Func>( ma: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>, func: Func, ) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>
Chains identity computations.
This method chains two identity computations, where the second computation depends on the result of the first.
§Type Signature
forall self a b. Semimonad self => (self a, a -> self b) -> self b
§Type Parameters
'a: The lifetime of the values.A: The type of the result of the first computation.B: The type of the result of the second computation.Func: The type of the function to apply.
§Parameters
ma: The first identity.func: The function to apply to the value inside the identity.
§Returns
The result of applying f to the value.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(5);
let y = bind::<IdentityBrand, _, _, _>(x, |i| Identity(i * 2));
assert_eq!(y, Identity(10));Source§impl Traversable for IdentityBrand
impl Traversable for IdentityBrand
Source§fn traverse<'a, A: 'a + Clone, B: 'a + Clone, F: Applicative, Func>(
func: Func,
ta: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>>where
Func: Fn(A) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, B> + 'a,
<Self as Kind_cdc7cd43dac7585f>::Of<'a, B>: Clone,
fn traverse<'a, A: 'a + Clone, B: 'a + Clone, F: Applicative, Func>(
func: Func,
ta: <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>,
) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>>where
Func: Fn(A) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, B> + 'a,
<Self as Kind_cdc7cd43dac7585f>::Of<'a, B>: Clone,
Traverses the identity with an applicative function.
This method maps the element of the identity to a computation, evaluates it, and wraps the result in the applicative context.
§Type Signature
forall self a b f. (Traversable self, Applicative f) => (a -> f b, self a) -> f (self b)
§Type Parameters
'a: The lifetime of the values.A: The type of the elements in the traversable structure.B: The type of the elements in the resulting traversable structure.F: The applicative context.Func: The type of the function to apply.
§Parameters
func: The function to apply to each element, returning a value in an applicative context.ta: The identity to traverse.
§Returns
The identity wrapped in the applicative context.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(5);
let y = traverse::<IdentityBrand, _, _, OptionBrand, _>(|a| Some(a * 2), x);
assert_eq!(y, Some(Identity(10)));Source§fn sequence<'a, A: 'a + Clone, F: Applicative>(
ta: <Self as Kind_cdc7cd43dac7585f>::Of<'a, <F as Kind_cdc7cd43dac7585f>::Of<'a, A>>,
) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>>where
<F as Kind_cdc7cd43dac7585f>::Of<'a, A>: Clone,
<Self as Kind_cdc7cd43dac7585f>::Of<'a, A>: Clone,
fn sequence<'a, A: 'a + Clone, F: Applicative>(
ta: <Self as Kind_cdc7cd43dac7585f>::Of<'a, <F as Kind_cdc7cd43dac7585f>::Of<'a, A>>,
) -> <F as Kind_cdc7cd43dac7585f>::Of<'a, <Self as Kind_cdc7cd43dac7585f>::Of<'a, A>>where
<F as Kind_cdc7cd43dac7585f>::Of<'a, A>: Clone,
<Self as Kind_cdc7cd43dac7585f>::Of<'a, A>: Clone,
Sequences an identity of applicative.
This method evaluates the computation inside the identity and wraps the result in the applicative context.
§Type Signature
forall self a f. (Traversable self, Applicative f) => self (f a) -> f (self a)
§Type Parameters
'a: The lifetime of the values.A: The type of the elements in the traversable structure.F: The applicative context.
§Parameters
ta: The identity containing the applicative value.
§Returns
The identity wrapped in the applicative context.
§Examples
use fp_library::{brands::*, functions::*, types::*};
let x = Identity(Some(5));
let y = sequence::<IdentityBrand, _, OptionBrand>(x);
assert_eq!(y, Some(Identity(5)));impl Copy for IdentityBrand
impl Eq for IdentityBrand
impl StructuralPartialEq for IdentityBrand
Auto Trait Implementations§
impl Freeze for IdentityBrand
impl RefUnwindSafe for IdentityBrand
impl Send for IdentityBrand
impl Sync for IdentityBrand
impl Unpin for IdentityBrand
impl UnwindSafe for IdentityBrand
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