Trait gluon_vm::api::VmType
[−]
[src]
pub trait VmType { type Type: ?Sized + Any; fn make_type(vm: &Thread) -> ArcType { ... } fn extra_args() -> VmIndex { ... } }
Trait which maps a type in rust to a type in gluon
Associated Types
Provided Methods
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
Implementors
impl VmType for A
impl VmType for B
impl VmType for C
impl VmType for D
impl VmType for E
impl VmType for F
impl VmType for G
impl VmType for H
impl VmType for I
impl VmType for J
impl VmType for K
impl VmType for L
impl VmType for M
impl VmType for N
impl VmType for O
impl VmType for P
impl VmType for Q
impl VmType for R
impl VmType for X
impl VmType for Y
impl VmType for Z
impl<A: VmType, F: Field, T: FieldTypes> VmType for Record<HList<(F, A), T>> where A::Type: Sized
impl VmType for Hole
impl<T: VmType> VmType for Generic<T>
impl<'vm, T: ?Sized + VmType> VmType for &'vm T
impl<'vm, T> VmType for WithVM<'vm, T> where T: VmType
impl VmType for ()
impl VmType for u8
impl VmType for i32
impl VmType for u32
impl VmType for usize
impl VmType for VmInt
impl VmType for f64
impl VmType for bool
impl VmType for Ordering
impl VmType for str
impl VmType for String
impl VmType for char
impl<'s, T: VmType> VmType for Ref<'s, T>
impl<'s, T> VmType for &'s [T] where T: VmType + ArrayRepr + 's, T::Type: Sized
impl<T> VmType for Vec<T> where T: VmType, T::Type: Sized
impl<'s, T: VmType> VmType for *const T
impl<T: VmType> VmType for Option<T> where T::Type: Sized
impl<T: VmType, E: VmType> VmType for StdResult<T, E> where T::Type: Sized,
E::Type: Sizedimpl<F> VmType for FutureResult<F> where F: Future, F::Item: VmType
impl<T: VmType, E> VmType for RuntimeResult<T, E>
impl<T> VmType for IO<T> where T: VmType, T::Type: Sized
impl<T, V> VmType for OpaqueValue<T, V> where T: Deref<Target=Thread>,
V: VmType,
V::Type: Sizedimpl<'vm, T: VmType> VmType for Array<'vm, T> where T::Type: Sized
impl<'vm, T: Any> VmType for Root<'vm, T>
impl<'vm> VmType for RootStr<'vm>
impl<T, R> VmType for PushAsRef<T, R> where T: AsRef<R>,
R: 'static,
&'static R: VmTypeimpl<_0, _1, _2, _3, _4, _5, _6> VmType for (_0, _1, _2, _3, _4, _5, _6) where _0: VmType,
_1: VmType,
_2: VmType,
_3: VmType,
_4: VmType,
_5: VmType,
_6: VmType,
_0::Type: Sized,
_1::Type: Sized,
_2::Type: Sized,
_3::Type: Sized,
_4::Type: Sized,
_5::Type: Sized,
_6::Type: Sizedimpl<_1, _2, _3, _4, _5, _6> VmType for (_1, _2, _3, _4, _5, _6) where _1: VmType,
_2: VmType,
_3: VmType,
_4: VmType,
_5: VmType,
_6: VmType,
_1::Type: Sized,
_2::Type: Sized,
_3::Type: Sized,
_4::Type: Sized,
_5::Type: Sized,
_6::Type: Sizedimpl<_2, _3, _4, _5, _6> VmType for (_2, _3, _4, _5, _6) where _2: VmType,
_3: VmType,
_4: VmType,
_5: VmType,
_6: VmType,
_2::Type: Sized,
_3::Type: Sized,
_4::Type: Sized,
_5::Type: Sized,
_6::Type: Sizedimpl<_3, _4, _5, _6> VmType for (_3, _4, _5, _6) where _3: VmType,
_4: VmType,
_5: VmType,
_6: VmType,
_3::Type: Sized,
_4::Type: Sized,
_5::Type: Sized,
_6::Type: Sizedimpl<_4, _5, _6> VmType for (_4, _5, _6) where _4: VmType,
_5: VmType,
_6: VmType,
_4::Type: Sized,
_5::Type: Sized,
_6::Type: Sizedimpl<_5, _6> VmType for (_5, _6) where _5: VmType,
_6: VmType,
_5::Type: Sized,
_6::Type: Sizedimpl<'vm, F: VmType> VmType for Primitive<F>
impl<'vm, F: VmType> VmType for RefPrimitive<'vm, F>
impl<T, F> VmType for Function<T, F> where T: Deref<Target=Thread>, F: VmType
impl<R: VmType> VmType for fn() -> R
impl<'s, R: VmType> VmType for core::ops::Fn() -> R + 's
impl<A: VmType, R: VmType> VmType for fn(_: A) -> R
impl<'s, A: VmType, R: VmType> VmType for core::ops::Fn(A) -> R + 's
impl<A: VmType, B: VmType, R: VmType> VmType for fn(_: A, _: B) -> R
impl<'s, A: VmType, B: VmType, R: VmType> VmType for core::ops::Fn(A, B) -> R + 's
impl<A: VmType, B: VmType, C: VmType, R: VmType> VmType for fn(_: A, _: B, _: C) -> R
impl<'s, A: VmType, B: VmType, C: VmType, R: VmType> VmType for core::ops::Fn(A, B, C) -> R + 's
impl<A: VmType, B: VmType, C: VmType, D: VmType, R: VmType> VmType for fn(_: A, _: B, _: C, _: D) -> R
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, R: VmType> VmType for core::ops::Fn(A, B, C, D) -> R + 's
impl<A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, R: VmType> VmType for fn(_: A, _: B, _: C, _: D, _: E) -> R
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, R: VmType> VmType for core::ops::Fn(A, B, C, D, E) -> R + 's
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
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, R: VmType> VmType for core::ops::Fn(A, B, C, D, E, F) -> R + 's
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
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, G: VmType, R: VmType> VmType for core::ops::Fn(A, B, C, D, E, F, G) -> R + 's
impl<T: VmType> VmType for Sender<T> where T::Type: Sized
impl<T: VmType> VmType for Receiver<T> where T::Type: Sized
impl VmType for Thread
impl VmType for RootedThread
impl<T> VmType for Reference<T> where T: VmType, T::Type: Sized