ref — чтение/запись по ссылке; out — запись вызываемым; in — readonly-ссылка против копирования больших struct.
Разбор
- out должен быть присвоен.
- Слишком много ref усложняет API.
- Tuples часто лучше нескольких out.
- in не панацея для всех мутаций struct.
Итог
ref/in/out контролируют копирование и направление данных.