Skip to main content

wasmtime_c_api/types/
arrayref.rs

1use crate::wasmtime_field_type_t;
2use std::mem::MaybeUninit;
3use wasmtime::ArrayType;
4
5#[derive(Clone)]
6pub struct wasmtime_array_type_t {
7    pub(crate) ty: ArrayType,
8}
9wasmtime_c_api_macros::declare_ty!(wasmtime_array_type_t);
10
11#[unsafe(no_mangle)]
12pub extern "C" fn wasmtime_array_type_new(
13    engine: &crate::wasm_engine_t,
14    field: &wasmtime_field_type_t,
15) -> Box<wasmtime_array_type_t> {
16    let ft = field.to_wasmtime();
17    let ty = ArrayType::new(&engine.engine, ft);
18    Box::new(wasmtime_array_type_t { ty })
19}
20
21#[unsafe(no_mangle)]
22pub extern "C" fn wasmtime_array_type_element(
23    ty: &wasmtime_array_type_t,
24    out: &mut MaybeUninit<wasmtime_field_type_t>,
25) {
26    out.write(ty.ty.field_type().into());
27}