Imported from hexqnt/pgcopy (
AGENTS.md). Install upstream withnpx skills add hexqnt/pgcopy. Copyright stays with the author.
AGENTS.md
Основные правила
- Предпочитать идиоматичный Rust(edition 2024) и современные конструкции языка и стандартной экосистемы вместо устаревших паттернов.
- Держать кодовую базу компактной: переиспользовать код, предпочитать обобщения и небольшие абстракции дублированию.
- Следовать принципу "parse, don't validate": один раз парсить внешний ввод в более строгие типы, которые кодируют инварианты.
- Предпочитать type-driven design вместо API на сырых строках и разрозненных проверок по коду.
- Избегать heap-аллокаций на горячих путях, если нет ясной и задокументированной причины.
- Где это практически уместно, предпочитать заимствование, zero-copy парсинг, срезы и представления, дружественные к стеку.
- Избегать лишних
clone, промежуточныхString/Vecи повторного парсинга. - Prefer bounds-check elimination patterns: iterators, slices/subslices, chunking, provable index ranges, loop-invariant prechecks, etc.
- Не использовать
unsafe, кроме случаев реальной необходимости; он должен быть изолирован, обоснован и покрыт тестами. - Пиши doc-strings и комментарии на русском. Только там где это нужно и полезно.
- Сообщения в консоль: ошибки, ворнинги итд должны быть на английском.
- Используй файловую структуру модулей Rust 2018+: foo.rs и foo/bar.rs, без foo/mod.rs.
Предпочтения по реализации
- Предпочитать гарантии времени компиляции проверкам во время исполнения.
- Предпочитать полные и локализованные преобразования (
TryFrom, smart constructors, функции-парсеры) на границах системы. - Держать модули сфокусированными и цельными.
- Когда производительность и простота конфликтуют вне горячих путей, предпочитать более простое решение; на горячих путях — более быстрое.
Тестирование и проверка
- После изменений запускать:
cargo fmt --allcargo clippy --all-targets --all-features -- -D warningscargo test --all-features