Struct frunk::traits::Poly

source ·
pub struct Poly<T>(pub T);
Expand description

Wrapper type around a function for polymorphic maps and folds.

This is a thin generic wrapper type that is used to differentiate between single-typed generic closures F that implements, say, Fn(i8) -> bool, and a Poly-typed F that implements multiple Function types via the Func trait. (say, Func<i8, Output=bool> and Func<bool, Output=f32>)

This is needed because there are completely generic impls for many of the HList traits that take a simple unwrapped closure.

Tuple Fields§

§0: T

Trait Implementations§

source§

impl<T> Clone for Poly<T>
where T: Clone,

source§

fn clone(&self) -> Poly<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<P, R, CH, CTail> CoproductFoldable<Poly<P>, R> for Coproduct<CH, CTail>
where P: Func<CH, Output = R>, CTail: CoproductFoldable<Poly<P>, R>,

source§

fn fold(self, f: Poly<P>) -> R

Use functions to fold a coproduct into a single value. Read more
source§

impl<'a, P, CH, CTail> CoproductMappable<&'a Poly<P>> for Coproduct<CH, CTail>
where P: Func<CH>, CTail: CoproductMappable<&'a Poly<P>>,

Implementation for mapping a Coproduct using a &poly_fn!.

§

type Output = Coproduct<<P as Func<CH>>::Output, <CTail as CoproductMappable<&'a Poly<P>>>::Output>

source§

fn map( self, poly: &'a Poly<P> ) -> <Coproduct<CH, CTail> as CoproductMappable<&'a Poly<P>>>::Output

Use functions to map each variant of a coproduct. Read more
source§

impl<'a, P, CH, CTail> CoproductMappable<&'a mut Poly<P>> for Coproduct<CH, CTail>
where P: Func<CH>, CTail: CoproductMappable<&'a mut Poly<P>>,

Implementation for mapping a Coproduct using a &mut poly_fn!.

§

type Output = Coproduct<<P as Func<CH>>::Output, <CTail as CoproductMappable<&'a mut Poly<P>>>::Output>

source§

fn map( self, poly: &'a mut Poly<P> ) -> <Coproduct<CH, CTail> as CoproductMappable<&'a mut Poly<P>>>::Output

Use functions to map each variant of a coproduct. Read more
source§

impl<P, CH, CTail> CoproductMappable<Poly<P>> for Coproduct<CH, CTail>
where P: Func<CH>, CTail: CoproductMappable<Poly<P>>,

Implementation for mapping a Coproduct using a poly_fn!.

§

type Output = Coproduct<<P as Func<CH>>::Output, <CTail as CoproductMappable<Poly<P>>>::Output>

source§

fn map( self, poly: Poly<P> ) -> <Coproduct<CH, CTail> as CoproductMappable<Poly<P>>>::Output

Use functions to map each variant of a coproduct. Read more
source§

impl<T> Debug for Poly<T>
where T: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<T> Default for Poly<T>
where T: Default,

source§

fn default() -> Poly<T>

Returns the “default value” for a type. Read more
source§

impl<P, R, H, Tail, Acc> HFoldLeftable<Poly<P>, Acc> for HCons<H, Tail>
where Tail: HFoldLeftable<Poly<P>, R>, P: Func<(Acc, H), Output = R>,

§

type Output = <Tail as HFoldLeftable<Poly<P>, R>>::Output

source§

fn foldl( self, poly: Poly<P>, acc: Acc ) -> <HCons<H, Tail> as HFoldLeftable<Poly<P>, Acc>>::Output

Perform a left fold over an HList. Read more
source§

impl<P, R, H, Tail, Init> HFoldRightable<Poly<P>, Init> for HCons<H, Tail>
where Tail: HFoldRightable<Poly<P>, Init>, P: Func<(<Tail as HFoldRightable<Poly<P>, Init>>::Output, H), Output = R>,

§

type Output = R

source§

fn foldr( self, poly: Poly<P>, init: Init ) -> <HCons<H, Tail> as HFoldRightable<Poly<P>, Init>>::Output

Perform a right fold over an HList. Read more
source§

impl<P, H, Tail> HMappable<Poly<P>> for HCons<H, Tail>
where P: Func<H>, Tail: HMappable<Poly<P>>,

§

type Output = HCons<<P as Func<H>>::Output, <Tail as HMappable<Poly<P>>>::Output>

source§

fn map(self, poly: Poly<P>) -> <HCons<H, Tail> as HMappable<Poly<P>>>::Output

Apply a function to each element of an HList. Read more
source§

impl<T> Copy for Poly<T>
where T: Copy,

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for Poly<T>
where T: RefUnwindSafe,

§

impl<T> Send for Poly<T>
where T: Send,

§

impl<T> Sync for Poly<T>
where T: Sync,

§

impl<T> Unpin for Poly<T>
where T: Unpin,

§

impl<T> UnwindSafe for Poly<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Choices> CoproductSubsetter<CNil, HNil> for Choices

§

type Remainder = Choices

source§

fn subset( self ) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>

Extract a subset of the possible types in a coproduct (or get the remaining possibilities) Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U, I> LiftInto<U, I> for T
where U: LiftFrom<T, I>,

source§

fn lift_into(self) -> U

Performs the indexed conversion.
source§

impl<Source> Sculptor<HNil, HNil> for Source

§

type Remainder = Source

source§

fn sculpt(self) -> (HNil, <Source as Sculptor<HNil, HNil>>::Remainder)

Consumes the current HList and returns an HList with the requested shape. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.