pub unsafe trait ComponentType { }component-model only.Expand description
A trait representing types which can be passed to and read from components with the canonical ABI.
This trait is implemented for Rust types which can be communicated to
components. The Func::typed and TypedFunc Rust items are the main
consumers of this trait.
Supported Rust types include:
| Component Model Type | Rust Type |
|---|---|
{s,u}{8,16,32,64} | {i,u}{8,16,32,64} |
f{32,64} | f{32,64} |
bool | bool |
char | char |
tuple<A, B> | (A, B) |
option<T> | Option<T> |
result | Result<(), ()> |
result<T> | Result<T, ()> |
result<_, E> | Result<(), E> |
result<T, E> | Result<T, E> |
string | String, &str, or WasmStr |
list<T> | Vec<T>, &[T], or WasmList |
own<T>, borrow<T> | Resource<T> or ResourceAny |
record | #[derive(ComponentType)] |
variant | #[derive(ComponentType)] |
enum | #[derive(ComponentType)] |
flags | flags! |
Rust standard library pointers such as &T, Box<T>, Rc<T>, and Arc<T>
additionally represent whatever type T represents in the component model.
Note that types such as record, variant, enum, and flags are
generated by the embedder at compile time. These macros derive
implementation of this trait for custom types to map to custom types in the
component model. Note that for record, variant, enum, and flags
those types are often generated by the
bindgen! macro from WIT definitions.
Types that implement ComponentType are used for Params and Return
in TypedFunc and Func::typed.
The contents of this trait are hidden as it’s intended to be an implementation detail of Wasmtime. The contents of this trait are not covered by Wasmtime’s stability guarantees.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
impl ComponentType for bool
runtime only.impl ComponentType for char
runtime only.impl ComponentType for f32
runtime only.impl ComponentType for f64
runtime only.impl ComponentType for i8
runtime only.impl ComponentType for i16
runtime only.impl ComponentType for i32
runtime only.impl ComponentType for i64
runtime only.impl ComponentType for str
runtime only.impl ComponentType for u8
runtime only.impl ComponentType for u16
runtime only.impl ComponentType for u32
runtime only.impl ComponentType for u64
runtime only.impl ComponentType for ()
runtime only.impl ComponentType for String
runtime only.impl<A1> ComponentType for (A1,)where
A1: ComponentType,
runtime only.impl<A1, A2> ComponentType for (A1, A2)where
A1: ComponentType,
A2: ComponentType,
runtime only.impl<A1, A2, A3> ComponentType for (A1, A2, A3)
runtime only.impl<A1, A2, A3, A4> ComponentType for (A1, A2, A3, A4)
runtime only.impl<A1, A2, A3, A4, A5> ComponentType for (A1, A2, A3, A4, A5)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6> ComponentType for (A1, A2, A3, A4, A5, A6)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7> ComponentType for (A1, A2, A3, A4, A5, A6, A7)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
A10: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
A10: ComponentType,
A11: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
A10: ComponentType,
A11: ComponentType,
A12: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
A10: ComponentType,
A11: ComponentType,
A12: ComponentType,
A13: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
A10: ComponentType,
A11: ComponentType,
A12: ComponentType,
A13: ComponentType,
A14: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
A10: ComponentType,
A11: ComponentType,
A12: ComponentType,
A13: ComponentType,
A14: ComponentType,
A15: ComponentType,
runtime only.impl<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> ComponentType for (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)where
A1: ComponentType,
A2: ComponentType,
A3: ComponentType,
A4: ComponentType,
A5: ComponentType,
A6: ComponentType,
A7: ComponentType,
A8: ComponentType,
A9: ComponentType,
A10: ComponentType,
A11: ComponentType,
A12: ComponentType,
A13: ComponentType,
A14: ComponentType,
A15: ComponentType,
A16: ComponentType,
runtime only.impl<T> ComponentType for Option<T>where
T: ComponentType,
runtime only.impl<T> ComponentType for [T]where
T: ComponentType,
runtime only.impl<T, E> ComponentType for Result<T, E>where
T: ComponentType,
E: ComponentType,
runtime only.impl<T: ComponentType + ?Sized> ComponentType for &T
runtime only.impl<T: ComponentType + ?Sized> ComponentType for Box<T>
runtime only.impl<T: ComponentType + ?Sized> ComponentType for Rc<T>
runtime only.impl<T: ComponentType + ?Sized> ComponentType for Arc<T>
runtime only.impl<T: ComponentType> ComponentType for Vec<T>
runtime only.Implementors§
impl ComponentType for ResourceAny
runtime only.impl ComponentType for WasmStr
runtime only.impl<T: 'static> ComponentType for Resource<T>
runtime only.impl<T: ComponentType> ComponentType for WasmList<T>
runtime only.