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

Gemini CLI ile Rust Projelerinde Verimli Çalışma Rehberi

Gemini CLI’yı Rust projelerinde nasıl kullanacağınızı görün: GEMINI.md kurulumu, çalışma döngüsü, test ve clippy doğrulaması, tipik tuzaklar.

Solviera Teknoloji 5 dk okuma

Gemini CLI’yı Rust projenizde terminalde gemini komutuyla başlatırsınız; ajan, proje kökündeki GEMINI.md dosyasından bağlamı okur. Bu rehberde Rust’a özel kurulum, çalışma döngüsü ve doğrulama pratiklerini anlatıyorum. Temel kullanım için Gemini CLI nasıl kullanılır? Adım adım rehber yazısına göz atabilirsiniz.

Gemini CLI Rust işleri için neden uygun

Rust ekosistemi, ajanların işini kolaylaştıran güçlü bir araç zincirine sahiptir. cargo komutları deterministiktir; ajan cargo build, cargo test ve cargo clippy çıktılarını güvenilir bir şekilde yorumlayabilir. Derleyici hataları genellikle E0515, E0502 gibi kodlarla birlikte gelir ve düzeltme önerileri sunar; ajan bu mesajları kullanarak adım adım düzeltebilir. Clippy uyarıları ise Rust’a özgü en iyi pratikleri öğretir; ajan, uyarıyı bastırmak yerine kodu düzeltebilir. Trait ve modül yapısı, değişiklikleri küçük parçalara bölmeyi kolaylaştırır; örneğin bir fonksiyonun imzasını değiştirmek yalnızca o modülü etkiler. Rustfmt sayesinde kod formatı tutarlıdır; ajan ürettiği kodu formatladıktan sonra diff temiz kalır. Ajan ayrıca GEMINI.md içindeki proje kurallarını okuyarak her oturumda aynı standartları uygular. Bu nedenle refactor, test ekleme, clippy temizliği ve hata tipi dönüşümü gibi işlerde değer üretir. Örneğin, Result<T, Box<dyn Error>> yerine thiserror tabanlı özel hata tipine geçişi planlayıp uygulayabilir. Ajanın kendisi hakkında daha fazla bilgi için Gemini CLI sayfasına bakın.

Projeyi ajan için hazırlama ve GEMINI.md

Ajanın en büyük avantajı, her oturumda aynı bağlamı tekrar anlatmak zorunda kalmamanızdır. Proje köküne GEMINI.md ekleyin; dosyada build, test, lint komutlarını, klasör kurallarını ve Rust’a özel kısıtları yazın. Ajan bu dosyayı her çalıştırmada okur. Dosya ne kadar somut olursa ajan o kadar az yanlış karar verir. Örneğin, workspace’iniz varsa hangi crate’in ne işe yaradığını belirtin; ajan cargo test --workspace yerine yalnızca ilgili crate’i test etmesi gerektiğini anlar. Hata yönetimi, async runtime, unsafe kullanımı, feature flag’leri gibi konularda net kurallar koyun. Aşağıdaki örnek tek workspace’li bir proje için yeterli:

# Proje komutları
- Build: `cargo build --workspace`
- Test: `cargo test --workspace`
- Lint: `cargo clippy --workspace -- -D warnings`
- Format: `cargo fmt --all -- --check`

# Klasör düzeni
- `crates/core`: alan modelleri ve trait tanımları
- `crates/api`: HTTP ve gRPC katmanı
- `src/bin`: çalıştırılabilir uygulamalar

# Rust kuralları
- Ownership'u bozmadan, mümkünse referans ve borrow kullan; gereksiz clone ekleme.
- Hata yönetimi için `thiserror` (kütüphane) ve `anyhow` (uygulama) kullan.
- `unsafe` kod ancak performans kritik ve test edilmişse ekle; nedenini yorumla.
- Public API değiştirirken mevcut integration testleri güncelle.
- Clippy uyarılarını bastırma; kodunu uyarıya göre düzelt.

Bu dosyayı sürüm kontrolüne ekleyin; ekip arkadaşlarınız da aynı kuralları kullanır. GEMINI.md’yi değiştirdiğinizde ajanın yeni kuralları hemen uyguladığını göreceksiniz.

Çalışma döngüsü ve örnek Rust görev promptları

Ajanla verimli çalışmanın yolu, büyük görevi küçük adımlara bölmektir. Önce plan isteyin; ajan, hangi dosyaları değiştireceğini, hangi testlerin etkileneceğini ve olası riskleri sıralasın. Planı onayladıktan sonra uygulamasını isteyin; her adımda cargo test ve cargo clippy çalıştırmasını şart koşun. Ajan test başarısız olursa hatayı düzeltmesini isteyin; bu döngüyü en fazla iki kez tekrarlayın, sonra kendiniz devreye girin. Her aşamada git diff ile değişiklikleri gözden geçirin; ajanın yaptığı her hamleyi commit’lemeyin, önce test yeşil olsun. Ajanın ürettiği kodu okumadan merge etmeyin. Aşağıdaki promptlar Rust projelerinde sık kullanılır:

  • “src/parser.rs içindeki parse_config fonksiyonunu Result<T, ConfigError> döndürecek şekilde yeniden düzenle; önce planı yaz, sonra uygula.”
  • “Cargo.toml’a serde ve serde_json ekle, Config struct’ına Serialize ve Deserialize derive’larını ekle; ardından JSON yuvarlak tur testi yaz.”
  • “cargo clippy --workspace -- -D warnings çalıştır, çıkan tüm uyarıları kodu değiştirerek temizle, allow attribute’u ekleme.”
  • “crates/core içindeki User tipini crates/api’ye taşımadan önce etki analizi yap; dairesel bağımlılık oluşmadan nasıl taşınacağını planla.”
  • “Bu modüldeki unwrap() çağrılarını bul, hata bağlamıyla birlikte anyhow::Context kullanarak dönüştür; testleri güncelle.”

Bu promptlardaki gibi, ajanın hangi araçları kullanacağını ve kabul kriterlerini açıkça belirtin. Ajan belirsizlik yaşarsa soru sormasını isteyin; sessizce varsayım yapmasına izin vermeyin.

Rust’ta ajanın iyi yaptığı işler ve dikkat edilecek tuzaklar

Ajan; trait türetme (Debug, Clone, Serialize, Deserialize), hata tipi dönüşümleri (From<io::Error> implementasyonları), modül taşıma, test ekleme (unit, integration, doc tests), clippy temizliği, dependency güncelleme ve Cargo.toml düzenleme gibi mekanik işleri iyi yapar. Örneğin, bir enum’a thiserror derive’ı ekleyip Display ve Error implementasyonlarını yazabilir; std::fs::read_to_string çağrısını ? operatörüyle dönüştürebilir; bir fonksiyonun imzasını impl Iterator<Item = &str> kullanacak şekilde sadeleştirebilir.

Ancak Rust’a özgü tuzaklarda dikkatli olun:

  • Borrow checker hatalarını aşmak için gereksiz clone() veya Rc<RefCell<T>> üretebilir; bu, performansı ve kodu bozar. Her clone() çağrısını sorgulayın; referans ömrü veya Cow daha iyi olabilir.
  • Lifetimes ve generic bound’larda aşırı karmaşık çözümler önerebilir; basit alternatifleri sormadan kabul etmeyin. Bazen 'static eklemek yerine borrowed data kullanmak daha temizdir.
  • unsafe blok eklerken gerekçeyi ve güvenlik argümanını yazmasını isteyin; aksi halde reddedin. Rust’ın güvenlik garantilerini bozan kod, inceleme olmadan kabul edilemez.
  • Makro ve proc-macro üretimi bazen yanlış token sıralaması yapabilir; mutlaka inceleyin ve cargo expand ile genişletilmiş kodu kontrol edin. Özellikle derive macro’ları beklenmedik expansion üretebilir.
  • Bağımlılık eklerken Cargo.toml’a gereksiz kütüphane ekleyebilir; her eklemeyi sorgulayın. cargo tree ile bağımlılık ağacını kontrol edin; ajan bazen sadece bir fonksiyon için ağır bir crate ekleyebilir.
  • Async runtime seçiminde (tokio vs async-std) projede mevcut runtime’a uymayan kod üretebilir; GEMINI.md’de hangi runtime’ın kullanıldığını belirtin.
  • Feature flag’lerini yanlış yönetebilir; #[cfg(feature = "...")] bloklarını eklerken testlerin tüm feature kombinasyonlarında geçtiğini doğrulayın.

Test ve doğrulama pratiği

Rust projesinde ajanın çıktısını kabul etmeden önce şu doğrulama zincirini uygulayın:

AdımKomut veya kontrolNe beklenir
Formatcargo fmt --all -- --checkHiçbir dosya değişmemiş olmalı
Lintcargo clippy --workspace -- -D warningsSıfır uyarı
Testcargo test --workspaceTüm testler geçmeli
Diffgit diff --stat ve git diffYalnızca istenen dosyalar, beklenen değişiklikler

Ajan her adımda bu komutları kendisi çalıştırabilir; ancak son onayı siz verin. Özellikle refactor sonrası cargo test çalıştırmadan commit’lemeyin. Unit testlerin yanı sıra integration testlerin (tests/ dizini) ve doc testlerin de çalıştığından emin olun. Ajan bazen yalnızca unit testleri çalıştırır; cargo test --workspace --all-features gibi komutlarla tüm feature’ları kapsayın. Ayrıca cargo check ile hızlı derleme hatalarını yakalayabilirsiniz; bu, uzun test döngülerinden önce zaman kazandırır. Ajanın ürettiği test adlarını ve assertion’ları inceleyin; bazen test geçiyor ama yanlış davranışı doğruluyor olabilir. Property-based testing (örneğin proptest) veya snapshot testing kullanıyorsanız, ajanın bu testleri güncellemesini talep edin.

Bir Rust projesinde birden fazla ajanı AgentVera ile yönetmek

AgentVera, kodlama ajanlarının gerçek komut satırı araçlarını (Claude Code, Codex, Gemini CLI ve diğerleri) tek pencerede, her biri kendi gerçek terminal panelinde yan yana çalıştıran bir masaüstü uygulamasıdır. Rust işleri için en değerli özellikler; paralel git worktree’leri sayesinde ajanların birbirinin dosyalarını ezmemesi, her dönüş sonunda ikinci bir modelin kodu inceleyip bulguları dosya:satır olarak raporlaması ve her dönüşün anlık görüntüsünün tek tıkla geri alınabilmesidir. Token bütçeleri de ajanın kontrolsüzce uzun bir refactoring’e dalmasını engeller. Böylece bir ajan cargo test ile uğraşırken diğeri clippy temizliği yapabilir; çakışma riski olmadan paralel ilerleme sağlanır. Daha fazlası için Windows’ta kodlama ajanlarını yönetmek: paralel ajanlar yazısına bakın.

Sonuç

Gemini CLI’yı Rust projesinde gemini komutuyla başlatın, GEMINI.md ile proje bağlamını verin ve her değişikliği cargo test, clippy ve fmt ile doğrulayın. Ajan mekanik işleri hızlandırır; ownership ve borrow kararlarını siz verin. Birden fazla ajanı paralel çalıştıracaksanız AgentVera gibi araçlarla çakışmaları önleyin.

Sık sorulanlar

Gemini CLI Rust projelerinde nasıl başlatılır?

Proje kök dizininde terminalde gemini yazın; ajan GEMINI.md dosyasını okuyarak bağlamı alır. İlk kullanımda kimlik doğrulama isteyebilir.

GEMINI.md dosyasına Rust için neler yazılmalı?

Build, test ve lint komutları (cargo build, cargo test, cargo clippy, cargo fmt --check), workspace düzeni ve Rust’a özel kurallar (ownership, hata yönetimi, unsafe kısıtları) yazılmalıdır.

Gemini CLI Rust kodunu test edebilir mi?

Evet, ajan cargo test komutunu çalıştırabilir; siz de her değişiklik sonrası bu komutu isteyebilirsiniz. Ayrıca belirli testleri filtrelemesini isteyebilirsiniz.

Gemini CLI ile Rust’ta en sık hangi hatalar yapılır?

Ajan bazen borrow checker’ı aşmak için gereksiz clone veya Rc<RefCell> kullanabilir; ayrıca clippy uyarılarını göz ardı edebilir. Diff’i inceleyip basit çözümleri tercih etmesini isteyin.

Ajanlarını bir masaya topla.

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

Diğer Gemini CLI rehberleri

Rust için diğer ajanlar