# `RustQ.Rust.AST.Builder`
[🔗](https://github.com/dannote/rustq/blob/v0.11.1/lib/rustq/rust/ast/builder.ex#L1)

Expression, statement, and simple item constructors for `RustQ.Rust.AST`.

Alias the focused builders together:

    alias RustQ.Rust.AST.Builder, as: A
    alias RustQ.Rust.AST.ItemBuilder, as: I
    alias RustQ.Rust.AST.PatternBuilder, as: P
    alias RustQ.Rust.AST.TypeBuilder, as: T

The main families are:

  * items — `use/1`, `module/3`, `const/4`, `static/4`, `type_alias/3`,
    `impl/2`, and macro-item constructors
  * statements — `let/3`, `assign/2`, `if_let/4`, `return_stmt/1`, and
    block-oriented macros such as `block/1`, `match/2`, and `arm/3`
  * expressions — `call/2`, `path_call/3`, `method/4`, `struct_expr/2`,
    constructors such as `ok/1`, and binary-operation helpers
  * conversion — `expr/1`, `pat_expr/1`, `type/1`, and path normalization

`struct_expr/2` builds a struct literal. Use `I.struct/3` for a struct
declaration and `I.function/3` for a function declaration.

# `add`

# `allow_attr`

# `and_`

# `arg`

# `arm`
*macro* 

# `array`

# `assign`

# `assign_op`

# `atom`

# `attr`

# `attr_value`

# `badarg`

# `badarg_arm`

# `binary`

# `block`
*macro* 

# `block_expr`

# `break`

# `break`

# `byte_string`

# `call`

# `cast`

# `closure`

# `const`

# `continue`

# `deref`

# `derive`

# `div`

# `early_return`

# `eq`

# `err`

# `escape_expr`

# `expr`

# `expr_path`

# `field`

# `flatten`

# `for_`

# `function_arg`

# `function_arg`

# `function_args`

# `gt`

# `gte`

# `if_expr`
*macro* 

# `if_expr`

# `if_let`

# `impl`

# `index`

# `let`

# `let_else`

# `let_mut`

# `lit`

# `loop`

# `lt`

# `lte`

# `macro_call`

# `macro_capture`

# `macro_item`

# `macro_item_call`

# `macro_item_token_call`

# `macro_repeat`

# `macro_rule`

# `macro_rules`

# `macro_var`

# `match`
*macro* 

# `match_expr`

# `maybe_expr`

# `method`

# `module`

# `mul`

# `mut_ref`

# `ne`

# `neg`

# `nif_attr`

# `none`

# `not_`

# `ok`

# `ok`

# `or_`

# `pat`

# `pat_expr`

# `path`

# `path`

# `path`

# `path_call`

# `path_parts`

# `path_value`

# `range`

# `receiver`

# `ref`

# `resource_impl_attr`

# `return`
*macro* 

# `return_badarg`

# `return_stmt`

# `slice`

# `some`

# `static`

# `stmt`

# `struct_expr`

# `sub`

# `token_macro`

# `trait_path`

# `try`

# `tuple`

# `type`

# `type_alias`

# `type_path`

# `unsafe_block`

# `use`

# `var`

# `vec`

# `wildcard`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
