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

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

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.

**Kısaca:**

- Gemini CLI’yı Rust projesinde gemini komutuyla başlatın; proje kurallarını GEMINI.md dosyasına yazın.
- Ajanı küçük adımlarla çalıştırın; her değişiklikten sonra cargo test ve clippy ile doğrulayın.
- Borrow checker ve ownership tuzaklarında ajanın ürettiği çözümleri diff üzerinde dikkatle inceleyin.

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](/blog/gemini-cli-nasil-kullanilir/) 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](/ajanlar/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:

```markdown
# 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ım | Komut veya kontrol | Ne beklenir |
|------|-------------------|-------------|
| Format | `cargo fmt --all -- --check` | Hiçbir dosya değişmemiş olmalı |
| Lint | `cargo clippy --workspace -- -D warnings` | Sıfır uyarı |
| Test | `cargo test --workspace` | Tüm testler geçmeli |
| Diff | `git diff --stat` ve `git diff` | Yalnı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](/blog/windowsta-kodlama-ajanlari/) 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.

---

**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/
