# rustq v0.11.1 - Table of Contents > Rust templates and quasiquoting for Elixir ## Pages - [RustQ](readme.md) - [Using RustQ Well](using-rustq-well.md) - [Generating Rustler Boundaries](rustler-generation.md) - [Designing RustQ Generators](designing-generators.md) - [RustQ Reach plugin](reach-plugin.md) - [SKILL](skill.md) - [Changelog](changelog.md) - [LICENSE](license.md) ## Modules - Start here - [RustQ](RustQ.md): Rust template quasiquoting and code generation. - [RustQ.Config](RustQ.Config.md): Concise manifest DSL for checked-in generated files. - [RustQ.Meta](RustQ.Meta.md): Valid-Elixir macro frontend for generating RustQ Rust fragments. - [RustQ.Rust](RustQ.Rust.md): Rendering boundary for structural RustQ AST and explicit Rust fragments. - [RustQ.Rust.Identifier](RustQ.Rust.Identifier.md): Safe conversion of finite generator names into Rust identifier atoms. - [RustQ.Rustler](RustQ.Rustler.md): Structural Rustler code generation. - [RustQ.Syn](RustQ.Syn.md): Structural metadata for Rust source parsed with [`syn`](https://docs.rs/syn). - [RustQ.Type](RustQ.Type.md): Built-in Rust/Rustler type vocabulary for `RustQ.Meta.defrust/2` specs. - Rustler generation - [RustQ.Rustler.Atom](RustQ.Rustler.Atom.md): Generates Rustler atom declarations, decoders, dispatchers, and cached atom helpers. - [RustQ.Rustler.Decode](RustQ.Rustler.Decode.md): AST helpers for composing Rustler term decoding expressions. - [RustQ.Rustler.Nif](RustQ.Rustler.Nif.md): Generates Rustler NIF wrappers, stubs, `NifStruct` declarations, and raw `NIF_TERM` builders. - [RustQ.Rustler.Opts](RustQ.Rustler.Opts.md): Generates Rustler keyword/options structs, decoders, and option helper functions. - [RustQ.Rustler.Resource](RustQ.Rustler.Resource.md): Generates Rustler resource structs, handles, decoders, and initialization helpers. - [RustQ.Rustler.Schema](RustQ.Rustler.Schema.md): Schema DSL for generating Rustler structs and tagged enums. - [RustQ.Rustler.TaggedEnum](RustQ.Rustler.TaggedEnum.md): Generates Rust enums decoded from tagged Elixir struct or map terms. - [RustQ.Rustler.Term](RustQ.Rustler.Term.md): Generates Rustler `Term<'a>` builders, decoders, and map access helpers. - Rust AST nodes - [RustQ.Rust.AST.Arm](RustQ.Rust.AST.Arm.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.ArrayLiteral](RustQ.Rust.AST.ArrayLiteral.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Assign](RustQ.Rust.AST.Assign.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.AssignOp](RustQ.Rust.AST.AssignOp.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.AtomValue](RustQ.Rust.AST.AtomValue.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Attribute](RustQ.Rust.AST.Attribute.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.BinaryOp](RustQ.Rust.AST.BinaryOp.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.BlockExpr](RustQ.Rust.AST.BlockExpr.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Break](RustQ.Rust.AST.Break.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.ByteString](RustQ.Rust.AST.ByteString.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Cast](RustQ.Rust.AST.Cast.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Closure](RustQ.Rust.AST.Closure.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Const](RustQ.Rust.AST.Const.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Continue](RustQ.Rust.AST.Continue.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Derive](RustQ.Rust.AST.Derive.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.EarlyReturn](RustQ.Rust.AST.EarlyReturn.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Enum](RustQ.Rust.AST.Enum.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.EnumVariant](RustQ.Rust.AST.EnumVariant.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Err](RustQ.Rust.AST.Err.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.EscapeExpr](RustQ.Rust.AST.EscapeExpr.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.ExprStmt](RustQ.Rust.AST.ExprStmt.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Field](RustQ.Rust.AST.Field.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.For](RustQ.Rust.AST.For.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Function](RustQ.Rust.AST.Function.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.FunctionArg](RustQ.Rust.AST.FunctionArg.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.If](RustQ.Rust.AST.If.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.IfLet](RustQ.Rust.AST.IfLet.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Impl](RustQ.Rust.AST.Impl.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Index](RustQ.Rust.AST.Index.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Let](RustQ.Rust.AST.Let.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.LetElse](RustQ.Rust.AST.LetElse.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Literal](RustQ.Rust.AST.Literal.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.LocalCall](RustQ.Rust.AST.LocalCall.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Loop](RustQ.Rust.AST.Loop.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroCall](RustQ.Rust.AST.MacroCall.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroCapture](RustQ.Rust.AST.MacroCapture.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroItem](RustQ.Rust.AST.MacroItem.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroItemCall](RustQ.Rust.AST.MacroItemCall.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroRepeat](RustQ.Rust.AST.MacroRepeat.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroRepeatExpr](RustQ.Rust.AST.MacroRepeatExpr.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroRule](RustQ.Rust.AST.MacroRule.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroRules](RustQ.Rust.AST.MacroRules.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MacroVar](RustQ.Rust.AST.MacroVar.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Match](RustQ.Rust.AST.Match.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.MethodCall](RustQ.Rust.AST.MethodCall.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Module](RustQ.Rust.AST.Module.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.NifRaiseAtom](RustQ.Rust.AST.NifRaiseAtom.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.None](RustQ.Rust.AST.None.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Ok](RustQ.Rust.AST.Ok.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatAtomGuard](RustQ.Rust.AST.PatAtomGuard.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatErr](RustQ.Rust.AST.PatErr.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatLiteral](RustQ.Rust.AST.PatLiteral.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatNone](RustQ.Rust.AST.PatNone.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatOk](RustQ.Rust.AST.PatOk.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatPath](RustQ.Rust.AST.PatPath.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatPathTuple](RustQ.Rust.AST.PatPathTuple.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatSome](RustQ.Rust.AST.PatSome.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatStruct](RustQ.Rust.AST.PatStruct.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatTuple](RustQ.Rust.AST.PatTuple.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatVar](RustQ.Rust.AST.PatVar.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PatWildcard](RustQ.Rust.AST.PatWildcard.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Path](RustQ.Rust.AST.Path.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.PathCall](RustQ.Rust.AST.PathCall.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Range](RustQ.Rust.AST.Range.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Ref](RustQ.Rust.AST.Ref.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Return](RustQ.Rust.AST.Return.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Some](RustQ.Rust.AST.Some.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Static](RustQ.Rust.AST.Static.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Struct](RustQ.Rust.AST.Struct.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.StructField](RustQ.Rust.AST.StructField.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.StructLiteral](RustQ.Rust.AST.StructLiteral.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TokenMacro](RustQ.Rust.AST.TokenMacro.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Try](RustQ.Rust.AST.Try.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Tuple](RustQ.Rust.AST.Tuple.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeAlias](RustQ.Rust.AST.TypeAlias.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeArray](RustQ.Rust.AST.TypeArray.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeNifResult](RustQ.Rust.AST.TypeNifResult.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeOption](RustQ.Rust.AST.TypeOption.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypePath](RustQ.Rust.AST.TypePath.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeRaw](RustQ.Rust.AST.TypeRaw.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeRef](RustQ.Rust.AST.TypeRef.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeResult](RustQ.Rust.AST.TypeResult.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeSlice](RustQ.Rust.AST.TypeSlice.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeTuple](RustQ.Rust.AST.TypeTuple.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeUnit](RustQ.Rust.AST.TypeUnit.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.TypeVec](RustQ.Rust.AST.TypeVec.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.UnaryOp](RustQ.Rust.AST.UnaryOp.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.UnsafeBlock](RustQ.Rust.AST.UnsafeBlock.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Use](RustQ.Rust.AST.Use.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.Var](RustQ.Rust.AST.Var.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - [RustQ.Rust.AST.VecLiteral](RustQ.Rust.AST.VecLiteral.md): Structural RustQ AST node. Prefer the focused builder modules for construction. - Rust AST - [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): Expression, statement, and simple item constructors for `RustQ.Rust.AST`. - [RustQ.Rust.AST.ItemBuilder](RustQ.Rust.AST.ItemBuilder.md): Constructors for Rust item declarations with Elixir block syntax. - [RustQ.Rust.AST.PatternBuilder](RustQ.Rust.AST.PatternBuilder.md): Constructors and normalization for Rust pattern AST nodes. - [RustQ.Rust.AST.TypeBuilder](RustQ.Rust.AST.TypeBuilder.md): Constructors and normalization for Rust type AST nodes. - [RustQ.Rust.AST.Walk](RustQ.Rust.AST.Walk.md): Generic traversal helpers for RustQ AST nodes. - Rust source metadata - [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.Native](RustQ.Native.md): Native Rust source metadata used by bindings and generators. - [RustQ.Native.Descriptor](RustQ.Native.Descriptor.md): Resolved metadata for a `RustQ.Native.Ref`. - [RustQ.Native.EnumDescriptor](RustQ.Native.EnumDescriptor.md): Resolved metadata for a native Rust enum. - [RustQ.Native.Ref](RustQ.Native.Ref.md): Reference to a Rust native item used by code generators. - [RustQ.Syn.Arg](RustQ.Syn.Arg.md): Rust function or method argument metadata. `type` is rendered Rust; `type_ast` is structured metadata. - [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.Static](RustQ.Syn.Static.md): Rust static item 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.Fn](RustQ.Syn.Type.Fn.md): Rust bare function pointer 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 type metadata. - [RustQ.Syn.Type.Path](RustQ.Syn.Type.Path.md): Rust path type metadata, for example `Paint`, `skia_safe::Canvas`, or `AsRef`. - [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 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. - Rusty-Elixir metadata - [RustQ.Binding.Callable](RustQ.Binding.Callable.md): Normalized callable signature metadata for RustQ lowering and binding generation. - [RustQ.Binding.Index](RustQ.Binding.Index.md): Lookup table for normalized RustQ callable metadata. - [RustQ.Binding.Source](RustQ.Binding.Source.md): Resolves callable metadata from RustQ modules, Rust source files, and Cargo packages. - [RustQ.Meta.AST](RustQ.Meta.AST.md): Builds RustQ AST items from `defrust` metadata and explicit quoted bodies. - [RustQ.Meta.Type](RustQ.Meta.Type.md): Structural metadata for an Elixir typespec lowered by RustQ. - [RustQ.Spec](RustQ.Spec.md): Public helpers for lowering Elixir typespec forms into RustQ type metadata. - Generation and templates - [RustQ.Generated](RustQ.Generated.md): File sync helpers for RustQ-generated sources. - [RustQ.Generated.StaleError](RustQ.Generated.StaleError.md): Raised when generated files differ from the contents produced by the manifest. - [RustQ.Rust.Fragment](RustQ.Rust.Fragment.md): Explicit Rust source fragment used at template splice boundaries. - [RustQ.Sigil](RustQ.Sigil.md): Provides the `~R` sigil for inline Rust templates. - [RustQ.Splice](RustQ.Splice.md): Helpers for composing RustQ splice replacements as plain keyword lists. - [RustQ.Template](RustQ.Template.md): Parsed Rust template plus pending substitutions. - Diagnostics and tooling - [RustQ.Diagnostic](RustQ.Diagnostic.md): Structured RustQ diagnostic data for lowering/rendering failures. - [RustQ.Diagnostic.Error](RustQ.Diagnostic.Error.md): Exception wrapper carrying a structured `RustQ.Diagnostic` value. - [RustQ.Error](RustQ.Error.md): Exception raised by bang-style RustQ parsing and rendering APIs. - [RustQ.Reach](RustQ.Reach.md): Reach plugin for RustQ dogfooding rules. ## Mix Tasks - [mix rustq.corpus](Mix.Tasks.Rustq.Corpus.md): Checks or updates the RustQ golden lowering corpus. - [mix rustq.gen](Mix.Tasks.Rustq.Gen.md): Generates files declared in `rustq.exs`. - [mix rustq.templates.check](Mix.Tasks.Rustq.Templates.Check.md): Verifies that RustQ template fixtures still compile against the generated Rust support code.