Menu
Coddy logo textTech

Display Trait'i

Coddy'nin Rust Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 36 / 61.

Debug geliştiricilerin verileri incelemesi için harika olsa da Display özelliği kullanıcıya yönelik çıktı için tasarlanmıştır. println! içindeki {} biçimlendiricisini çalıştıran şey budur. Debug özelliğinin aksine Rust, Display özelliğini otomatik olarak türetemez. Bunu manuel olarak uygulamanız gerekir.

Display uygulamak için fmt modülünü içeri aktarmanız ve fmt yöntemini uygulamanız gerekir:

use std::fmt;

struct Temperature {
    celsius: f64,
}

impl fmt::Display for Temperature {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{}°C", self.celsius)
    }
}

fmt metodu bir Formatter alır ve bir fmt::Result döndürür. Çıktınızı biçimlendirmek için write! makrosunu kullanır, yapının alanlarına self üzerinden erişirsiniz.

Artık yapıyı standart {} biçimlendiricisiyle yazdırabilirsiniz:

let temp = Temperature { celsius: 23.5 };
println!("{}", temp);  // 23.5°C

Temel fark: Debug çıktısı verilerinizin yapısını gösterir (hata ayıklama için kullanışlıdır), Display çıktısı ise düzenlenmiştir ve son kullanıcılar için tasarlanmıştır. Bir struct her ikisini de uygulayabilir: hata ayıklama için {:?}, temiz çıktı için {} kullanın.

challenge icon

Görev

Kolay

Kullanıcı dostu bir ürün görüntüleme sistemi oluşturalım! Debug verilerinizin ham yapısını gösterirken, Display özelliği son kullanıcılar için mükemmel, düzenli ve insanlar tarafından okunabilir bir çıktı oluşturmanızı sağlar.

Kodunuzu iki dosyaya ayıracaksınız:

  • product.rs: İki public alana sahip bir Product struct'ı tanımlayın: name (String) ve price (f64). Struct'ınız için Display özelliğini uygulayın; böylece {name} - ${price} biçiminde biçimlendirilir. std::fmt'yi içe aktarmayı ve write! metodunuzun içinde fmt makrosunu kullanmayı unutmayın.
  • main.rs: Ürün modülünüzü içe aktarın ve sağlanan girdileri kullanarak bir Product örneği oluşturun. Özel görüntüleme çıktınızı göstermek için ürünü standart {} biçimlendiriciyi kullanarak yazdırın.

Display özelliği, fmt metodunu manuel olarak uygulamanızı gerektirir: Rust bunu Debug gibi otomatik olarak türetemez. Bu, türünüzün kullanıcılara nasıl görüneceği üzerinde tam kontrol sağlar.

Çıktınız ürünü temiz ve kullanıcı dostu bir biçimde göstermelidir:

{name} - ${price}

Örneğin, Wireless Mouse ve 29.99 girdileriyle:

Wireless Mouse - $29.99

İki girdi alacaksınız: ürün adı ve fiyat (f64 olarak ayrıştırın).

Kendin dene

mod product;

use product::Product;

fn main() {
    let mut name = String::new();
    std::io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();

    let mut price_input = String::new();
    std::io::stdin().read_line(&mut price_input).expect("Failed to read line");
    let price: f64 = price_input.trim().parse().expect("Failed to parse price");

    // TODO: name ve price ile bir Product örneği oluştur

    // TODO: ürünü {} biçimlendiricisini kullanarak yazdır
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Rust derleyicisi