RustQ.Rustler (rustq v0.2.0)

Copy Markdown View Source

Builders for common Rustler NIF code.

RustQ.Rustler returns RustQ.Rust fragments that can be spliced into real Rust templates or declared in rustq.exs with rust_items/2.

Use the safe helpers by default. Helpers that work with raw rustler::wrapper::NIF_TERM are named with the nif_term_ prefix so unsafe code stays explicit.

Summary

Functions

Builds a rustler::atoms! block.

Builds cached atom helper functions backed by OnceLock<Atom>.

Builds the rustler::init! declaration for an Elixir module.

Builds a Rustler NIF function declaration.

Builds a Rust struct deriving NifStruct for an Elixir struct module.

Builds raw NIF_TERM map/struct helpers.

Builds an options struct plus decoder function for keyword/map options.

Builds a Rustler resource struct and resource registration helpers.

Returns the ResourceArc<...> Rust type for a resource.

Builds a decoder function for a Rustler resource.

Builds resource initialization code for a Rustler module.

Builds a type alias for a resource's ResourceArc type.

Returns Rust items for a RustQ.Rustler.Schema schema.

Builds a Rust enum that decodes tagged Elixir structs.

Builds safe Term<'a> map/struct helpers.

Builds a decoder function from a Rustler map term into a Rust struct.

Builds common map/term helper functions used by generated decoders.

Functions

atoms(atoms, opts \\ [])

@spec atoms(
  [atom() | String.t() | {atom() | String.t(), String.t()}],
  keyword()
) :: RustQ.Rust.Fragment.t()

Builds a rustler::atoms! block.

cached_atoms(atoms, opts \\ [])

@spec cached_atoms(
  [atom() | String.t() | {atom() | String.t(), String.t()}],
  keyword()
) :: [RustQ.Rust.Fragment.t()]

Builds cached atom helper functions backed by OnceLock<Atom>.

init(module)

@spec init(module() | String.t()) :: RustQ.Rust.Fragment.t()

Builds the rustler::init! declaration for an Elixir module.

nif(name, opts \\ [])

@spec nif(
  atom() | String.t(),
  keyword()
) :: RustQ.Rust.Function.t()

Builds a Rustler NIF function declaration.

Options include :args, :returns, :body, :vis, and :schedule.

nif_struct(name, module, opts \\ [])

@spec nif_struct(atom() | String.t(), module() | String.t(), keyword()) ::
  RustQ.Rust.Fragment.t()

Builds a Rust struct deriving NifStruct for an Elixir struct module.

nif_term_builders(opts \\ [])

@spec nif_term_builders(keyword()) :: [RustQ.Rust.Fragment.t()]

Builds raw NIF_TERM map/struct helpers.

These helpers generate unsafe Rust and are intended for low-level Rustler code where raw terms are required. Prefer term_builders/1 when Term<'a> is available.

opts_decoder(name, opts)

@spec opts_decoder(
  atom() | String.t(),
  keyword()
) :: [RustQ.Rust.Fragment.t()]

Builds an options struct plus decoder function for keyword/map options.

resource(name, opts \\ [])

@spec resource(
  atom() | String.t(),
  keyword()
) :: [RustQ.Rust.Fragment.t()]

Builds a Rustler resource struct and resource registration helpers.

resource_arc(name)

@spec resource_arc(atom() | String.t()) :: String.t()

Returns the ResourceArc<...> Rust type for a resource.

resource_decoder(name, opts \\ [])

@spec resource_decoder(
  atom() | String.t(),
  keyword()
) :: RustQ.Rust.Fragment.t()

Builds a decoder function for a Rustler resource.

resource_init(name)

@spec resource_init(atom() | String.t()) :: RustQ.Rust.Fragment.t()

Builds resource initialization code for a Rustler module.

resource_type(name, opts \\ [])

@spec resource_type(
  atom() | String.t(),
  keyword()
) :: RustQ.Rust.TypeAlias.t()

Builds a type alias for a resource's ResourceArc type.

schema_items(schema)

@spec schema_items(RustQ.Rustler.Schema.t()) :: [RustQ.Rust.Fragment.t()]

Returns Rust items for a RustQ.Rustler.Schema schema.

tagged_enum(name, opts)

@spec tagged_enum(
  atom() | String.t(),
  keyword()
) :: [RustQ.Rust.Fragment.t()]

Builds a Rust enum that decodes tagged Elixir structs.

term_builders(opts \\ [])

@spec term_builders(keyword()) :: [RustQ.Rust.Fragment.t()]

Builds safe Term<'a> map/struct helpers.

term_decoder(name, opts)

@spec term_decoder(
  atom() | String.t(),
  keyword()
) :: [RustQ.Rust.Fragment.t()]

Builds a decoder function from a Rustler map term into a Rust struct.

term_helpers(opts \\ [])

@spec term_helpers(keyword()) :: [RustQ.Rust.Fragment.t()]

Builds common map/term helper functions used by generated decoders.