TGViewer
Rust Rust @rust_code · 8.95K subscribers
Post #1449 1.37K
🦀 Кто должен доказывать корректность реализации трейта в Rust: сама реализация или код, который её использует?

Нико Матсакис разобрал этот вопрос на примере циклических зависимостей, когда доказательство может замкнуться само на себя.

Допустим, есть трейт Magic: Copy. Любой тип с Magic обязан реализовывать Copy.

Два подхода:

• Модульный: проверяем обязательства при проверке impl. Поэтому impl Magic for String недопустим: String не реализует Copy.

• Внешний: разрешаем такой impl, но при его использовании требуем отдельно доказать String: Copy. Реализация есть, воспользоваться ей нельзя.

Второй вариант помогал обойти проблему циклических доказательств. Но упирался в unsafe-трейты.

Когда автор пишет unsafe impl, остальной код доверяет его гарантиям. Если реализация ошибочно обещает, что Box<T> может содержать нулевой указатель, ответственность лежит на ней.

Выходит странная модель: гарантии безопасности у impl принимаем, а выполнение требований супертрейтов заставляем перепроверять вызывающий код.

Вывод Нико: реализация должна сама устанавливать выполнение своего контракта. Следующая часть будет о том, как совместить этот подход с циклами.

https://smallcultfollowing.com/babysteps/blog/2026/10/10/modular-vs-external-proofs/

#Rust
  • ❤ 6
  • 🔥 4
  • 👍 3
More from @rust_code
  1. Oct 14, 2026🦀 В Rust нашли баг, который 11 лет обходил гарантии безопасности памяти. Ошибка позволяет…
  2. Oct 13, 2026👣 Campfire переписали на Rust, почти без ручного Rust. DHH пишет, что сегодня уже гоняет…
  3. Oct 13, 2026🦀 1,8 млн ошибок из-за одного пробела: как разработчик собирал Kubernetes Ingress на Rust…
  4. Oct 12, 2026🍃 Добавить реплику MongoDB, не копируя всю базу: что меняет Atlas Infinite В привычной ар…
  5. Oct 11, 2026🦀 Что удивляет в C, если первым языком был Rust? Обычно разработчики переходят от C к Rus…
  6. Oct 10, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →