Ekleme D - Kullanışlı Geliştirme Araçları

Bu eklemede, Rust projesinin bize sağladığı bazı kullanışlı geliştirme araçlarından bahsedeceğiz. Otomatik düzenleyici, hata ve uyarı çözücü, kod düzenleyici ve nasıl TGO'lar (IDE) ile kullanabileceğinizi göstereceğiz.

rustfmt ile Otomatik Düzenleme

rustfmt aracı kodunuzu topluluk kodu stili şeklinde düzenler. Çoğu proje rustfmt'yi hangi Rust stilini kullanmakta kararsız kalındığı vakit kullanır: herkes bu aracı kullanarak kodunu düzenler.

rustfmt'i yüklemek için şu komutu girin:

$ rustup component add rustfmt

Bu komut size rustfmt ve cargo-fmt araçlarını verir, nasıl Rust'ın rustc ve cargo'yu birlikte dağıttığı gibi. Herhangi bir Cargo projesini düzenlemek için, şunu girin:

$ cargo fmt

Bu komudu çalıştırmak halihazırdaki kasada bulunan tüm Rust kodlarınızı düzenler. Kodunuzun çalışma şeklini ve mantığını değiştirmez sadece kod stilini değiştirir. rustfmt hakkında daha fazla bilgi almak için dokümantasyonunu kullanabilirsiniz.

rustfix ile Kodunuzu Çözümleme

rustfix aracı Rust'ın yüklemelerine dahil edilmiş, bazı derleyici hatalarını otomatik olarak çözümleyen bir araçtır. Eğer Rust'ta kod yazmışsanız, büyük ihtimalle derleyici hatalarını ve uyarılarını da görmüşsünüzdür. Örnek olaraktan, şu koda odaklanın:

Dosya: src/main.rs

fn do_something() {}

fn main() {
    for i in 0..100 {
        do_something();
    }
}

Burada, do_something adlı fonksiyonu 100 kez çağırıyoruz ama hiçbir zaman i değerini döngü içinde kullanmıyoruz. İşte bu yüzden Rust bizi bunun hakkında uyaracaktır:

$ cargo build
   Compiling myprogram v0.1.0 (file:///projects/myprogram)
warning: unused variable: `i`
 --> src/main.rs:4:9
  |
4 |     for i in 0..100 {
  |         ^ help: consider using `_i` instead
  |
  = note: #[warn(unused_variables)] on by default

    Finished dev [unoptimized + debuginfo] target(s) in 0.50s

Bu uyarı bize i yerine _i kullanmamız gerektiğini sunar: bu alt çizgi ile bu değerin kullanılmayacağını söylemiş oluyoruz. Bu öneriyi otomatik olarak eklemek istiyorsanız cargo fix komutu vasıtasıyla rustfix aracını kullanın:

$ cargo fix
    Checking myprogram v0.1.0 (file:///projects/myprogram)
      Fixing src/main.rs (1 fix)
    Finished dev [unoptimized + debuginfo] target(s) in 0.59s

src/main.rs koduna tekrar baktığımızda, cargo fix'in bazı yerleri değiştirdiğini görüyoruz:

Dosya adı: src/main.rs

fn do_something() {}

fn main() {
    for _i in 0..100 {
        do_something();
    }
}

for döngüsü değeri artık _i şekliyle adlandırıldı, artık uyarı çıkmayacak.

cargo fix komutunu ayrıca farklı Rust sürümleri arasında kodunuzu güncelleştirmek için kullanabilirsiniz. Sürümler Ekleme E'de açıklanacak.

Clippy ile Daha Fazla Düzenleme

Clippy aracı düzenleme tavsiyelerinin bir koleksiyonunu tutan ve bunlar vasıtasıyla kodunuzu analiz eden ve size kodunuz hakkında bilgiler ve öneriler veren bir araçtır.

Clippy'i indirmek için, şu komutu girin:

$ rustup component add clippy

Herhangi bir Cargo projesinde Clippy’nin düzenlemelerini kullanmak için, şunu girin:

$ cargo clippy

Örnek olaraktan, diyelim ki bir matematik sabitini yakınsayarak hesaplamak istiyorsunuz, mesela pi olsun, bu program onu yapar:

Dosya adı: src/main.rs

fn main() {
    let x = 3.1415;
    let r = 8.0;
    println!("the area of the circle is {}", x * r * r);
}

cargo clippy'i bu projede çalıştırmak bize şu hatayı verir:

error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly
 --> src/main.rs:2:13
  |
2 |     let x = 3.1415;
  |             ^^^^^^
  |
  = note: #[deny(clippy::approx_constant)] on by default
  = help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/master/index.html#approx_constant

Bu hata, Rust'ın bu sabiti daha kesin olarak tanımladığını ve bunun yerine sabiti kullanırsanız programınızın daha doğru olacağını belirtir. Rust'ın sunduğu PI sabitini kullandığınızda, aşağıdaki kod herhangi bir hata ya da uyarı vermeden düzenlenir:

Dosya adı: src/main.rs

fn main() {
    let x = std::f64::consts::PI;
    let r = 8.0;
    println!("the area of the circle is {}", x * r * r);
}

Clippy hakkında daha fazla bilgi almak için dokümantasyonunu kullanabilirsiniz.

rust-analyzer Kullanarak TGO (IDE) Entegrasyonu

TGO entegrasyonu için Rust topluluğu rust-analyzer kullanmanızı öneriyor. Bu araç bazı TGO'lar ve dillerin birbirleri arasındaki iletişimi sağlayan Dil Sunucu Protokolü, vasıtasıyla derleyici tabanlı bir iletişim ağı oluşturur. Farklı editörler rust-analyzer'i kullanabilir, mesela Visual Studio Code için Rust analyzer eklentisi kullanılabilir.

Kurulum yönergeleri için rust-analyzer projesinin ana sayfasına gidebilir, daha sonra TGO'nuz için desteklenen dil sunucusunu kurabilirsiniz. TGO'nuz bazı yenilikler edinecektir, mesela otomatik tamamlama, tanıma yönlendirme, satır içi hata ve uyarılar vs.