Start with what the product owes and who owns that decision. Expose the meaningful choices, prerequisites, results and continuations at the story's governing surface. Where Rust can make a relationship a condition of construction or use, encode it there.
Why: a requirement enforced only by repeated caller discipline is easy to forget. A named trait with no consequential relationship is equally easy to bypass. Neither makes the product's promise reliably visible.
Consequence: changing a bound, constructor or implementation so that more behavior becomes possible is a design decision. Determine whether the current task authorizes that changed promise. A green build supplies no mandate.
An ordinary function can serve a leaf or a trivial operation. A pattern or framework must not force the product to acquire stages or alternatives it never owed.