# `Mutare.Transform.Result`
[🔗](https://github.com/foxbenjaminfox/mutare/blob/v0.2.1/lib/mutare/transform/result.ex#L1)

Public result returned by `Mutare.transform_string/2`.

The transform still produces richer internal `Mutare.Site` records for the runner and reporters.
This DTO is intentionally smaller and stable: callers get the rendered metamutant, the public
mutant descriptions, the next available id, and the metamutant's dispatch variable, without
depending on internal site fields.

`dispatch_var` is the variable the metamutant's generated code binds the active mutant id to
and reads in its selectors and guards — `:mutare_active`, unless the source already uses that
identifier, in which case a salted variant (`:mutare_active_0`, …) is chosen per file. A reader
of the metamutant needs it: `Mutare.Manifest.from_source/2` recognises the hoisted selectors and
gated clauses by this name.

# `t`

```elixir
@type t() :: %Mutare.Transform.Result{
  dispatch_var: atom(),
  metamutant: String.t(),
  mutants: [Mutare.MutationSite.t()],
  next_id: pos_integer()
}
```

---

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