MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / val

Function val

crates/wast/src/component.rs:9–53  ·  view source on GitHub ↗
(v: &ComponentConst<'_>)

Source from the content-addressed store, hash-verified

7pub use wasmtime::component::*;
8
9pub fn val(v: &ComponentConst<'_>) -> Result<Val> {
10 Ok(match v {
11 ComponentConst::Bool(b) => Val::Bool(*b),
12 ComponentConst::U8(b) => Val::U8(b.0),
13 ComponentConst::S8(b) => Val::S8(b.0),
14 ComponentConst::U16(b) => Val::U16(b.0),
15 ComponentConst::S16(b) => Val::S16(b.0),
16 ComponentConst::U32(b) => Val::U32(b.0),
17 ComponentConst::S32(b) => Val::S32(b.0),
18 ComponentConst::U64(b) => Val::U64(b.0),
19 ComponentConst::S64(b) => Val::S64(b.0),
20 ComponentConst::F32(b) => Val::Float32(f32::from_bits(b.0)),
21 ComponentConst::F64(b) => Val::Float64(f64::from_bits(b.0)),
22 ComponentConst::Char(b) => Val::Char(*b),
23 ComponentConst::String(s) => Val::String(s.to_string()),
24 ComponentConst::List(vals) => {
25 let vals = vals.iter().map(|v| val(v)).collect::<Result<Vec<_>>>()?;
26 Val::List(vals)
27 }
28 ComponentConst::Record(vals) => {
29 let mut fields = Vec::new();
30 for (name, v) in vals {
31 fields.push((name.to_string(), val(v)?));
32 }
33 Val::Record(fields)
34 }
35 ComponentConst::Tuple(vals) => {
36 Val::Tuple(vals.iter().map(|v| val(v)).collect::<Result<Vec<_>>>()?)
37 }
38 ComponentConst::Enum(name) => Val::Enum(name.to_string()),
39 ComponentConst::Variant { case, payload } => {
40 let payload = payload_val(payload.as_deref())?;
41 Val::Variant(case.to_string(), payload)
42 }
43 ComponentConst::Option(v) => Val::Option(match v {
44 Some(v) => Some(Box::new(val(v)?)),
45 None => None,
46 }),
47 ComponentConst::Result(v) => Val::Result(match v {
48 Ok(v) => Ok(payload_val(v.as_deref())?),
49 Err(v) => Err(payload_val(v.as_deref())?),
50 }),
51 ComponentConst::Flags(v) => Val::Flags(v.iter().map(|s| s.to_string()).collect()),
52 })
53}
54
55fn payload_val(v: Option<&ComponentConst<'_>>) -> Result<Option<Box<Val>>> {
56 match v {

Callers 1

payload_valFunction · 0.70

Calls 15

OkFunction · 0.85
Float32Class · 0.85
Float64Class · 0.85
EnumClass · 0.85
payload_valFunction · 0.85
ResultClass · 0.85
collectMethod · 0.80
ListClass · 0.50
newFunction · 0.50
RecordClass · 0.50
TupleClass · 0.50
VariantClass · 0.50

Tested by

no test coverage detected