Skip to main content

ParameterizedFamily

Trait ParameterizedFamily 

Source
pub trait ParameterizedFamily<P: Parameter>: Sized {
    type To: Parameterized<P, Family = Self, ParameterStructure = <Self as ParameterizedFamily<Placeholder>>::To>
       where Self: ParameterizedFamily<Placeholder>;
}
Expand description

Type-level family that maps Parameter types nested in a type while preserving its overall structure. This is used internally by Parameterized and is based on the type family approach described in this blog post. This trait is generic over P (instead of using a non-generic family trait with type To<P: Parameter>) so that each family can constrain the parameter domain at the impl level. For example, a family can implement ParameterizedFamily<P> only for P: Parameter + Clone. With a generic associated type To<P> on a non-generic family trait, the declaration would quantify over all P: Parameter, and implementations would not be allowed to add stricter per-family bounds on P.

Required Associated Types§

Source

type To: Parameterized<P, Family = Self, ParameterStructure = <Self as ParameterizedFamily<Placeholder>>::To> where Self: ParameterizedFamily<Placeholder>

Type obtained by replacing Parameter types nested in this type with P.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<P: Parameter> ParameterizedFamily<P> for ()

Source§

type To = ()

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0,)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To,)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F5: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4, F5)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To, <F5 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F5: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F6: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4, F5, F6)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To, <F5 as ParameterizedFamily<P>>::To, <F6 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F5: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F6: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F7: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4, F5, F6, F7)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To, <F5 as ParameterizedFamily<P>>::To, <F6 as ParameterizedFamily<P>>::To, <F7 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F5: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F6: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F7: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F8: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4, F5, F6, F7, F8)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To, <F5 as ParameterizedFamily<P>>::To, <F6 as ParameterizedFamily<P>>::To, <F7 as ParameterizedFamily<P>>::To, <F8 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F5: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F6: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F7: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F8: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F9: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To, <F5 as ParameterizedFamily<P>>::To, <F6 as ParameterizedFamily<P>>::To, <F7 as ParameterizedFamily<P>>::To, <F8 as ParameterizedFamily<P>>::To, <F9 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F5: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F6: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F7: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F8: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F9: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F10: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To, <F5 as ParameterizedFamily<P>>::To, <F6 as ParameterizedFamily<P>>::To, <F7 as ParameterizedFamily<P>>::To, <F8 as ParameterizedFamily<P>>::To, <F9 as ParameterizedFamily<P>>::To, <F10 as ParameterizedFamily<P>>::To)

Source§

impl<P: Parameter, F0: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F1: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F2: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F3: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F4: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F5: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F6: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F7: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F8: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F9: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F10: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>, F11: ParameterizedFamily<P> + ParameterizedFamily<Placeholder>> ParameterizedFamily<P> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11)

Source§

type To = (<F0 as ParameterizedFamily<P>>::To, <F1 as ParameterizedFamily<P>>::To, <F2 as ParameterizedFamily<P>>::To, <F3 as ParameterizedFamily<P>>::To, <F4 as ParameterizedFamily<P>>::To, <F5 as ParameterizedFamily<P>>::To, <F6 as ParameterizedFamily<P>>::To, <F7 as ParameterizedFamily<P>>::To, <F8 as ParameterizedFamily<P>>::To, <F9 as ParameterizedFamily<P>>::To, <F10 as ParameterizedFamily<P>>::To, <F11 as ParameterizedFamily<P>>::To)

Implementors§