Small Rust AST/IR used by macro frontends before final RustQ validation.
This is intentionally much smaller than Rust's full grammar. It captures the
Rust-shaped nodes that RustQ.Meta.defrust/2 can produce from valid Elixir
AST, then renders them only at the final fragment-validation boundary.
Summary
Types
@type pat() :: RustQ.Rust.AST.PatVar.t() | RustQ.Rust.AST.PatWildcard.t() | RustQ.Rust.AST.PatPath.t() | RustQ.Rust.AST.PatLiteral.t() | RustQ.Rust.AST.PatNone.t() | RustQ.Rust.AST.PatSome.t() | RustQ.Rust.AST.PatAtomGuard.t() | RustQ.Rust.AST.PatTuple.t() | RustQ.Rust.AST.PatOk.t() | RustQ.Rust.AST.PatErr.t() | RustQ.Rust.AST.PatPathTuple.t() | RustQ.Rust.AST.PatStruct.t()
@type stmt() :: RustQ.Rust.AST.Let.t() | RustQ.Rust.AST.LetElse.t() | RustQ.Rust.AST.Assign.t() | RustQ.Rust.AST.ExprStmt.t() | RustQ.Rust.AST.Return.t() | RustQ.Rust.AST.EarlyReturn.t() | RustQ.Rust.AST.IfLet.t() | RustQ.Rust.AST.For.t() | RustQ.Rust.AST.Loop.t() | RustQ.Rust.AST.Break.t() | RustQ.Rust.AST.Continue.t()
@type type() :: RustQ.Rust.AST.TypePath.t() | RustQ.Rust.AST.TypeRef.t() | RustQ.Rust.AST.TypeOption.t() | RustQ.Rust.AST.TypeResult.t() | RustQ.Rust.AST.TypeNifResult.t() | RustQ.Rust.AST.TypeVec.t() | RustQ.Rust.AST.TypeSlice.t() | RustQ.Rust.AST.TypeArray.t() | RustQ.Rust.AST.TypeRaw.t() | RustQ.Rust.AST.TypeUnit.t()
@type vis() :: :pub | :crate | nil