Per decision to use common industry practice now and tune later: - structures: standard layouts (go cmd/internal/pkg, python src-layout, rust cargo, ts pnpm workspaces, kotlin Gradle modules, swift SwiftPM) - linters: default rulesets (golangci base, clippy -D warnings, ruff+mypy, typescript-eslint+prettier, ktlint+detekt, swiftlint+swiftformat) - test runners: TS=vitest; coverage soft targets (~70-80%) marked '(пороги уточним)' - swift deps: SwiftPM (Package.resolved), CocoaPods legacy-only - reworded intros: values are industry defaults to be tuned, no raw TODO markers left Verified: no TODO markers remain in *-standards; all six skills load via pi.
3.7 KiB
3.7 KiB
name, description
| name | description |
|---|---|
| rust-standards | Используй при написании, ревью и проверке кода на 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
<module>/
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 со ссылкой на тикет