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
Rust expression nodes supported by RustQ's compact AST.
Rust item nodes supported by RustQ's compact AST.
Rust pattern nodes supported by RustQ's compact AST.
Rust statement nodes supported by RustQ's compact AST.
Rust type nodes supported by RustQ's compact AST.
Types
@type expr() :: RustQ.Rust.AST.Var.t() | RustQ.Rust.AST.Path.t() | RustQ.Rust.AST.Field.t() | RustQ.Rust.AST.Index.t() | RustQ.Rust.AST.Range.t() | RustQ.Rust.AST.Cast.t() | RustQ.Rust.AST.UnaryOp.t() | RustQ.Rust.AST.PathCall.t() | RustQ.Rust.AST.MethodCall.t() | RustQ.Rust.AST.StructLiteral.t() | RustQ.Rust.AST.LocalCall.t() | RustQ.Rust.AST.Ref.t() | RustQ.Rust.AST.Try.t() | RustQ.Rust.AST.Tuple.t() | RustQ.Rust.AST.VecLiteral.t() | RustQ.Rust.AST.ArrayLiteral.t() | MacroRepeatExpr.t() | RustQ.Rust.AST.Closure.t() | RustQ.Rust.AST.Literal.t() | RustQ.Rust.AST.ByteString.t() | RustQ.Rust.AST.EscapeExpr.t() | RustQ.Rust.AST.TokenMacro.t() | RustQ.Rust.AST.MacroCall.t() | RustQ.Rust.AST.AtomValue.t() | RustQ.Rust.AST.None.t() | RustQ.Rust.AST.Some.t() | RustQ.Rust.AST.Ok.t() | RustQ.Rust.AST.Err.t() | RustQ.Rust.AST.NifRaiseAtom.t() | RustQ.Rust.AST.BlockExpr.t() | RustQ.Rust.AST.Match.t() | RustQ.Rust.AST.If.t() | RustQ.Rust.AST.BinaryOp.t()
Rust expression nodes supported by RustQ's compact AST.
@type item() :: RustQ.Rust.AST.Use.t() | RustQ.Rust.AST.Module.t() | RustQ.Rust.AST.Const.t() | RustQ.Rust.AST.Static.t() | RustQ.Rust.AST.TypeAlias.t() | RustQ.Rust.AST.MacroItem.t() | RustQ.Rust.AST.MacroItemCall.t() | RustQ.Rust.AST.MacroRules.t() | RustQ.Rust.AST.Impl.t() | RustQ.Rust.AST.Function.t() | RustQ.Rust.AST.Struct.t() | RustQ.Rust.AST.Enum.t()
Rust item nodes supported by RustQ's compact AST.
@type macro_token() :: String.t() | atom() | RustQ.Rust.AST.Literal.t() | RustQ.Rust.AST.Path.t() | RustQ.Rust.AST.MacroVar.t() | RustQ.Rust.AST.MacroCapture.t() | RustQ.Rust.AST.MacroRepeat.t()
@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()
Rust pattern nodes supported by RustQ's compact AST.
@type stmt() :: RustQ.Rust.AST.Let.t() | RustQ.Rust.AST.LetElse.t() | RustQ.Rust.AST.Assign.t() | RustQ.Rust.AST.AssignOp.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()
Rust statement nodes supported by RustQ's compact AST.
@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()
Rust type nodes supported by RustQ's compact AST.
@type vis() :: :pub | :crate | nil