Trait typescript_type_def::TypeDef [−][src]
Expand description
A Rust type that has a corresponding TypeScript type definition.
For a Rust type T
, the TypeDef
trait defines a TypeScript type which
describes JavaScript value that are equivalents of Rust values of type T
as encoded to JSON using serde_json
. The
types are one-to-one, so decoding from TypeScript to JSON to Rust also
works.
You should use #[derive(TypeDef)]
macro to
implement this trait on your own types.
This trait is implemented for basic Rust types as follows:
Rust type | TypeScript type |
---|---|
bool | boolean |
String | string |
str | string |
numeric types | number 1 |
() | null |
(A, B, C) | [A, B, C] |
[T; N] | [T, T, ..., T] (an N -tuple) |
Option<T> | T | null |
Vec<T> | T[] |
[T] | T[] |
HashSet<T> | T[] |
BTreeSet<T> | T[] |
HashMap<K, V> | Record<K, V> |
BTreeMap<K, V> | Record<K, V> |
&'static T | T |
Box<T> | T |
Cow<'static, T> | T |
PhantomData<T> | T |
Numeric types are emitted as named aliases converted to PascalCase (e.g.
Usize
,I32
,F64
,NonZeroI8
, etc.). Since they are simple aliases they do not enforce anything in TypeScript about the Rust types’ numeric bounds, but serve to document their intended range. ↩
Associated Constants
Implementations on Foreign Types
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
T14: TypeDef,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
T14: TypeDef,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
T14: TypeDef,
T15: TypeDef,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
T14: TypeDef,
T15: TypeDef,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
T14: TypeDef,
T15: TypeDef,
T16: TypeDef,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> TypeDef for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) where
T1: TypeDef,
T2: TypeDef,
T3: TypeDef,
T4: TypeDef,
T5: TypeDef,
T6: TypeDef,
T7: TypeDef,
T8: TypeDef,
T9: TypeDef,
T10: TypeDef,
T11: TypeDef,
T12: TypeDef,
T13: TypeDef,
T14: TypeDef,
T15: TypeDef,
T16: TypeDef,