TGViewer
Rust Rust @rust_code · 8.92K subscribers
Post #1441 1.35K
⚡️ Как запретить ошибку в работе с путями ещё до запуска программы?

В Rust путь состоит из разных компонентов: имени папки, корня, . или ... Если функция принимает произвольную строку, ей могут передать .. или абсолютный путь и неожиданно изменить результат объединения.

Автор статьи предлагает выделить обычное имя в отдельный тип NormalComponent. Тогда сигнатура говорит сама за себя:


fn join_normal(&self, name: &NormalComponent) -> AbsPath


Функция принимает только компонент имени, а не любой фрагмент пути. Ошибочный вызов отсекается типами, без россыпи проверок внутри функции. Приём простой: если разные варианты enum дают разные гарантии, иногда полезно представить нужный вариант отдельным типом.

https://www.schneems.com/2026/09/24/a-type-stronger-than-the-sum-of-its-components/
  • 👍 8
  • 🥰 3
  • 🔥 1
  • 💊 1
More from @rust_code
  1. Oct 8, 2026🦀 Burn 0.22: меньше дженериков, быстрее сборка и почти вдвое меньше VRAM в тесте CNN. Фре…
  2. Oct 7, 2026🦀 mold переписали с C++ на Rust Вышел mold 3.0, первая Rust-версия быстрого линкера для U…
  3. Oct 6, 2026🦀 Rust дайджест за неделю: новый релиз, быстрее компилятор и собственные зелёные потоки ⚡…
  4. Oct 6, 2026Одна задача, три языка: Rust, C# или C++? В курсе Google *Comprehensive Rust* есть упражне…
  5. Oct 4, 2026Это не строка
  6. Oct 3, 2026Выпуск Rust 1.99.0. Microsoft перевёл Rust в число первичных языков Опубликован релиз язык…
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 →