# `RustQ.Meta.Lower.Stdlib`
[🔗](https://github.com/elixir-crab/rustq/blob/v1.0.0-rc.19/lib/rustq/meta/lower/stdlib.ex#L1)

Lowers calls to Elixir's standard library to Rust that keeps their semantics: a call to an
Elixir module goes to the module lowering it, named after it (`RustQ.Meta.Lower.Enum` for
`Enum`), which implements `RustQ.Meta.Lower.Stdlib.Lowering`. Calls whose semantics Rust
cannot preserve are rejected.

# `lower`

```elixir
@spec lower(Macro.t(), RustQ.Meta.Lower.Stdlib.Lowering.Context.t()) ::
  {:ok, term()} | :unsupported
```

# `lower!`

```elixir
@spec lower!(Macro.t(), RustQ.Meta.Lower.Stdlib.Lowering.Context.t()) :: term()
```

# `synth`

```elixir
@spec synth(Macro.t(), RustQ.Meta.Lower.Stdlib.Lowering.TypeContext.t()) ::
  {:ok, term()} | :unsupported
```

---

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