# `Mutare.Swoosh.Recipient`
[🔗](https://github.com/foxbenjaminfox/mutare_swoosh/blob/v0.2.1/lib/mutare/swoosh/recipient.ex#L1)

:swoosh_recipient mutates Swoosh recipient semantics.

The family swaps recipient classes to, cc, and bcc for both append-style calls and put-style
calls. It also deletes one recipient from recipient values, and weakens each put-style call to
the corresponding append-style call (`put_to` becomes `to`, and likewise for cc and bcc).
The class swaps and deletions also apply inside Swoosh.Email.new/1 options.

The put-to-append swap is deliberately one-directional: `put_to` explicitly replaces existing
recipients, so tests should check that replacement; plain `to` only appends recipients, so no
reverse swap is generated. The swap is equivalent when the recipient list is empty at that
point. Its report note explains that a kill may require pre-existing recipients.

A statically empty recipient list on an append-style call (`to([])`) produces no mutations:
appending nothing is a no-op for every class, so both the class swaps and the deletion would be
equivalent mutants. Swaps are still generated for put-style calls (clearing a different class is
observable).

Deleting a single-element literal list (`to(["a"])` becoming `to([])`) produces the same
program as the core `:list` family's collapse of that list; when both run, the mutant is generated
twice.

---

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