Skip to content

Commit 96ff09b

Browse files
committed
update Readme
1 parent ff839b4 commit 96ff09b

6 files changed

Lines changed: 435 additions & 89 deletions

File tree

AGENTS.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# AGENTS.md
2+
3+
## Основные правила
4+
5+
- Предпочитать идиоматичный Rust и современные конструкции языка и стандартной экосистемы вместо устаревших паттернов.
6+
- Держать кодовую базу компактной: переиспользовать код, предпочитать обобщения и небольшие абстракции дублированию.
7+
- Следовать принципу "parse, don't validate": один раз парсить внешний ввод в более строгие типы, которые кодируют инварианты.
8+
- Предпочитать type-driven design вместо API на сырых строках и разрозненных проверок по коду.
9+
- Избегать heap-аллокаций на горячих путях, если нет ясной и задокументированной причины.
10+
- Где это практически уместно, предпочитать заимствование, zero-copy парсинг, срезы и представления, дружественные к стеку.
11+
- Избегать лишних `clone`, промежуточных `String`/`Vec` и повторного парсинга.
12+
- Prefer bounds-check elimination patterns: iterators, slices/subslices, chunking, provable index ranges, loop-invariant prechecks, etc.
13+
- Не использовать `unsafe`, кроме случаев реальной необходимости; он должен быть изолирован, обоснован и покрыт тестами.
14+
- Пиши doc-strings и комментарии на русском. Только там где это нужно и полезно.
15+
- Сообщения в консоль: ошибки, ворнинги итд должны быть на английском.
16+
- Используй файловую структуру модулей Rust 2018+: foo.rs и foo/bar.rs, без foo/mod.rs.
17+
- Разбивай модули на подмодули при необходимости.
18+
- Для обычного текста не делай "ручной" перенос на новую строку.
19+
20+
## Предпочтения по реализации
21+
22+
- Предпочитать гарантии времени компиляции проверкам во время исполнения.
23+
- Предпочитать полные и локализованные преобразования (`TryFrom`, smart constructors, функции-парсеры) на границах системы.
24+
- Держать модули сфокусированными и цельными.
25+
- Когда производительность и простота конфликтуют вне горячих путей, предпочитать более простое решение; на горячих путях — более быстрое.
26+
27+
## Тестирование и проверка
28+
29+
- После изменений запускать:
30+
- `cargo fmt --all`
31+
- `cargo clippy --all-targets --all-features -- -D warnings`
32+
- `cargo test --all-features`

0 commit comments

Comments
 (0)