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

pub trait VmType {
    type Type: ?Sized + Any;

    const EXTRA_ARGS: VmIndex;
    fn make_forall_type(vm: &Thread) -> ArcType { ... }
fn make_type(vm: &Thread) -> ArcType { ... } }

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...

Associated Constants

const 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...

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

Loading content...

Implementations on Foreign Types

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

type Type = fn() -> R::Type

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

type Type = fn() -> R::Type

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl VmType for Value[src]

type Type = Self

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

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

type Type = T::Type

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

type Type = T::Type

impl VmType for ()[src]

type Type = Self

impl VmType for u8[src]

type Type = Self

impl VmType for i16[src]

type Type = VmInt

impl VmType for i32[src]

type Type = VmInt

impl VmType for i64[src]

type Type = VmInt

impl VmType for u16[src]

type Type = VmInt

impl VmType for u32[src]

type Type = VmInt

impl VmType for u64[src]

type Type = VmInt

impl VmType for usize[src]

type Type = VmInt

impl VmType for isize[src]

type Type = VmInt

impl VmType for f64[src]

type Type = Self

impl VmType for f32[src]

type Type = Self

impl VmType for bool[src]

type Type = Self

impl VmType for Ordering[src]

type Type = Self

impl VmType for str[src]

type Type = <String as VmType>::Type

impl VmType for String[src]

type Type = String

impl VmType for char[src]

type Type = Self

impl VmType for Path[src]

type Type = <PathBuf as VmType>::Type

impl VmType for PathBuf[src]

type Type = String

impl VmType for OsStr[src]

type Type = <OsString as VmType>::Type

impl VmType for OsString[src]

type Type = String

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

type Type = T::Type

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

type Type = Vec<T::Type>

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

type Type = Vec<T::Type>

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

type Type = T::Type

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

type Type = T::Type

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

type Type = BTreeMap<K::Type, V::Type>

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]

type Type = StdResult<T::Type, E::Type>

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)

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)

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)

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)

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)

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)

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]

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

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]

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

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]

type Type = (I::Type, J::Type, K::Type, L::Type)

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]

type Type = (J::Type, K::Type, L::Type)

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

type Type = (K::Type, L::Type)

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

type Type = Component<'static>

Loading content...

Implementors

impl VmType for A[src]

type Type = A

impl VmType for B[src]

type Type = B

impl VmType for C[src]

type Type = C

impl VmType for D[src]

type Type = D

impl VmType for E[src]

type Type = E

impl VmType for F[src]

type Type = F

impl VmType for G[src]

type Type = G

impl VmType for H[src]

type Type = H

impl VmType for I[src]

type Type = I

impl VmType for J[src]

type Type = J

impl VmType for K[src]

type Type = K

impl VmType for L[src]

type Type = L

impl VmType for M[src]

type Type = M

impl VmType for N[src]

type Type = N

impl VmType for O[src]

type Type = O

impl VmType for P[src]

type Type = P

impl VmType for Q[src]

type Type = Q

impl VmType for R[src]

type Type = R

impl VmType for S[src]

type Type = S

impl VmType for T[src]

type Type = T

impl VmType for U[src]

type Type = U

impl VmType for V[src]

type Type = V

impl VmType for X[src]

type Type = X

impl VmType for Y[src]

type Type = Y

impl VmType for Z[src]

type Type = Z

impl VmType for gluon_vm::api::json::Value[src]

type Type = Self

impl VmType for JsonString[src]

type Type = String

impl VmType for JsonValue[src]

impl VmType for EmptyRow[src]

type Type = Self

impl VmType for Hole[src]

impl VmType for DirEntry[src]

impl VmType for Metadata[src]

impl VmType for RootedThread[src]

type Type = Thread

impl VmType for Thread[src]

type Type = Self

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

type Type = Component<'static>

impl<'a, 'b, T> VmType for &'b mut gluon_vm::api::scoped::Ref<'a, T> where
    T: Userdata + VmType
[src]

type Type = T::Type

impl<'a, 'b, T> VmType for &'b mut RefMut<'a, T> where
    T: Userdata + VmType
[src]

type Type = T::Type

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

type Type = F::Type

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

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

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

type Type = Map<K::Type, V::Type>

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

type Type = Eff<R::Type, T::Type>

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

impl<T> VmType for De<T> where
    T: VmType
[src]

type Type = T::Type

impl<T> VmType for Ser<T> where
    T: VmType
[src]

type Type = T::Type

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

type Type = Vec<<T::Item as VmType>::Type>

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

type Type = Lazy<T::Type>

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

impl<T, F> VmType for Function<T, F> where
    T: VmRootInternal,
    F: VmType
[src]

type Type = F::Type

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

type Type = <&'static R as VmType>::Type

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]

type Type = Record<T::Type, U::Type>

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

type Type = Record<T::Type, U::Type>

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...