mirror of
https://github.com/fluencelabs/interface-types
synced 2025-04-26 08:12:15 +00:00
60 lines
1017 B
Rust
60 lines
1017 B
Rust
|
//! This module defines the WIT types.
|
||
|
|
||
|
use crate::vec1::Vec1;
|
||
|
|
||
|
/// Represents the types supported by WIT.
|
||
|
#[derive(PartialEq, Debug, Clone)]
|
||
|
pub enum InterfaceType {
|
||
|
/// A 8-bits signed integer.
|
||
|
S8,
|
||
|
|
||
|
/// A 16-bits signed integer.
|
||
|
S16,
|
||
|
|
||
|
/// A 32-bits signed integer.
|
||
|
S32,
|
||
|
|
||
|
/// A 64-bits signed integer.
|
||
|
S64,
|
||
|
|
||
|
/// A 8-bits unsigned integer.
|
||
|
U8,
|
||
|
|
||
|
/// A 16-bits unsigned integer.
|
||
|
U16,
|
||
|
|
||
|
/// A 32-bits unsigned integer.
|
||
|
U32,
|
||
|
|
||
|
/// A 64-bits unsigned integer.
|
||
|
U64,
|
||
|
|
||
|
/// A 32-bits float.
|
||
|
F32,
|
||
|
|
||
|
/// A 64-bits float.
|
||
|
F64,
|
||
|
|
||
|
/// A string.
|
||
|
String,
|
||
|
|
||
|
/// An `any` reference.
|
||
|
Anyref,
|
||
|
|
||
|
/// A 32-bits integer (as defined in WebAssembly core).
|
||
|
I32,
|
||
|
|
||
|
/// A 64-bits integer (as defiend in WebAssembly core).
|
||
|
I64,
|
||
|
|
||
|
/// A record.
|
||
|
Record(RecordType),
|
||
|
}
|
||
|
|
||
|
/// Represents a record type.
|
||
|
#[derive(PartialEq, Debug, Clone)]
|
||
|
pub struct RecordType {
|
||
|
/// Types representing the fields.
|
||
|
pub fields: Vec1<InterfaceType>,
|
||
|
}
|