# rustq v0.6.0 - Table of Contents

> Rust templates and quasiquoting for Elixir

## Pages

- [RustQ](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [RustQ](RustQ.md): Rust template quasiquoting and code generation.
- [RustQ.Cargo](RustQ.Cargo.md): Helpers for discovering Rust package metadata through Cargo.
- [RustQ.Cargo.Metadata](RustQ.Cargo.Metadata.md): Decoded subset of `cargo metadata` used by RustQ.
- [RustQ.Cargo.Package](RustQ.Cargo.Package.md): Package entry from `cargo metadata`.
- [RustQ.Config](RustQ.Config.md): DSL for declaring generated RustQ files in `rustq.exs`.
- [RustQ.Generated](RustQ.Generated.md): File sync helpers for RustQ-generated sources.
- [RustQ.Meta](RustQ.Meta.md): Valid-Elixir macro frontend for generating RustQ Rust fragments.
- [RustQ.Meta.Type](RustQ.Meta.Type.md): Structural metadata for an Elixir typespec lowered by RustQ.
- [RustQ.NativeDescriptor](RustQ.NativeDescriptor.md): Resolved metadata for a `RustQ.NativeRef`.
- [RustQ.NativeEnumDescriptor](RustQ.NativeEnumDescriptor.md): Resolved metadata for a native Rust enum.
- [RustQ.NativeRef](RustQ.NativeRef.md): Reference to a Rust native item used by code generators.
- [RustQ.Rust](RustQ.Rust.md): Elixir-friendly builders for Rust fragments.
- [RustQ.Rust.AST](RustQ.Rust.AST.md): Small Rust AST/IR used by macro frontends before final RustQ validation.
- [RustQ.Rust.AST.Builder](RustQ.Rust.AST.Builder.md): Small builder DSL for `RustQ.Rust.AST` nodes.
- [RustQ.Rust.AST.PatternBuilder](RustQ.Rust.AST.PatternBuilder.md): Small constructor API for RustQ pattern AST nodes.

- [RustQ.Rust.AST.TypeBuilder](RustQ.Rust.AST.TypeBuilder.md): Small constructor API for RustQ type AST nodes.

- [RustQ.Rust.Const](RustQ.Rust.Const.md): Represents a Rust `const` declaration built with `RustQ.Rust.const/4`.

- [RustQ.Rust.EnumDecl](RustQ.Rust.EnumDecl.md): Represents a Rust enum declaration built with `RustQ.Rust.enum/2`.

- [RustQ.Rust.Field](RustQ.Rust.Field.md): Represents a Rust struct field built with `RustQ.Rust.field/3`.

- [RustQ.Rust.Fragment](RustQ.Rust.Fragment.md): Represents a raw Rust fragment validated or spliced by RustQ.

- [RustQ.Rust.Function](RustQ.Rust.Function.md): Represents a Rust function declaration built with `RustQ.Rust.fn/2`.

- [RustQ.Rust.Impl](RustQ.Rust.Impl.md): Represents a Rust `impl` block built with `RustQ.Rust.impl/2`.

- [RustQ.Rust.ModDecl](RustQ.Rust.ModDecl.md): Represents a Rust module declaration built with `RustQ.Rust.mod/2`.

- [RustQ.Rust.Struct](RustQ.Rust.Struct.md): Represents a Rust struct declaration built with `RustQ.Rust.struct/2`.

- [RustQ.Rust.TypeAlias](RustQ.Rust.TypeAlias.md): Represents a Rust type alias built with `RustQ.Rust.type_alias/3`.

- [RustQ.Rust.Use](RustQ.Rust.Use.md): Represents a Rust `use` declaration built with `RustQ.Rust.use/2`.

- [RustQ.Rustler](RustQ.Rustler.md): Builders for common Rustler NIF code.
- [RustQ.Rustler.Schema](RustQ.Rustler.Schema.md): Schema DSL for generating Rustler structs and tagged enums.
- [RustQ.Sigil](RustQ.Sigil.md): Provides the `~R` sigil for inline Rust templates.
- [RustQ.Spec](RustQ.Spec.md): Public helpers for lowering Elixir typespec forms into RustQ type metadata.
- [RustQ.Splice](RustQ.Splice.md): Helpers for composing RustQ splice replacements as plain keyword lists.
- [RustQ.Syn](RustQ.Syn.md): Structural metadata for Rust source parsed with [`syn`](https://docs.rs/syn).
- [RustQ.Syn.Arg](RustQ.Syn.Arg.md): Rust function or method argument metadata. `type` is rendered Rust; `type_ast` is structured metadata.
- [RustQ.Syn.Doc](RustQ.Syn.Doc.md): Utilities for rendering Rust doc comments for downstream docs.
- [RustQ.Syn.Enum](RustQ.Syn.Enum.md): Rust enum metadata, including doc comments and variant names.
- [RustQ.Syn.Field](RustQ.Syn.Field.md): Rust struct field metadata.
- [RustQ.Syn.File](RustQ.Syn.File.md): Rust source file metadata.
- [RustQ.Syn.Function](RustQ.Syn.Function.md): Rust free function metadata, including doc comments, arguments, and return type.
- [RustQ.Syn.Impl](RustQ.Syn.Impl.md): Rust impl block metadata, including target type, optional trait, doc comments, and methods.
- [RustQ.Syn.Index](RustQ.Syn.Index.md): In-memory index of Rust source metadata parsed by `RustQ.Syn`.
- [RustQ.Syn.Method](RustQ.Syn.Method.md): Rust impl method metadata, including doc comments, arguments, and return type.
- [RustQ.Syn.MethodCall](RustQ.Syn.MethodCall.md): Receiver method call metadata found in Rust source.
- [RustQ.Syn.Signature](RustQ.Syn.Signature.md): Structured Rust function or method signature metadata.
- [RustQ.Syn.Struct](RustQ.Syn.Struct.md): Rust struct metadata.
- [RustQ.Syn.Type](RustQ.Syn.Type.md): Namespace for structured Rust type metadata.
- [RustQ.Syn.Type.Array](RustQ.Syn.Type.Array.md): Rust array type metadata.
- [RustQ.Syn.Type.ImplTrait](RustQ.Syn.Type.ImplTrait.md): Rust impl Trait type metadata.
- [RustQ.Syn.Type.Option](RustQ.Syn.Type.Option.md): Rust Option<T> type metadata.
- [RustQ.Syn.Type.Path](RustQ.Syn.Type.Path.md): Rust path type metadata, for example `Paint`, `skia_safe::Canvas`, or `AsRef<Rect>`.
- [RustQ.Syn.Type.Raw](RustQ.Syn.Type.Raw.md): Fallback Rust type metadata for type forms RustQ does not model structurally yet.
- [RustQ.Syn.Type.Ref](RustQ.Syn.Type.Ref.md): Rust reference type metadata, for example `&Paint` or `&mut Path`.
- [RustQ.Syn.Type.Result](RustQ.Syn.Type.Result.md): Rust Result<T, E> type metadata.
- [RustQ.Syn.Type.Self](RustQ.Syn.Type.Self.md): Rust Self type metadata.
- [RustQ.Syn.Type.Slice](RustQ.Syn.Type.Slice.md): Rust slice type metadata.
- [RustQ.Syn.Type.Tuple](RustQ.Syn.Type.Tuple.md): Rust tuple type metadata.
- [RustQ.Syn.TypeAlias](RustQ.Syn.TypeAlias.md): Rust `type` alias metadata.
- [RustQ.Syn.Use](RustQ.Syn.Use.md): Rust `use` item metadata, including reexport aliases.
- [RustQ.Template](RustQ.Template.md): Parsed Rust template plus pending substitutions.

- [RustQ.Type](RustQ.Type.md): Built-in Rust/Rustler type vocabulary for `RustQ.Meta.defrust/2` specs.

- Exceptions
  - [RustQ.Error](RustQ.Error.md)

## Mix Tasks

- [mix rustq.gen](Mix.Tasks.Rustq.Gen.md): Generates files declared in `rustq.exs`.

