1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
//! The cache module provides the common data structures used by compiler backends to allow //! serializing compiled wasm code to a binary format. The binary format can be persisted, //! and loaded to allow skipping compilation and fast startup. use crate::hash::Hash; use std::error::Error; use wasmer::{Module, Store}; /// A generic cache for storing and loading compiled wasm modules. pub trait Cache { /// The serialization error for the implementation type SerializeError: Error + Send + Sync; /// The deserialization error for the implementation type DeserializeError: Error + Send + Sync; /// Loads a module using the provided [`Store`] and [`Hash`]. /// /// # Safety /// This function is unsafe as the cache store could be tampered with. unsafe fn load(&self, store: &Store, key: Hash) -> Result<Module, Self::DeserializeError>; /// Store a [`Module`] into the cache with the given [`Hash`]. fn store(&mut self, key: Hash, module: &Module) -> Result<(), Self::SerializeError>; }