Trait List

Source
pub trait List<V>: ListLayout {
    type Value;
}
Expand description

A trait used to calculate the current type contained in the EvolveBox at compile time, meaning that there should not be a runtime cost when using an EvolveBox.

This trait is an implementation detail of this crate and can be mostly ignored.

§Examples

use evobox::{L, List};

fn element_types(value: &L<u8, L<u16, L<u32>>>) {
    fn first(_: &impl List<(), Value = u8>) {}
    first(value);

    fn second(_: &impl List<L<()>, Value = u16>) {}
    second(value);

    fn third(_: &impl List<L<L<()>>, Value = u32>) {}
    third(value);
}

Required Associated Types§

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.

Implementors§

Source§

impl<E, B, C: List<B>> List<L<B>> for L<E, C>

Source§

type Value = <C as List<B>>::Value

Source§

impl<E, C: ListLayout> List<()> for L<E, C>

Source§

type Value = E