Одним из принципов Rust является Local Reasoning , как для анализа c (компилятор), так и для человеческого читателя.
Вот почему сигнатуры функций так специфичны c , и потенциально подробный, с:
- Типы для каждого аргумента и тип возвращаемого значения, явно прописанные.
- Ограничения явно прописаны (в общем c коде).
- Время жизни аннотации.
Последнее подчиняется правилам Lifetime Elision , как синтаксис c сахара, но эти правила сами по себе строго ограничивается сигнатурой функции.
Конечным результатом является то, что нет необходимости заглядывать внутрь функции для выполнения проверок semanti c.
Примечание: с другой стороны, с -> impl Trait
генерация кода должна заглядывать внутрь функции, чтобы узнать точный тип; дело не в рассуждениях, так что это проходит.