use serde::Deserialize; use serde::Serialize; use super::ast_node::WasmAstNode; use super::macros::to_wasm; use super::to_wasm::ToWasm; use crate::compare::ElispFact; use crate::types::Clock; use crate::types::ClockStatus; use crate::wasm::to_wasm::ToWasmStandardProperties; #[derive(Debug, Serialize, Deserialize)] pub struct WasmClock { #[serde(rename = "value")] pub(crate) timestamp: Box, pub(crate) duration: Option, pub(crate) status: String, } to_wasm!( WasmClock, Clock<'s>, original, wasm_context, { WasmAstNode::Clock(original) }, { "clock".into() }, { Ok(( Vec::new(), WasmClock { timestamp: Box::new(Into::::into( original.timestamp.to_wasm(wasm_context.clone())?, )), duration: original.duration.map(|s| s.to_owned()), status: match original.status { ClockStatus::Running => "running", ClockStatus::Closed => "closed", } .to_owned(), }, )) } );