[][src]Trait gluon_vm::api::VmType

pub trait VmType {
    type Type: ?Sized + Any;
    fn make_forall_type(vm: &Thread) -> ArcType { ... }
fn make_type(vm: &Thread) -> ArcType { ... }
fn extra_args() -> VmIndex { ... } }

Trait which maps a type in rust to a type in gluon

Associated Types

type Type: ?Sized + Any

A version of Self which implements Any allowing a TypeId to be retrieved

Loading content...

Provided methods

fn make_forall_type(vm: &Thread) -> ArcType

fn make_type(vm: &Thread) -> ArcType

Creates an gluon type which maps to Self in rust

fn extra_args() -> VmIndex

How many extra arguments a function returning this type requires. Used for abstract types which when used in return position should act like they still need more arguments before they are called

Loading content...

Implementations on Foreign Types

impl<R: VmType> VmType for fn() -> R[src]

impl<'s, R: VmType> VmType for dyn Fn() -> R + 's[src]

impl<A: VmType, R: VmType> VmType for fn(_: A) -> R[src]

impl<'s, A: VmType, R: VmType> VmType for dyn Fn(A) -> R + 's[src]

impl<A: VmType, B: VmType, R: VmType> VmType for fn(_: A, _: B) -> R[src]

type Type = fn(_: A::Type, _: B::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<'s, A: VmType, B: VmType, R: VmType> VmType for dyn Fn(A, B) -> R + 's[src]

type Type = fn(_: A::Type, _: B::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<A: VmType, B: VmType, C: VmType, R: VmType> VmType for fn(_: A, _: B, _: C) -> R[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<'s, A: VmType, B: VmType, C: VmType, R: VmType> VmType for dyn Fn(A, B, C) -> R + 's[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<A: VmType, B: VmType, C: VmType, D: VmType, R: VmType> VmType for fn(_: A, _: B, _: C, _: D) -> R[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, R: VmType> VmType for dyn Fn(A, B, C, D) -> R + 's[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, R: VmType> VmType for fn(_: A, _: B, _: C, _: D, _: E) -> R[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type, _: E::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, R: VmType> VmType for dyn Fn(A, B, C, D, E) -> R + 's[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type, _: E::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, R: VmType> VmType for fn(_: A, _: B, _: C, _: D, _: E, _: F) -> R[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type, _: E::Type, _: F::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, R: VmType> VmType for dyn Fn(A, B, C, D, E, F) -> R + 's[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type, _: E::Type, _: F::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, G: VmType, R: VmType> VmType for fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> R[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type, _: E::Type, _: F::Type, _: G::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, G: VmType, R: VmType> VmType for dyn Fn(A, B, C, D, E, F, G) -> R + 's[src]

type Type = fn(_: A::Type, _: B::Type, _: C::Type, _: D::Type, _: E::Type, _: F::Type, _: G::Type) -> R::Type

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<'vm, T: ?Sized + VmType> VmType for PhantomData<T>[src]

impl<'vm, T: ?Sized + VmType> VmType for &'vm T[src]

impl VmType for ()[src]

impl VmType for u8[src]

impl VmType for i16[src]

impl VmType for i32[src]

impl VmType for i64[src]

impl VmType for u16[src]

impl VmType for u32[src]

impl VmType for u64[src]

impl VmType for usize[src]

impl VmType for isize[src]

impl VmType for f64[src]

impl VmType for bool[src]

impl VmType for Ordering[src]

impl VmType for str[src]

impl VmType for String[src]

impl VmType for char[src]

impl VmType for Path[src]

impl VmType for PathBuf[src]

impl VmType for OsStr[src]

impl VmType for OsString[src]

impl<'s, T: VmType> VmType for Ref<'s, T>[src]

impl<T> VmType for [T] where
    T: VmType,
    T::Type: Sized
[src]

impl<T> VmType for Vec<T> where
    T: VmType,
    T::Type: Sized
[src]

impl<'s, T: VmType> VmType for *const T[src]

impl<'s, T: VmType> VmType for Box<T>[src]

impl<K, V> VmType for BTreeMap<K, V> where
    K: VmType,
    K::Type: Sized,
    V: VmType,
    V::Type: Sized
[src]

impl<T: VmType> VmType for Option<T> where
    T::Type: Sized
[src]

impl<T: VmType, E: VmType> VmType for StdResult<T, E> where
    T::Type: Sized,
    E::Type: Sized
[src]

impl<A, B, C, D, E, F, G, H, I, J, K, L> VmType for (A, B, C, D, E, F, G, H, I, J, K, L) where
    A: VmType,
    B: VmType,
    C: VmType,
    D: VmType,
    E: VmType,
    F: VmType,
    G: VmType,
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    A::Type: Sized,
    B::Type: Sized,
    C::Type: Sized,
    D::Type: Sized,
    E::Type: Sized,
    F::Type: Sized,
    G::Type: Sized,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

type Type = (A::Type, B::Type, C::Type, D::Type, E::Type, F::Type, G::Type, H::Type, I::Type, J::Type, K::Type, L::Type)

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<B, C, D, E, F, G, H, I, J, K, L> VmType for (B, C, D, E, F, G, H, I, J, K, L) where
    B: VmType,
    C: VmType,
    D: VmType,
    E: VmType,
    F: VmType,
    G: VmType,
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    B::Type: Sized,
    C::Type: Sized,
    D::Type: Sized,
    E::Type: Sized,
    F::Type: Sized,
    G::Type: Sized,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

type Type = (B::Type, C::Type, D::Type, E::Type, F::Type, G::Type, H::Type, I::Type, J::Type, K::Type, L::Type)

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<C, D, E, F, G, H, I, J, K, L> VmType for (C, D, E, F, G, H, I, J, K, L) where
    C: VmType,
    D: VmType,
    E: VmType,
    F: VmType,
    G: VmType,
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    C::Type: Sized,
    D::Type: Sized,
    E::Type: Sized,
    F::Type: Sized,
    G::Type: Sized,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

type Type = (C::Type, D::Type, E::Type, F::Type, G::Type, H::Type, I::Type, J::Type, K::Type, L::Type)

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<D, E, F, G, H, I, J, K, L> VmType for (D, E, F, G, H, I, J, K, L) where
    D: VmType,
    E: VmType,
    F: VmType,
    G: VmType,
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    D::Type: Sized,
    E::Type: Sized,
    F::Type: Sized,
    G::Type: Sized,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

type Type = (D::Type, E::Type, F::Type, G::Type, H::Type, I::Type, J::Type, K::Type, L::Type)

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<E, F, G, H, I, J, K, L> VmType for (E, F, G, H, I, J, K, L) where
    E: VmType,
    F: VmType,
    G: VmType,
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    E::Type: Sized,
    F::Type: Sized,
    G::Type: Sized,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

type Type = (E::Type, F::Type, G::Type, H::Type, I::Type, J::Type, K::Type, L::Type)

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<F, G, H, I, J, K, L> VmType for (F, G, H, I, J, K, L) where
    F: VmType,
    G: VmType,
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    F::Type: Sized,
    G::Type: Sized,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

type Type = (F::Type, G::Type, H::Type, I::Type, J::Type, K::Type, L::Type)

fn make_forall_type(vm: &Thread) -> ArcType[src]

fn extra_args() -> VmIndex[src]

impl<G, H, I, J, K, L> VmType for (G, H, I, J, K, L) where
    G: VmType,
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    G::Type: Sized,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

impl<H, I, J, K, L> VmType for (H, I, J, K, L) where
    H: VmType,
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    H::Type: Sized,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

impl<I, J, K, L> VmType for (I, J, K, L) where
    I: VmType,
    J: VmType,
    K: VmType,
    L: VmType,
    I::Type: Sized,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

impl<J, K, L> VmType for (J, K, L) where
    J: VmType,
    K: VmType,
    L: VmType,
    J::Type: Sized,
    K::Type: Sized,
    L::Type: Sized
[src]

impl<K, L> VmType for (K, L) where
    K: VmType,
    L: VmType,
    K::Type: Sized,
    L::Type: Sized
[src]

impl<'a> VmType for Component<'a>[src]

Loading content...

Implementors

impl VmType for A[src]

impl VmType for B[src]

impl VmType for C[src]

impl VmType for D[src]

impl VmType for E[src]

impl VmType for F[src]

impl VmType for G[src]

impl VmType for H[src]

impl VmType for I[src]

impl VmType for J[src]

impl VmType for K[src]

impl VmType for L[src]

impl VmType for M[src]

impl VmType for N[src]

impl VmType for O[src]

impl VmType for P[src]

impl VmType for Q[src]

impl VmType for R[src]

impl VmType for X[src]

impl VmType for Y[src]

impl VmType for Z[src]

impl VmType for EmptyRow[src]

impl VmType for Hole[src]

impl VmType for DirEntry[src]

impl VmType for Metadata[src]

impl VmType for RootedThread[src]

impl VmType for Thread[src]

impl<'a> VmType for gluon_vm::primitives::Component<'a>[src]

impl<'vm, F: VmType> VmType for Primitive<F>[src]

impl<'vm, F: VmType> VmType for RefPrimitive<'vm, F>[src]

impl<'vm, T> VmType for WithVM<'vm, T> where
    T: VmType
[src]

impl<F> VmType for FutureResult<F> where
    F: Future,
    F::Item: VmType
[src]

impl<K: VmType, V: VmType> VmType for Map<K, V> where
    K::Type: Sized,
    V::Type: Sized
[src]

impl<R, T> VmType for Eff<R, T> where
    R: VmType,
    R::Type: Sized,
    T: VmType,
    T::Type: Sized
[src]

impl<T> VmType for IO<T> where
    T: VmType,
    T::Type: Sized
[src]

impl<T> VmType for Collect<T> where
    T: IntoIterator,
    T::Item: VmType,
    <T::Item as VmType>::Type: Sized
[src]

impl<T> VmType for Lazy<T> where
    T: VmType,
    T::Type: Sized
[src]

impl<T> VmType for Reference<T> where
    T: VmType,
    T::Type: Sized
[src]

impl<T, F> VmType for Function<T, F> where
    T: Deref<Target = Thread>,
    F: VmType
[src]

impl<T, R: ?Sized> VmType for PushAsRef<T, R> where
    T: AsRef<R>,
    R: 'static,
    &'static R: VmType
[src]

impl<T, V: ?Sized> VmType for Opaque<T, V> where
    V: VmType,
    V::Type: Sized
[src]

impl<T: FieldTypes, U: FieldValues> VmType for Record<T, U>[src]

impl<T: FieldTypes, U: FieldValues, R: VmType> VmType for Row<T, U, R>[src]

impl<T: VmType> VmType for TypedBytecode<T>[src]

impl<T: VmType> VmType for Receiver<T> where
    T::Type: Sized
[src]

impl<T: VmType> VmType for Sender<T> where
    T::Type: Sized
[src]

impl<T: VmType, E> VmType for RuntimeResult<T, E>[src]

impl<T: ?Sized> VmType for UserdataValue<T> where
    T: VmType
[src]

Loading content...