Cow<'a, T> (clone on write) holds either a borrowed or owned value. It borrows when possible and clones only when mutation is needed. I use Cow<str> for APIs that might need to modify a string: if no changes are needed, it stays borrowed; if changes are made, it clones. This optimizes the common case (no mutation) while supporting the less common case (mutation). The .to_mut() method clones if needed and returns a mutable reference. Cow is useful for config processing, normalization, and string transformations where most inputs don't need changes. It's a zero-cost abstraction when borrowing and a one-time clone when mutating.