IntoLanguageChildren

Trait IntoLanguageChildren 

Source
pub trait IntoLanguageChildren: Sized
where Self::View: Functor<Container<Self::Param> = Self>, Self::RawData: Functor, <Self::RawData as Functor>::Container<Id>: LanguageChildren,
{ type Param; type View; type RawData; // Required methods fn view<T>(children: RawData<Self, T>) -> View<Self, T>; fn unview<T>(children: View<Self, T>) -> RawData<Self, T>; fn raw_as_refs<T>(refs: &RawData<Self, T>) -> RawData<Self, &T>; // Provided method fn map<U>(self, f: impl FnMut(Self::Param) -> U) -> View<Self, U> { ... } }
Expand description

A trait for a type that can be converted from/to egg::LanguageChildren. Self::RawData must be a egg::LanguageChildren.

This can be derived by self::LanguageChildren derive macro.

Required Associated Types§

Source

type Param

Parameter type (e.g. T for Vec<T>)

Source

type View

View type, which has a descriptive field name.

Source

type RawData

Raw egg::LanguageChildren type, which is typiacally a fixed-length array, Vec, egg::Id, or their newtype-wrapper.

Required Methods§

Source

fn view<T>(children: RawData<Self, T>) -> View<Self, T>

Converts egg::LanguageChildren into a view type.

Source

fn unview<T>(children: View<Self, T>) -> RawData<Self, T>

Converts a view into egg::LanguageChildren.

Source

fn raw_as_refs<T>(refs: &RawData<Self, T>) -> RawData<Self, &T>

Converts a reference to a egg::LanguageChildren into a reference to a view.

Provided Methods§

Source

fn map<U>(self, f: impl FnMut(Self::Param) -> U) -> View<Self, U>

Maps a view by a function.

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 IntoLanguageChildren for Id

Source§

type View = Identity

Source§

type Param = Id

Source§

type RawData = Identity

Source§

fn view<T>(children: T) -> T

Source§

fn unview<T>(children: T) -> T

Source§

fn raw_as_refs<T>(refs: &T) -> &T

Source§

impl<T> IntoLanguageChildren for Vec<T>

Source§

type View = UndetVec

Source§

type Param = T

Source§

type RawData = UndetVec

Source§

fn view<U>(children: Vec<U>) -> Vec<U>

Source§

fn unview<U>(children: Vec<U>) -> Vec<U>

Source§

fn raw_as_refs<U>(refs: &Vec<U>) -> Vec<&U>

Source§

impl<T, const N: usize> IntoLanguageChildren for [T; N]

Source§

type View = ArrayFunctor<N>

Source§

type Param = T

Source§

type RawData = ArrayFunctor<N>

Source§

fn view<U>(children: [U; N]) -> [U; N]

Source§

fn unview<U>(children: [U; N]) -> [U; N]

Source§

fn raw_as_refs<U>(refs: &[U; N]) -> [&U; N]

Implementors§