К основному содержанию
правило

rust-general — правило для Cursor: что делает и как установить

Правило задаёт практики для безопасного и идиоматичного Rust-кода. Оно пригодится при работе с .rs, Cargo.toml и Cargo.lock.

Установить в Cursor · Вручную: положить файлы Все способы и платформы ↓
.cursor/rules/rust-general.mdc
Открыть на GitHub

Что делает rust-general

rust-general задаёт правила для структуры Rust-проектов, владения данными и обработки ошибок. Оно советует разделять библиотечный и исполняемый код, держать публичные API небольшими, выбирать Option<T> и Result<T, E> для состояний и ошибок, а клонирование применять только при необходимости. Для библиотек рекомендуются thiserror или стандартные ошибки проекта, для приложений — anyhow с контекстом операций.

Правило также охватывает асинхронность, границы Send и Sync, отмену задач и тестирование. Перед поставкой оно предлагает запускать cargo fmt и cargo clippy, добавлять модульные и интеграционные тесты. Для файлов, подпадающих под **/*.rs, а также для Cargo.toml и Cargo.lock, правило подключается по совпадению шаблона; alwaysApply имеет значение false.

Код с блокирующей блокировкой через .await, лишним Arc<Mutex<_>> или без документированного unsafe потребует правок по этим правилам.

Какие задачи решает

  • разделить библиотечный и исполняемый код по структуре crate
  • выбрать Option<T> и Result<T, E> для состояний Rust-программы
  • добавить контекст к ошибкам ввода-вывода, сети или базы данных
  • проверить async-код на блокирующие операции через .await
  • подготовить проект к cargo fmt и cargo clippy

Примеры запросов агенту

  • Проверь этот Rust-код по правилам владения, ошибок и структуры проекта.
  • Найди в src/lib.rs лишние клонирования и предложи заимствования.
  • Проверь async-функции на блокирующие блокировки через .await и ошибки отмены задач.

Как установить rust-general

Вручную: положить файлы

.cursor/rules/rust-general.mdc

Во frontmatter: description, globs, alwaysApply

По шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules

Вопросы о rust-general

Как установить rust-general в Cursor?

Добавьте файл правила по пути .cursor/rules/rust-general.mdc. После этого Cursor сможет применять его к файлам, которые совпадают с заданными шаблонами.

Что делает rust-general?

Правило задаёт рекомендации для структуры crate, владения, типов, ошибок, async-кода и тестов в Rust. Оно также напоминает запускать cargo fmt и cargo clippy перед поставкой.

Какие файлы обрабатывает rust-general?

Правило рассчитано на **/*.rs, Cargo.toml и Cargo.lock. Оно не применяется постоянно: alwaysApply имеет значение false.

Исходный текст

rust-general.mdc · CC0-1.0
---
description: General Rust rules for safe, idiomatic application and library development
globs: ["**/*.rs", "Cargo.toml", "Cargo.lock"]
alwaysApply: false
---

# Rust General Rules

## Project Structure

- Keep crates focused and name modules by domain responsibility.
- Put reusable library code in `src/lib.rs` and binary entry points in `src/main.rs` or `src/bin/`.
- Keep public APIs small and documented.
- Use feature flags deliberately and document non-default features.
- Commit `Cargo.lock` for applications; follow the project convention for libraries.

## Ownership and Types

- Prefer borrowing over cloning when ownership is not needed.
- Use owned values at API boundaries when the callee must store data.
- Model domain states with enums and structs instead of strings or booleans.
- Use `Option<T>` for absence and `Result<T, E>` for fallible operations.
- Avoid `unwrap()` and `expect()` outside tests, examples, and process-startup invariants.

## Error Handling

- Use `thiserror` or project-standard custom errors for libraries.
- Use `anyhow` or project-standard context-rich errors for applications.
- Add context when crossing IO, network, database, or parsing boundaries.
- Do not discard errors with `_` unless explicitly documented.

## Concurrency and Async

- Use `Send` and `Sync` boundaries intentionally.
- Prefer message passing or owned task inputs for async work.
- Do not hold blocking locks across `.await`.
- Use `tokio::task::spawn_blocking` or equivalent for blocking CPU or IO in async applications.
- Propagate cancellation through futures rather than hiding it in detached tasks.

## Testing and Quality

- Run `cargo fmt` and `cargo clippy` before delivery.
- Add unit tests for pure logic and integration tests for public behavior.
- Use property tests for parsers, serializers, and state machines when useful.
- Use benchmarks only after identifying a real performance question.

## Common Mistakes

- Do not fight the borrow checker by adding unnecessary `Arc<Mutex<_>>`.
- Do not expose internal module structure through public APIs by accident.
- Do not allocate in hot loops without measuring.
- Do not use unsafe code unless the invariant is documented and tested.

© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules

Похожие правила IDE

Все правила IDE по теме «Языки программирования» →
rust-best-practices apollographql Скилл для написания и ревью Rust-кода по хендбуку Apollo GraphQL: заимствование против клонирования, обработка ошибок, тесты. CX Codex +1 21 200установок rust-security mohitmishra786 Скилл для проверки Rust-проектов на уязвимости: cargo-audit, cargo-deny, RUSTSEC, безопасный FFI, фаззинг и Miri. CX Codex +1 544установок rust-refactor pproenca Скилл для рефакторинга Rust: убирает лишние абстракции, делит большие файлы на модули, помогает мигрировать типы постепенно. CX Codex +1 314установок rust-engineer VoltAgent Community Помогает писать код на Rust 2021 edition с упором на владение памятью, zero-cost абстракции и проверку через Miri. Пригодится при разработке сервисов, embedded и async-систем. 262установок rust-deps-visualizer actionbook Рисует дерево зависимостей Rust-проекта символами ASCII. Пригодится, когда нужно быстро понять, что тянет за собой ваш Cargo.toml. CX Codex +1 3 000установок rust-router actionbook Скилл, который не отвечает на вопросы по Rust сразу, а сначала ведёт агента по слоям: механика языка, проектирование, ограничения предметной области. CX Codex +1 2 700установок

Из того же набора140

solidity-hardhat-cursorrules-prompt-file Правило для Cursor, которое настраивает ИИ-ассистента на разработку смарт-контрактов на Solidity с проверками безопасности и работой через Hardhat. ★ 41 024звёзд репо snowflake-snowpark-dbt-cursorrules-prompt-file Правило для Cursor, которое задаёт агенту контекст по Snowpark Python и dbt с адаптером Snowflake. Пригодится, когда пишете пайплайны трансформаций в этих двух инструментах. ★ 41 024звёзд репо shopify-theme-dev-liquid Правило для Cursor с набором практик по темам Shopify: Liquid, JavaScript, CSS, доступность и производительность. Пригодится, если пишете тему и хотите, чтобы агент держал структуру. ★ 41 024звёзд репо salesforce-apex-cursorrules-prompt-file Правило для Cursor, которое настраивает ИИ на разработку Salesforce на Apex: очередь вместо @future, паттерны GoF и минимум комментариев. ★ 41 024звёзд репо rtl-right-to-left-i18n-cursorrules-prompt-file Правило Cursor, которое заставляет агента писать CSS и Tailwind по логическим свойствам, а не по left/right. Пригодится, если проект должен работать на арабском, иврите, персидском или урду. ★ 41 024звёзд репо react Правило задаёт агенту Cursor соглашения по React: структура компонентов, хуки, состояние, формы и доступность. Пригодится, когда в проекте много .tsx и .jsx и хочется единый стиль. ★ 41 024звёзд репо react-typescript-nextjs-nodejs-cursorrules-prompt- Правило для Cursor задаёт стиль кода на React, TypeScript, Next.js 14 и Node.js: функциональные компоненты, RORO, минимум use client. ★ 41 024звёзд репо react-styled-components-cursorrules-prompt-file Правило для Cursor, которое задаёт агенту стиль кода на React со styled-components: функциональные компоненты, тема через ThemeProvider, папка styles. ★ 41 024звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой