Crate holochain_wasmer_common
source · [−]Re-exports
pub use serde_bytes;
pub use result::*;
Modules
Macros
unidiomatic way to derive default trait implementations of TryFrom in/out of SerializedBytes
Helper macro for returning an error from a WASM.
Structs
A Canonical Serialized Bytes representation for data
If you have a data structure that needs a canonical byte representation use this
Always round-trip through SerializedBytes via. a single TryFrom implementation.
This ensures that the internal bytes of SerializedBytes are indeed canonical.
The corrolary is that if bytes are NOT wrapped in SerializedBytes we can assume they are NOT
canonical.
Typically we need a canonical serialization when data is to be handled at the byte level by
independently implemented and maintained systems.
UnsafeBytes the only way to implement a custom round trip through bytes for SerializedBytes
It is intended to be an internal implementation in TryFrom implementations
The assumption is that any code using UnsafeBytes is NOT valid messagepack data
This allows us to enforce that all data round-tripping through SerializedBytes is via TryFrom
and also allow for custom non-messagepack canonical representations of data types.
Enums
Traits
A data structure that can be deserialized from any data format supported
by Serde.
A data structure that can be serialized into any data format supported
by Serde.
Simple and safe type conversions that may fail in a controlled
way under some circumstances. It is the reciprocal of
TryInto
.An attempted conversion that consumes
self
, which may or may not be
expensive.Functions
Given a pointer and a length, return a
u64
merged GuestPtrLen
.
Works via a simple bitwise shift to move the pointer to high bits then OR
the length into the low bits.Given a merged
GuestPtrLen
, split out a u32
pointer and length.
Performs the inverse of merge_u64
. Takes the low u32
bits as the length
then shifts the 32 high bits down and takes those as the pointer.Type Definitions
A
WasmSize
that points to a position in wasm linear memory that the host
and guest are sharing to communicate across function calls.Enough bits to fit a pointer and length into so we can return it. The externs
defined as “C” don’t support multiple return values (unlike wasm). The native
Rust support for wasm externs is not stable at the time of writing.
A
WasmSize
integer that represents the size of bytes to read/write to memory.Something like
usize
for wasm.
Wasm has a memory limit of 4GB so offsets and lengths fit in u32
.