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

Builds RustQ AST items from `defrust` metadata and explicit quoted bodies.

# `function!`

```elixir
@spec function!(module(), atom() | String.t()) :: RustQ.Rust.AST.Function.t()
```

Returns one generated `defrust` function AST by name, raising when absent.

# `functions!`

```elixir
@spec functions!(module(), [atom() | String.t()]) :: [RustQ.Rust.AST.Function.t()]
```

Returns selected generated `defrust` function AST nodes.

# `macro_call!`

```elixir
@spec macro_call!(module(), atom() | String.t(), keyword()) ::
  RustQ.Rust.AST.MacroItemCall.t()
```

Builds a structural invocation of a generated Rust item macro.

# `macro_item!`

```elixir
@spec macro_item!(module(), atom() | String.t()) :: RustQ.Rust.AST.MacroItem.t()
```

Returns one generated `defrustmacro` item AST by name, raising when absent.

# `macro_items!`

```elixir
@spec macro_items!(module(), [atom() | String.t()]) :: [RustQ.Rust.AST.MacroItem.t()]
```

Returns selected generated `defrustmacro` item AST nodes.

# `struct_type_items`

```elixir
@spec struct_type_items(module(), [atom()], keyword()) :: [RustQ.Rust.AST.Struct.t()]
```

Builds Rust struct items for selected map-backed `@type` declarations.

Use `:derive`, `:attrs`, and `:vis` to adapt the structural type item at a
boundary such as Rustler encoding without duplicating its fields.

---

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