Trait gluon_vm::api::VmType [−][src]
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
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
Implementations on Foreign Types
impl<'vm, T: ?Sized + VmType> VmType for PhantomData<T>
[src]
impl<'vm, T: ?Sized + VmType> VmType for PhantomData<T>
impl<'vm, T: ?Sized + VmType> VmType for &'vm T
[src]
impl<'vm, T: ?Sized + VmType> VmType for &'vm T
impl VmType for ()
[src]
impl VmType for ()
impl VmType for u8
[src]
impl VmType for u8
impl VmType for i16
[src]
impl VmType for i16
impl VmType for i32
[src]
impl VmType for i32
impl VmType for i64
[src]
impl VmType for i64
impl VmType for u16
[src]
impl VmType for u16
impl VmType for u32
[src]
impl VmType for u32
impl VmType for u64
[src]
impl VmType for u64
impl VmType for usize
[src]
impl VmType for usize
impl VmType for isize
[src]
impl VmType for isize
impl VmType for f64
[src]
impl VmType for f64
impl VmType for bool
[src]
impl VmType for bool
impl VmType for Ordering
[src]
impl VmType for Ordering
impl VmType for str
[src]
impl VmType for str
impl VmType for String
[src]
impl VmType for String
impl VmType for char
[src]
impl VmType for char
impl<'s, T: VmType> VmType for Ref<'s, T>
[src]
impl<'s, T: VmType> VmType for Ref<'s, T>
impl<'s, T> VmType for &'s [T] where
T: VmType + ArrayRepr + 's,
T::Type: Sized,
[src]
impl<'s, T> VmType for &'s [T] where
T: VmType + ArrayRepr + 's,
T::Type: Sized,
type Type = &'static [T::Type]
fn make_type(vm: &Thread) -> ArcType
[src]
fn make_type(vm: &Thread) -> ArcType
fn make_forall_type(vm: &Thread) -> ArcType
[src]
fn make_forall_type(vm: &Thread) -> ArcType
fn extra_args() -> VmIndex
[src]
fn extra_args() -> VmIndex
impl<T> VmType for Vec<T> where
T: VmType,
T::Type: Sized,
[src]
impl<T> VmType for Vec<T> where
T: VmType,
T::Type: Sized,
impl<'s, T: VmType> VmType for *const T
[src]
impl<'s, T: VmType> VmType for *const T
impl<T: VmType> VmType for Option<T> where
T::Type: Sized,
[src]
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: Sized,
[src]
impl<T: VmType, E: VmType> VmType for StdResult<T, E> where
T::Type: Sized,
E::Type: Sized,
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]
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,
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]
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,
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]
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,
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]
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,
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]
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,
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]
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,
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<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,
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<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,
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<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,
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<J, K, L> VmType for (J, K, L) where
J: VmType,
K: VmType,
L: VmType,
J::Type: Sized,
K::Type: Sized,
L::Type: Sized,
impl<K, L> VmType for (K, L) where
K: VmType,
L: VmType,
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,
impl<R: VmType> VmType for fn() -> R
[src]
impl<R: VmType> VmType for fn() -> R
impl<'s, R: VmType> VmType for Fn() -> R + 's
[src]
impl<'s, R: VmType> VmType for Fn() -> R + 's
impl<A: VmType, R: VmType> VmType for fn(_: A) -> R
[src]
impl<A: VmType, R: VmType> VmType for fn(_: A) -> R
impl<'s, A: VmType, R: VmType> VmType for Fn(A) -> R + 's
[src]
impl<'s, A: VmType, R: VmType> VmType for Fn(A) -> R + 's
impl<A: VmType, B: VmType, R: VmType> VmType for fn(_: A, _: B) -> R
[src]
impl<A: VmType, B: VmType, R: VmType> VmType for fn(_: A, _: B) -> R
impl<'s, A: VmType, B: VmType, R: VmType> VmType for Fn(A, B) -> R + 's
[src]
impl<'s, A: VmType, B: VmType, R: VmType> VmType for Fn(A, B) -> R + 's
impl<A: VmType, B: VmType, C: VmType, R: VmType> VmType for fn(_: A, _: B, _: C) -> R
[src]
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 Fn(A, B, C) -> R + 's
[src]
impl<'s, A: VmType, B: VmType, C: VmType, R: VmType> VmType for 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
[src]
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 Fn(A, B, C, D) -> R + 's
[src]
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, R: VmType> VmType for 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
[src]
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 Fn(A, B, C, D, E) -> R + 's
[src]
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, R: VmType> VmType for 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
[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
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, R: VmType> VmType for Fn(A, B, C, D, E, F) -> R + 's
[src]
impl<'s, A: VmType, B: VmType, C: VmType, D: VmType, E: VmType, F: VmType, R: VmType> VmType for 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
[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
impl<'s, 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 + 's
[src]
impl<'s, 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 + 's
Implementors
impl VmType for A type Type = A;
impl VmType for B type Type = B;
impl VmType for C type Type = C;
impl VmType for D type Type = D;
impl VmType for E type Type = E;
impl VmType for F type Type = F;
impl VmType for G type Type = G;
impl VmType for H type Type = H;
impl VmType for I type Type = I;
impl VmType for J type Type = J;
impl VmType for K type Type = K;
impl VmType for L type Type = L;
impl VmType for M type Type = M;
impl VmType for N type Type = N;
impl VmType for O type Type = O;
impl VmType for P type Type = P;
impl VmType for Q type Type = Q;
impl VmType for R type Type = R;
impl VmType for X type Type = X;
impl VmType for Y type Type = Y;
impl VmType for Z type Type = Z;
impl<T: FieldTypes, U: FieldValues> VmType for Record<T, U> type Type = Record<T::Type, U::Type>;
impl VmType for Hole type Type = Hole;
impl<T: VmType> VmType for Generic<T> type Type = T::Type;
impl<'vm, T> VmType for WithVM<'vm, T> where
T: VmType, type Type = T::Type;impl<F> VmType for FutureResult<F> where
F: Future,
F::Item: VmType, type Type = <F::Item as VmType>::Type;impl<F> VmType for FutureValue<F> where
F: Future,
F::Item: VmType, type Type = <F::Item as VmType>::Type;impl<T: VmType, E> VmType for RuntimeResult<T, E> type Type = T::Type;
impl<T> VmType for IO<T> where
T: VmType,
T::Type: Sized, type Type = IO<T::Type>;impl<T, V> VmType for OpaqueValue<T, V> where
T: Deref<Target = Thread>,
V: VmType,
V::Type: Sized, type Type = V::Type;impl<'vm, T: VmType> VmType for Array<'vm, T> where
T::Type: Sized, type Type = Array<'static, T::Type>;impl<'vm, T: Any> VmType for Root<'vm, T> type Type = T;
impl<'vm> VmType for RootStr<'vm> type Type = <str as VmType>::Type;
impl<T, R: ?Sized> VmType for PushAsRef<T, R> where
T: AsRef<R>,
R: 'static,
&'static R: VmType, type Type = <&'static R as VmType>::Type;impl<'vm, F: VmType> VmType for Primitive<F> type Type = F::Type;
impl<'vm, F: VmType> VmType for RefPrimitive<'vm, F> type Type = F::Type;
impl<T, F> VmType for Function<T, F> where
T: Deref<Target = Thread>,
F: VmType, type Type = F::Type;impl<T: VmType> VmType for TypedBytecode<T> type Type = T::Type;
impl<K: VmType, V: VmType> VmType for Map<K, V> where
K::Type: Sized,
V::Type: Sized, type Type = Map<K::Type, V::Type>;impl<T: VmType> VmType for Sender<T> where
T::Type: Sized, type Type = Sender<T::Type>;impl<T: VmType> VmType for Receiver<T> where
T::Type: Sized, type Type = Receiver<T::Type>;impl<T> VmType for Lazy<T> where
T: VmType,
T::Type: Sized, type Type = Lazy<T::Type>;impl<T> VmType for Reference<T> where
T: VmType,
T::Type: Sized, type Type = Reference<T::Type>;impl VmType for Thread type Type = Self;
impl VmType for RootedThread type Type = Thread;