wasmer_interface_types/types.rs
1//! This module defines the WIT types.
2
3use crate::vec1::Vec1;
4
5/// Represents the types supported by WIT.
6#[derive(PartialEq, Debug, Clone)]
7pub enum InterfaceType {
8 /// A 8-bits signed integer.
9 S8,
10
11 /// A 16-bits signed integer.
12 S16,
13
14 /// A 32-bits signed integer.
15 S32,
16
17 /// A 64-bits signed integer.
18 S64,
19
20 /// A 8-bits unsigned integer.
21 U8,
22
23 /// A 16-bits unsigned integer.
24 U16,
25
26 /// A 32-bits unsigned integer.
27 U32,
28
29 /// A 64-bits unsigned integer.
30 U64,
31
32 /// A 32-bits float.
33 F32,
34
35 /// A 64-bits float.
36 F64,
37
38 /// A string.
39 String,
40
41 /// An `any` reference.
42 Anyref,
43
44 /// A 32-bits integer (as defined in WebAssembly core).
45 I32,
46
47 /// A 64-bits integer (as defiend in WebAssembly core).
48 I64,
49
50 /// A record.
51 Record(RecordType),
52}
53
54/// Represents a record type.
55#[derive(PartialEq, Debug, Clone)]
56pub struct RecordType {
57 /// Types representing the fields.
58 /// A record must have at least one field, hence the
59 /// [`Vec1`][crate::vec1::Vec1].
60 pub fields: Vec1<InterfaceType>,
61}