Cursor Agent, Rust projelerinde cursor-agent komutuyla terminal üzerinden çalışan bir kodlama ajanıdır. Bu rehber, cargo, crates ve workspace yapısı, borrow checker, clippy ve test süreçlerini Cursor Agent ile nasıl yöneteceğinizi somut adımlarla anlatır. Proje talimatları AGENTS.md veya .cursor/rules dosyasından okunur; doğru kurulum, ajanın Rust’a özgü hataları daha az yapmasını ve derleyici geri bildirimini daha iyi kullanmasını sağlar. Daha geniş bağlam için Cursor Agent sayfasına bakabilirsiniz.
Cursor Agent neden Rust işlerine uygun?
Rust derleyicisi, hata mesajlarını satır ve neden bilgisiyle birlikte verir; Cursor Agent bu çıktıyı okuyup doğrudan kod üzerinde değişiklik yapabilir. Terminal erişimi sayesinde cargo check, cargo test, cargo clippy ve cargo fmt komutlarını kendisi çalıştırır, sonuçlara göre iterasyon yapar. Bu, sohbet tabanlı bir asistana göre çok daha kapalı bir geri bildirim döngüsü oluşturur.
Rust projeleri genellikle workspace altında birden fazla crate barındırır. Ajan, Cargo.toml dosyalarını ve modül hiyerarşisini okuyarak API değişikliklerinin diğer cratelere etkisini görebilir. Örneğin bir crate’teki public fonksiyon imzası değiştiğinde, onu kullanan diğer crate’lerdeki çağrıları da güncelleyebilir. Crates.io bağımlılıkları ve feature bayrakları da Cargo.toml üzerinden yönetilebildiği için sürüm uyumsuzluklarını tespit etmek kolaylaşır.
Projeyi ajan için hazırlama: AGENTS.md ve .cursor/rules
Cursor Agent, proje kökündeki AGENTS.md veya .cursor/rules dosyasını talimat kaynağı olarak okur. Rust projesi için bu dosya ne kadar net olursa, ajanın varsayılan davranışları o kadar az sürpriz üretir. Aşağıdaki örnek, build, test, lint ve format komutlarını, dizin düzenini ve Rust’a özgü kuralları içerir:
# Rust proje kuralları
## Komutlar
- Build: `cargo build --workspace`
- Test: `cargo test --workspace`
- Lint: `cargo clippy --workspace --all-targets -- -D warnings`
- Format: `cargo fmt --all -- --check`
## Dizin yapısı
- `crates/` altında workspace üyeleri bulunur; her crate kendi `src/lib.rs` veya `src/main.rs` dosyasına sahiptir.
- Ortak tipler `crates/core/src` altında tanımlanır; diğer crateler buradan import eder.
## Rust'a özel kurallar
- `unwrap()` ve `expect()` yalnızca testlerde veya matematiksel olarak kanıtlanabilir durumlarda kullanılabilir.
- Kütüphane kodunda hata tipi olarak `thiserror` tabanlı enum tercih et; `anyhow::Result` yalnızca binary katmanında kullanılabilir.
- `unsafe` blok eklemeden önce nedenini ve güvenlik argümanını yorum satırı olarak yaz.
- Bir borrow hatasıyla karşılaştığında önce ömür (lifetime) ihtiyacını değerlendir; gereksiz `clone()` eklemekten kaçın.
- `cargo fmt` uygulamadan önce `cargo fmt --all -- --check` ile format farkını göster.
Bu dosyayı sürüm kontrolüne ekleyin; ekip arkadaşları da aynı kuralları kullanır. Temel kurulum ve Cursor CLI kullanımı için Cursor CLI nasıl kullanılır? Adım adım rehber yazısına göz atabilirsiniz.
Çalışma döngüsü ve örnek istemler
Rust ile Cursor Agent kullanırken şu döngüyü izleyin: önce görevi küçük bir adıma bölün, ajanın yalnızca o adımı yapmasını isteyin, ardından testleri ve diff’i inceleyin, sonra bir sonraki adıma geçin. Bu, borrow checker hatalarının birikmesini önler ve yanlış refactor’ların etkisini sınırlar.
Örnek istemler:
src/config.rsiçindekiload_configfonksiyonunuResult<Config, ConfigError>döndürecek şekilde yeniden yaz;thiserrorileConfigErrorenum’ını oluştur vefromdönüşümlerini ekle.cargo test --workspaceçalıştır, başarısız olan testleri listele ve yalnızca ilgili kaynak dosyalarını değiştirerek düzelt; test dosyalarını elle düzenleme.src/parser.rsiçindekiclone()çağrılarını incele; gereksiz olanları ömür parametreleri veya referanslarla gider, ancak public API imzalarını bozma.metricsadında yeni bir modül ekle:src/metrics.rsoluştur,Metricsstruct’ını verecordmetodunu yaz,#[cfg(test)]bloğuna birim testlerini ekle.cargo clippy --workspace --all-targetsçalıştır; çıkan uyarıların ilk beşini güvenli şekilde düzelt,-D warningskullanma ve davranışı değiştirme.
Her istemden sonra ajanın çalıştırdığı komutları ve değişiklikleri inceleyin; özellikle Cargo.toml değişikliklerinde bağımlılık sürümlerinin uyumluluğunu kontrol edin.
Agent’ın iyi yaptığı işler ve dikkat edilmesi gereken tuzaklar
Cursor Agent, tekrarlayan Rust işlerinde oldukça etkilidir: #[derive(Debug, Clone, Serialize, Deserialize)] eklemek, match yerine ? operatörü kullanmak, From ve Into impl’lerini üretmek, modül belgelerini güncellemek ve test iskeletleri oluşturmak. Ayrıca derleyici hatalarını okuyup satır satır düzeltme önerileri sunabilir.
Ancak dikkat edilmesi gereken tuzaklar da vardır. Ajan bazen borrow checker hatasını çözmek için gereksiz clone() ekleyebilir; bu, performansı düşürür ve API tasarımını bozabilir. Ömür parametreleri konusunda aşırı karmaşık veya yanlış çözümler önerebilir. unsafe blokları konusunda ise güvenlik argümanını atlayabilir; bu nedenle unsafe içeren her değişiklik elle incelenmelidir. Workspace projelerinde feature bayrakları ve bağımlılık sürümleri arasındaki etkileşimi gözden kaçırabilir. Clippy uyarılarını bastırmak için #[allow(...)] eklemesi de istenmeyen bir davranıştır; bunun yerine gerçek düzeltme istenmelidir.
Aşağıdaki tablo tipik görevler için iyi istem ve denetlenecek noktaları özetler:
| Görev | İyi istem | Denetlenecek nokta |
| Hata yönetimini iyileştirme | std::io::Error dönen fonksiyonları thiserror tabanlı AppError ile değiştir | From impl’leri ve hata bağlamı kaybolmasın |
| Clone’ları azaltma | clone() çağrılarını referans veya ömürle gider, public API’yi bozma | Gereksiz yere 'static ömür veya Cow eklenmesin |
| Test ekleme | Bu fonksiyon için edge case’leri kapsayan birim testleri yaz | Testler gerçek davranışı yansıtsın, sadece geçsin diye zayıf assertion olmasın |
| Clippy düzeltme | cargo clippy --all-targets uyarılarını çöz ama davranışı değiştirme | Gereksiz allow eklenmesin |
Rust’ta test ve doğrulama
Ajan her değişiklikten sonra en azından cargo check veya cargo test çalıştırmalıdır. Workspace projelerinde cargo test --workspace --all-targets kullanmak, tüm cratelerdeki birim ve entegrasyon testlerini kapsar. Belirli bir hatayı izole etmek için cargo test test_adı -- --nocapture gibi filtreler kullanılabilir; ajana bu komutu vermek, ilgili testin çıktısını görmesini sağlar.
Clippy ve rustfmt doğrulamanın parçası olmalıdır: cargo clippy --workspace --all-targets --all-features -- -D warnings hem tüm hedefleri hem de feature kombinasyonlarını denetler. Format için cargo fmt --all -- --check çalıştırıp diff’i gösterin; format değişikliklerini yalnızca gerçekten istediğinizde kabul edin. Eğer ajan bir borrow checker hatasını düzeltemiyorsa, ona önce hatanın nedenini açıkla, sonra üç olası çözümü artı ve eksileriyle listele deyin; bu, aceleci bir clone() eklemesinden daha sağlıklıdır.
Aynı projede birden fazla ajan: AgentVera
AgentVera, birden fazla Cursor Agent oturumunu tek pencerede gerçek terminal panelleriyle çalıştırır. Rust projelerinde bir ajan borrow checker düzeltmesi yaparken diğeri test yazabilir; her ajan kendi git worktree’sinde çalıştığı için dosyalar çakışmaz. Ajanın turu bittiğinde ikinci bir model otomatik kod incelemesi yapar ve bulgular file:line olarak işaretlenir, bu da ömür ve sahiplik hatalarını yakalamayı kolaylaştırır. Ayrıca token bütçeleri, derleme/test döngülerini sınırlı tutar; checkpoint’ler kötü bir refactor’u tek tıkla geri almayı sağlar. Paralel kodlama ajanları için en iyi araçlar yazısı bu iş akışını genişletir.
Sonuç
Cursor Agent, Rust projelerinde derleyici geri bildirimini doğrudan kullanarak hızlı iterasyon sağlar; ancak güvenli sonuç, net proje kuralları, küçük adımlar ve titiz diff incelemesiyle gelir. AGENTS.md veya .cursor/rules dosyasını eksiksiz hazırlayın, cargo komutlarını açıkça belirtin ve her değişiklikten sonra test, clippy ve format kontrollerini çalıştırın. Böylece Cursor Agent, Rust geliştirme sürecinizin güvenilir bir parçası olur.