use crate::BytecodeDecodeError;
use primitives::Bytes;
use rwasm::RwasmModule;
pub static RWASM_MAGIC_BYTES: Bytes = primitives::bytes!("ef52");
pub static WASM_MAGIC_BYTES: Bytes = primitives::bytes!("0061736d");
#[derive(Clone, Debug, PartialEq, Eq, Hash, Ord, PartialOrd)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RwasmBytecode {
pub module: RwasmModule,
pub raw: Bytes,
}
impl RwasmBytecode {
pub fn new(raw: Bytes) -> Result<Self, BytecodeDecodeError> {
let (module, _) = RwasmModule::new_checked(raw.as_ref()).map_err(|_| BytecodeDecodeError::Rwasm)?;
Ok(Self { module, raw })
}
#[inline]
pub fn raw(&self) -> &Bytes {
&self.raw
}
}