--- name: rust-standards description: Используй при написании, ревью и проверке кода на Rust в наших сервисах — структура crate/workspace, запуск clippy/rustfmt, тесты, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Rust-код, готовишь MR, а также в командах /bugfix, /feature и /review для Rust-репозиториев. --- # Стандарты Rust Один из наших языков — **Rust**. Ниже — общепринятые дефолты экосистемы; специфичное для компании заполнено дефолтами индустрии — тюним под M.Video позже. ## Структура Ориентир (уточняется под компанию): ``` Cargo.toml # crate или [workspace] src/ main.rs / lib.rs / tests/ # интеграционные тесты benches/ # бенчмарки (если есть) ``` > Ориентир: стандартный cargo-лейаут (`src/`, `tests/`), workspace при нескольких crate. Эталон уточним. ## Линтеры и форматирование - Форматирование: `cargo fmt --all` (проверка в CI — `cargo fmt --all -- --check`). - Линтер: **clippy** — `cargo clippy --all-targets --all-features -- -D warnings`. Настройки — в `clippy.toml` / атрибутах crate. Дефолт: clippy с `-D warnings`; точечные `allow` — только с комментарием. Корпоративный набор уточним. ## Тесты - Прогон: `cargo test --all-features`. - Для workspace: `cargo test --workspace`. - Покрытие: `cargo-llvm-cov` (или tarpaulin), мягкий ориентир ~70%+. (пороги уточним) ## Сборка и зависимости - Сборка: `cargo build` (релиз — `cargo build --release`). - Аудит зависимостей: `cargo audit` (если подключён). - `Cargo.lock` коммитим для бинарников/сервисов. ## Коммиты и MR - **Формат коммитов:** Conventional Commits (`feat:`, `fix:`, `chore:`, `docs:`, `refactor:`, `test:` …). - **Ветки и деплой:** фича-ветки — от `main` (в имя ветки желательно включать ключ тикета). Деплой управляется ветками/тегами: ветка `release-*` → раскатка на **stage**; тег `v*` → раскатка в **прод**. Ветки `release-*` и теги `v*` без необходимости не пушь — `permission-gate` переспросит. - **MR обязателен** (см. корпоративные правила из контекста сессии). Прямой push в защищённые ветки запрещён — расширение `permission-gate` дополнительно переспросит. - Перед MR: `cargo fmt --check`, `cargo clippy -D warnings`, `cargo test` — всё зелёное. - Описание MR: что и зачем, как проверено, ссылка на тикет (скилл `jira-workflow`). ## Чек-лист перед MR - [ ] `cargo fmt --all -- --check` чисто - [ ] `cargo clippy --all-targets --all-features -- -D warnings` чисто - [ ] `cargo test` зелёные - [ ] есть тесты на новую логику / фикс - [ ] нет секретов и закоммиченных `.env` - [ ] описание MR со ссылкой на тикет