Encodes Elixir values into BSATN (Binary SpacetimeDB Algebraic Type Notation).
All integers are little-endian. Strings and arrays have u32 length prefixes. Structs (products) are unframed concatenated fields. Enums (sums) use a u8 tag.
Summary
Functions
Encode an array of elements using the given element encoder function. u32 count prefix + concatenated encoded elements.
Encode a boolean as 1 byte.
Encode raw bytes: u32 length prefix + data.
Encode a 32-bit float (IEEE 754), stored as u32 bits, little-endian.
Encode a 64-bit float (IEEE 754), stored as u64 bits, little-endian.
Encode a signed 8-bit integer.
Encode a signed 16-bit integer, little-endian.
Encode a signed 32-bit integer, little-endian.
Encode a signed 64-bit integer, little-endian.
Encode a signed 128-bit integer, little-endian.
Encode a signed 256-bit integer, little-endian.
Encode an Option: tag 0 = Some(value), tag 1 = None. Note: SpacetimeDB uses 0=Some, 1=None (opposite of Rust's convention).
Encode a product (struct): just concatenate all field binaries in order.
Encode a UTF-8 string: u32 length prefix + raw bytes.
Encode a sum type (enum variant): u8 tag + encoded payload.
Encode an unsigned 8-bit integer.
Encode an unsigned 16-bit integer, little-endian.
Encode an unsigned 32-bit integer, little-endian.
Encode an unsigned 64-bit integer, little-endian.
Encode an unsigned 128-bit integer, little-endian.
Encode an unsigned 256-bit integer, little-endian.
Functions
Encode an array of elements using the given element encoder function. u32 count prefix + concatenated encoded elements.
Encode a boolean as 1 byte.
Encode raw bytes: u32 length prefix + data.
Encode a 32-bit float (IEEE 754), stored as u32 bits, little-endian.
Encode a 64-bit float (IEEE 754), stored as u64 bits, little-endian.
Encode a signed 8-bit integer.
Encode a signed 16-bit integer, little-endian.
Encode a signed 32-bit integer, little-endian.
Encode a signed 64-bit integer, little-endian.
Encode a signed 128-bit integer, little-endian.
Encode a signed 256-bit integer, little-endian.
Encode an Option: tag 0 = Some(value), tag 1 = None. Note: SpacetimeDB uses 0=Some, 1=None (opposite of Rust's convention).
Encode a product (struct): just concatenate all field binaries in order.
Encode a UTF-8 string: u32 length prefix + raw bytes.
Encode a sum type (enum variant): u8 tag + encoded payload.
Encode an unsigned 8-bit integer.
Encode an unsigned 16-bit integer, little-endian.
Encode an unsigned 32-bit integer, little-endian.
Encode an unsigned 64-bit integer, little-endian.
Encode an unsigned 128-bit integer, little-endian.
Encode an unsigned 256-bit integer, little-endian.