# GitHub Copilot CLI ile Rust Projelerinde Verimli Çalışma

Adres: https://agentvera.dev/blog/copilot-cli-ile-rust/ · Yayın: 2026-11-01

GitHub Copilot CLI’yi Rust projelerinde cargo, clippy ve borrow checker odaklı talimatlarla kullanmayı öğrenin. Test, lint ve çalışma döngüsü pratik rehberi.

**Kısaca:**

- GitHub Copilot CLI’yi Rust projesinde copilot ile başlatın; .github/copilot-instructions.md dosyasına cargo, clippy ve rustfmt komutlarını yazın.
- Ajanı küçük adımlarla çalıştırın; her değişiklikten sonra cargo test --workspace ve cargo clippy -- -D warnings ile doğrulayın.
- Borrow checker hatalarında ajanın clone() veya Mutex eklemesine izin vermek yerine önce yaşam süresi ve ödünç alma çözümünü isteyin.

GitHub Copilot CLI’yi bir Rust projesinde, proje klasöründe `copilot` komutuyla başlatıp `.github/copilot-instructions.md` veya `AGENTS.md` dosyasına cargo, clippy, rustfmt ve test komutlarını yazdığınızda; ajan derleyici geri bildirimini kullanarak küçük, doğrulanabilir adımlarla çalışır. Bu rehberde Rust’a özgü pratik kurulum, çalışma döngüsü ve doğrulama adımlarını ele alıyorum. Aracın genel kullanımı için [GitHub Copilot CLI](/ajanlar/copilot-cli/) sayfasına bakabilirsiniz.

## GitHub Copilot CLI Rust işlerine neden uygun

Rust’ın güçlü yanı, derleyicinin ve araç zincirinin net hata mesajları üretmesidir. GitHub Copilot CLI, `cargo test`, `cargo clippy` ve `cargo fmt` çıktılarını okuyup bir sonraki adımı buna göre planlayabilir. Örneğin `cargo check` hızlı bir şekilde tip ve ödünç alma hatalarını gösterir; ajan hatayı görüp düzeltme önerisini hemen test edebilir. Workspace yapısı sayesinde ajan, değişikliği tek crate ile sınırlayabilir; diğer üyeleri etkilemeden ilgili modül üzerinde çalışır. Borrow checker hataları çoğu zaman deterministiktir; ajan `E0505`, `E0382`, `E0597` gibi hata kodlarına göre çözüm arar. Clippy ise deyimsel olmayan kodları işaretler; ajan bu uyarıları gidererek idiomatic Rust yazmayı öğrenir. Ayrıca Rust ekosistemi tek biçimlidir; `cargo` komutları projeden projeye değişmez. Bu yüzden doğru talimatlarla ajan, tahmin yürütmek yerine derleyiciyi test aracı olarak kullanır ve her değişikliği derleyiciyle doğrular.

## Projeyi ajan için hazırlamak

Copilot CLI, depo kökündeki `.github/copilot-instructions.md` veya `AGENTS.md` dosyasını okur. İkisinden birini seçin; workspace köküne koyun. `AGENTS.md` genellikle daha uzun ömürlü ve diğer ajanlarla paylaşılabilir olabilir; `.github/copilot-instructions.md` ise yalnızca Copilot CLI içindir. Hangisini kullanırsanız kullanın, dosya kısa, komut odaklı ve Rust’a özgü olmalıdır. Ajan böylece `cargo`'yu nasıl çağıracağını, hangi sırayla doğrulama yapacağını ve hangi kalıplardan kaçınacağını bilir. AGENTS.md yazımıyla ilgili [rehber](/blog/claude-md-nasil-yazilir/) buradaki kurallar için de geçerlidir; fark, Rust komutlarını öne çıkarmaktır.

Aşağıdaki örnek, orta ölçekli bir workspace projesi için yeterlidir. Talimatlar net, kısa ve doğrulanabilir komutlara dayanır. `cargo fmt --check` elle formatlama yerine kontrolü zorunlu kılar; `clippy -D warnings` ise uyarıları hata yapar. `unsafe` ve yeni bağımlılık kuralı, ajanın hızlı ama riskli çözümlere sapmasını engeller. Talimat dosyasının 50 satırı geçmemesine özen gösterin; gereksiz açıklamalar ajanın dikkatini dağıtır.

```markdown
# Rust projesi ajan talimatları

- Paket yöneticisi: cargo. Asla `cargo` yerine `rustc` ile tek dosya derlemeyin.
- Çalışma alanı: workspace kökünden komut çalıştırın. `cargo test --workspace --all-targets` kullanın.
- Biçim: `cargo fmt --check` temiz olmalı; elle formatlama yapma.
- Lint: `cargo clippy --workspace --all-targets -- -D warnings` sıfır uyarıyla geçmeli.
- Test: bir değişiklikten sonra `cargo test` çalıştır; önce ilgili modülün testini, sonra tüm paketi.
- Borrow checker: derleyici hatasını görünce tahminle düzeltme. Hatayı ve ilgili türleri incele; `clone()` eklemeden önce ödünç alma veya yaşam süresi çözümünü dene.
- Hata yönetimi: yeni bağımlılık ekleme; önce `thiserror` veya `anyhow` mevcut kullanımına bak.
- Kural: `unsafe` ekleme; eklenmesi gerekiyorsa nedenini açıkla.
- Dizinler: `src/bin` CLI girişleri, `src/lib` paylaşılan mantık, `tests` entegrasyon testleri.
```

Bu kurallar projeye göre değişebilir: örneğin async çalışıyorsanız `tokio` runtime kurallarını, proc-macro kullanıyorsanız `cargo expand` ile doğrulamayı ekleyebilirsiniz. Önemli olan, komutların gerçekten çalıştırılabilir olması ve ajanın her adımda bunları kullanmasıdır.

## Çalışma döngüsü ve örnek istemler

Copilot CLI ile Rust’ta en verimli döngü şudur: küçük bir hedef belirleyin, ajanın planı önce özetlemesini isteyin, değişikliği yaptırın, `cargo fmt --check` ve `cargo clippy` ile biçim/lint kontrolü yapın, ardından `cargo test` çalıştırın. Sonucu görmeden bir sonraki istemi vermeyin. Diff’i inceleyin; özellikle `Cargo.toml` ve `Cargo.lock` değişikliklerini ayrı tutun. Genel kullanım adımları için [rehber](/blog/copilot-cli-nasil-kullanilir/) yardımcı olur.

Başlangıçta ajanın plan önermesi için şöyle bir istem kullanabilirsiniz: "Bu değişiklik hangi dosyaları etkiler, hangi modüllerde ne yapılacak? Önce kısa bir plan yaz." Bu, ajanın tüm projeyi değiştirmek yerine hedefe odaklanmasını sağlar. Değişiklik tamamlandığında `git diff --stat` ile etkilenen dosyaları kontrol edin; beklenmedik dosyalar varsa istemi daraltın.

Birkaç tipik Rust istemi:

- `src/lib.rs` içindeki `parse_config` fonksiyonunu `Config` struct’ına `TryFrom` implementasyonu ile yeniden yaz; mevcut hata türünü `thiserror` varyantı olarak güncelle.
- Workspace’te `cargo test --workspace` çalıştır. İlk hatayı düzeltme; sadece hangi modülde olduğunu, nedenini ve önerdiğin çözümü yaz.
- `cargo clippy --workspace --all-targets -- -D warnings` çalıştır, çıkan her uyarıyı sırayla düzelt. Her düzeltmeden sonra tekrar çalıştır ve yeni uyarı olmadığını kontrol et.
- `tests/integration_test.rs` içine `Config::load` için eksik parametre ve geçersiz dosya yolu testleri ekle; testler `cargo test --test integration_test` ile geçmeli.
- `src/main.rs` içindeki CLI argüman ayrıştırmayı `clap` kullanarak yeniden yaz, mevcut argüman adlarını koru ve `--help` çıktısını test et.

Bu istemlerde önemli nokta, her birinin tek bir işe odaklanması ve doğrulama komutunun belirtilmesidir. Birden fazla sorunu tek istemde çözmeye çalışmak, ajanın kafasını karıştırır ve diff’i büyütür.

## Tipik görevler ve dikkat edilecek noktalar

Ajan şu işleri iyi yapar: mevcut kodda yeniden düzenleme, `Result<T, E>` dönüşümü, clippy uyarılarını giderme, birim ve entegrasyon testi üretme, `#[derive]` ekleme ve hata mesajlarını iyileştirme. Özellikle `match` kollarını `if let` veya `map`/`and_then` zincirine çevirme gibi mekanik işlerde başarılıdır. Ayrıca `cargo add` ile bağımlılık ekleme gibi rutin işleri güvenle yapabilir; ancak yine de `Cargo.toml` değişikliklerini gözden geçirmek gerekir.

Ancak şu tuzaklara dikkat edin:

| Durum | İyi istem | Sık yapılan hata |
|-------|-----------|------------------|
| Borrow checker hatası | 'Bu fonksiyonda `self` yerine `&self` kullanarak hatayı çöz, `clone()` ekleme.' | Gereksiz `clone()` veya `Rc<RefCell<T>>` ekler. |
| Yeni bağımlılık | 'Bu iş için mevcut crate’lerden hangisi uygun? Önce mevcut bağımlılıkları kullan.' | Her sorun için yeni crate ekler, `Cargo.lock` şişer. |
| Makro veya proc-macro | 'Değişikliği makro açılımını düşünerek yap, sadece ilgili kodu değiştir.' | Makro açılımını yanlış varsayar, üretilen kodda hata bırakır. |
| Çoklu crate workspace | 'Sadece `crate-a` içinde değişiklik yap, diğer üyeleri etkileme.' | Diğer crate’in API’sini değiştirir, tüm workspace kırılır. |

Bunlara ek olarak, ajanın `async` fonksiyonlarda `Send` sınırlamalarını göz ardı etmesi, `dyn Trait` yerine `impl Trait` dönüşümünde yanlış kullanım, ömürleri uzatmak için `'static` eklemesi veya `Mutex`/`RwLock` ile aşırı kilitleme gibi hatalar da görülür. Özellikle async Rust’ta `tokio::spawn` içine gönderilen future’lar `Send` olmalıdır; ajan bunu atlayabilir. Bu tür durumlarda istemi daraltın ve ilgili derleyici hatasını ajanla paylaşın.

## Test ve doğrulama

Copilot CLI’den değişiklik yaptıktan sonra doğrulama sırası net olmalı: önce `cargo fmt --check`, sonra `cargo clippy --workspace --all-targets -- -D warnings`, ardından `cargo test --workspace --all-targets`. Ajan bu komutları kendisi çalıştırabilir fakat siz de çalıştırıp çıktıyı ajanla paylaşabilirsiniz. Testlerin geçmesi yeterli değildir; `cargo test --doc` ile dokümantasyon örnekleri de kontrol edilmeli, entegrasyon testleri ayrı çalıştırılmalıdır. Birim testleri genellikle aynı dosyada `#[cfg(test)]` modülünde bulunur; ajanın test eklerken mevcut yapıya uymasını isteyin. Entegrasyon testleri `tests/` dizininde olmalıdır; ajan bazen bunları birim testi olarak ekleyebilir.

Ayrıca `cargo check --workspace --all-targets` komutunu değişiklik sonrası hızlı bir kontrol olarak kullanın; bu, tam derleme yapmadan tip hatalarını yakalar. Ajanın ürettiği testlerin kalitesini gözden geçirin: testlerin gerçekten davranışı doğruladığından emin olun, sadece fonksiyon çağrısı yapıp geçmek için yazılmış testleri kabul etmeyin. Diff’i `git diff` ile inceleyin; özellikle `Cargo.toml`, `Cargo.lock` ve `rust-toolchain.toml` dosyalarındaki değişiklikler beklenmedik olabilir.

## Birden fazla ajanı AgentVera ile çalıştırmak

AgentVera, GitHub Copilot CLI dahil birçok CLI ajanını kendi gerçek terminal panellerinde yan yana çalıştırır. Rust projesinde birden fazla ajanı paralel kullanırken en kritik avantaj, her ajanın kendi git worktree’sinde çalışabilmesi; böylece aynı dosyayı bozmazlar. Ayrıca bir ajan turu bitince ikinci bir modelin otomatik kod incelemesi, borrow checker’ı yanlış çözen `clone()` eklemelerini dosya:satır bağlantısıyla yakalar. Checkpoint’ler sayesinde kötü bir refactor tek tıkla geri alınır. Token bütçeleri ise uzun derleme hataları döngüsünde aşırı harcamayı önler.

## Sonuç

GitHub Copilot CLI, Rust’ın katı kurallarıyla uyumlu bir araçtır; doğru talimatlar ve düzenli doğrulama ile kod tabanınızı güvenle genişletebilirsiniz. Ajanı küçük adımlarla yönlendirin, derleyiciyi araç olarak kullanın ve riskli değişiklikleri her zaman gözden geçirin. Proje talimatlarınızı güncel tutun; Rust ekosistemi değiştikçe yeni komutlar ekleyin. Bu yaklaşımla Copilot CLI, rustc’nin hata mesajlarını ve clippy’nin önerilerini kullanarak güvenilir bir yardımcıya dönüşür.

## Sık sorulanlar

**GitHub Copilot CLI Rust projesinde nasıl başlatılır?** Proje klasöründe terminalde copilot komutunu çalıştırın. Rust’a özel kuralları .github/copilot-instructions.md veya AGENTS.md dosyasına yazın; ajan bu dosyayı okuyarak cargo, clippy ve test komutlarını kullanır.

**Copilot CLI Rust’ta borrow checker hatalarını çözebilir mi?** Evet, derleyici mesajlarını okuyup ödünç alma ve yaşam süresi çözümleri önerebilir. Ancak bazen gereksiz clone() veya Rc<RefCell<...>> ekleyebilir; talimatlarda önce referans veya yapılandırma çözümü denemesini isteyin.

**Copilot CLI’ye hangi Rust komutlarını öğretmeliyim?** .github/copilot-instructions.md içinde cargo check --workspace --all-targets, cargo test --workspace --all-targets, cargo clippy --workspace --all-targets -- -D warnings ve cargo fmt --check komutlarını tanımlayın. Ajan planını buna göre doğrular.

**GitHub Copilot CLI Rust kodu için test yazabilir mi?** Evet, mevcut test yapınıza uygun birim ve entegrasyon testleri üretebilir. Ürettiği testi cargo test ile çalıştırıp gerçekten geçtiğini doğrulayın.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
