Sparse decoders: a struct or message decodes as a map of the fields present, keyed by their
atoms, with __kiwi_module__ naming its generated Elixir module.
kiwi_sparse_struct_decoder! defines a struct's decoder. A message's comes from
KiwiCodec.RustlerGenerator.Sparse.Messages, or with skip decoders from
KiwiCodec.RustlerGenerator.Sparse.SkipMessages; enums use
KiwiCodec.RustlerGenerator.Values' kiwi_enum_decoder!.
Summary
Types
The Rust KiwiSparseField: a field's id, key, and how to decode its value.
Functions
Whether the module's Rust file appeared or went since the module compiled.
The RustQ AST of each defrust definition.
Callable metadata for the module's definitions.
The Rust items the module generates, in order.
The module's defrustmacro definitions.
The macro_rules! items defrustmacro emits.
The Rust modules the module's defrustmods map its aliases, or itself ([]), to.
The Rust source the module generates.
The RustQ AST of each declared Rust type.
The Rust items the module's types generate.
The Rust types the module's @types declare.
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.
Types
@type kiwi_sparse_field() :: %{ id: RustQ.Type.u32(), name: RustQ.Type.raw(:"&'static str"), repeated: RustQ.Type.bool(), decode: RustQ.Type.path(:KiwiDecodeFn) }
The Rust KiwiSparseField: a field's id, key, and how to decode its value.
Functions
Whether the module's Rust file appeared or went since the module compiled.
The RustQ AST of each defrust definition.
Callable metadata for the module's definitions.
The Rust items the module generates, in order.
The module's defrustmacro definitions.
The macro_rules! items defrustmacro emits.
The Rust modules the module's defrustmods map its aliases, or itself ([]), to.
The Rust source the module generates.
The RustQ AST of each declared Rust type.
The Rust items the module's types generate.
The Rust types the module's @types declare.
@spec kiwi_sparse_message_fields( RustQ.Type.path(:Env, RustQ.Type.lifetime(:a)), RustQ.Type.mut_ref(RustQ.Type.path(:Decoder, RustQ.Type.lifetime(:_))), RustQ.Type.raw(:"&'static str"), RustQ.Type.str(), RustQ.Type.slice(kiwi_sparse_field()) ) :: RustQ.Type.nif_result(term())
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.
@spec kiwi_sparse_message_fields_remaining( RustQ.Type.path(:Env, RustQ.Type.lifetime(:a)), RustQ.Type.mut_ref(RustQ.Type.path(:Decoder, RustQ.Type.lifetime(:_))), RustQ.Type.str(), RustQ.Type.slice(kiwi_sparse_field()), RustQ.Type.mut_ref(RustQ.Type.vec(term())), RustQ.Type.mut_ref(RustQ.Type.vec(term())) ) :: RustQ.Type.nif_result(RustQ.Type.unit())
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.
@spec kiwi_sparse_module_entry( RustQ.Type.path(:Env, RustQ.Type.lifetime(:a)), RustQ.Type.raw(:"&'static str"), RustQ.Type.mut_ref(RustQ.Type.vec(term())), RustQ.Type.mut_ref(RustQ.Type.vec(term())) ) :: RustQ.Type.unit()
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.
@spec kiwi_sparse_struct_fields( RustQ.Type.path(:Env, RustQ.Type.lifetime(:a)), RustQ.Type.mut_ref(RustQ.Type.path(:Decoder, RustQ.Type.lifetime(:_))), RustQ.Type.raw(:"&'static str"), RustQ.Type.slice(kiwi_sparse_field()) ) :: RustQ.Type.nif_result(term())
A Rust function defrust generates. It runs only as Rust; calling it from Elixir
raises.