Skip to main content

UseType

Struct UseType 

Source
pub struct UseType<Type>(pub PhantomData<Type>);
Expand description

The UseType pattern is used to implement a CGP abstract type with the specified Type.

When a CGP type component is defined using the #[cgp_type] macro, a provider implementation of UseType is automatically generated. With UseType, users can instantiate an abstract type with the specified Type without having to manually implement the given provider trait.

§Example

Given the following type component definition:

#[cgp_type]
pub trait HasNameType {
    type Name;
}

The following UseType implementation would be generated:

impl<Context, Type> NameTypeProvider<Context> for UseType<Type> {
    type Name = Type;
}

Tuple Fields§

§0: PhantomData<Type>

Trait Implementations§

Source§

impl<Context, Tag, Type> IsProviderFor<TypeProviderComponent, Context, Tag> for UseType<Type>

Source§

impl<Context, Tag, Type> TypeProvider<Context, Tag> for UseType<Type>

Source§

type Type = Type

Auto Trait Implementations§

§

impl<Type> Freeze for UseType<Type>
where PhantomData<Type>: Freeze,

§

impl<Type> RefUnwindSafe for UseType<Type>

§

impl<Type> Send for UseType<Type>
where PhantomData<Type>: Send,

§

impl<Type> Sync for UseType<Type>
where PhantomData<Type>: Sync,

§

impl<Type> Unpin for UseType<Type>
where PhantomData<Type>: Unpin,

§

impl<Type> UnsafeUnpin for UseType<Type>
where PhantomData<Type>: UnsafeUnpin,

§

impl<Type> UnwindSafe for UseType<Type>
where PhantomData<Type>: 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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<__Context__, Tag> HasType<Tag> for __Context__
where __Context__: TypeProvider<__Context__, Tag>,

Source§

type Type = <__Context__ as TypeProvider<__Context__, Tag>>::Type

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> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.