# `Lemma.EngineError`
[🔗](https://github.com/lemma/lemma/blob/main/lib/lemma/engine_error.ex#L1)

Structured engine error as returned by NIF error paths (`load`, `show`, `run`,
`format`, …). Keys are atoms (Rustler encoding), not JSON strings.

Call `from_map/1` on an error map (or each element of a load-error list) to get
a typed struct.

# `source`

```elixir
@type source() :: %{
  attribute: String.t(),
  line: non_neg_integer(),
  column: non_neg_integer(),
  length: non_neg_integer()
}
```

# `t`

```elixir
@type t() :: %Lemma.EngineError{
  actual_value: String.t() | nil,
  kind: String.t(),
  limit_name: String.t() | nil,
  limit_value: String.t() | nil,
  message: String.t(),
  registry_kind: String.t() | nil,
  related_data: String.t() | nil,
  related_spec: String.t() | nil,
  repository: String.t() | nil,
  request_kind: String.t() | nil,
  source: source() | nil,
  spec: String.t() | nil,
  suggestion: String.t() | nil
}
```

# `from_map`

```elixir
@spec from_map(map()) :: t()
```

Builds a `Lemma.EngineError` from an atom-keyed error map returned by a NIF.

Raises `KeyError` if `:kind` or `:message` is missing.

---

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