Davet et, 1 ay ücretsiz Pro kazanNasıl çalışır?

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

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.

Solviera Teknoloji 5 dk okuma

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 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 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.

# 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 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 istemSı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.

Ajanlarını bir masaya topla.

AgentVera’yı ücretsiz indir; kurulu CLI’ların hazır.

Diğer GitHub Copilot CLI rehberleri

Rust için diğer ajanlar