Bu iki kavramı öğrenmek, Rust'ın nasıl çalıştığını ve OOP özelliklerini nasıl uygulayabileceğinizi anlamanıza yardımcı olacaktır.

Nitelikler ve ömürler, Rust'ın temel bileşenleridir. Türlerin uygulayacağı davranışları ve yetenekleri tanımlamak için özellikleri kullanabilirsiniz. Çok yönlüdürler, daha genel kodlar yazmanıza, yinelemeyi azaltmanıza ve sürdürülebilirliği iyileştirmenize olanak tanırlar.

Rust, kapsam içindeki ve dışındaki değişkenlerin sahipliğini izlemek için başka bir mekanizma (yaşam süreleri) kullanır. Bu, değişken serbest bırakma sırasında sarkan işaretçileri önler.

Nitelikler ve ömürler birlikte tip güvenliği, bellek güvenliği ve kod güvenilirliği sağlamaya yardımcı olur.

Rust'taki Özellikleri Anlamak

Nitelikler, diğer türlerin uygulayabileceği yöntemlerin koleksiyonlarıdır. Özellikler benzer Java gibi dillerdeki arayüzler, Go ve TypeScript ama daha esnek.

Şunu kullanacaksınız: karakter Rust'ta özellikleri tanımlamak için anahtar kelime, ardından yöntem imzalarının bildirimi.

instagram viewer
karakterÖzelliğim {
fnbenim_yöntemim(&öz);
}

Kod, adlı bir özelliği tanımlar. Özelliğim Birlikte benim_yöntemim yöntem. bu &kendisi parametresi, yöntemin, uygulama türünün nesnesine ilk parametresi olarak başvurduğunu gösterir.

Bir özellik tanımladıktan sonra, bunu özel türleriniz için uygulayabilirsiniz.

Yapı türleriniz için bir özelliği nasıl uygulayabileceğiniz aşağıda açıklanmıştır.

yapıKişi {
isim: Sicim,
yaş: u32,
}

ima Bilgi için Kişi {
fnözet(&öz) {
yazdır!("Benim adım {} ve {} yaşındayım.", öz.isim, öz.yaş);
}
}

bu Kişi yapı uygular Bilgi, ve arayabilirsiniz özet örnekleri üzerinde yöntem Kişi yapı

fnana(){
izin vermek john = Kişi { isim: Sicim::itibaren("John"), yaş: 30 };
john.özet(); // Çıktı: Benim adım John ve 30 yaşındayım.
}

bu John değişken, örneğinin bir örneğidir Kişi yapı

bu ana fonksiyon çağrıları özet konsola bir mesaj yazdıran:

Numaralandırmalar özellikleri uygulayabilir. Şunu uygulayan değişkenlerle bir numaralandırmayı nasıl tanımlayabileceğiniz aşağıda açıklanmıştır: özet yöntem:

SıralamaMyEnum {
VaryantA,
varyantB,
}

ima Bilgi için MyEnum {
fnözet(&öz) {
kibritöz {
MyEnum:: VariantA => {
// VariantA için uygulama
}
MyEnum:: VaryantB => {
// VariantB için uygulama
}
}
}
}

İşlev Parametreleri ve Dönüş Değerleri İçin Özellikleri Kullanma

Özellikleri işlev parametreleri ve dönüş değerleri olarak kullanabilirsiniz. Özellikleri işlev parametreleri olarak kullanmak, birden çok türde genel kod yazmak için kullanışlıdır.

İşte uygulayan herhangi bir türden bir parametre alan bir işlev Bilgi.

fnbir şey yap(değer: T) {
değer.özet();
}

bu sözdizimi bunu belirtir T uygulamalı Bilgi. arayabilirsin özet uygulayan herhangi bir değerle işlev Bilgi.

Rust'ta Yaşam Boyu

Rust'ın ödünç alma denetleyici aracı, programları analiz eder ve uygun bellek kullanımını sağlar. Rust'ta, her değerin bir sahibi vardır bu, değeri serbest bırakmaktan sorumludur. Ne zaman değişkenler ödünç alınan değerler, iletilen değere bir referans ödünç alırlar, ancak sahiplik sahibinde kalır.

Yaşam süreleri, ödünç alınan değerlerin doğru kullanılmasını sağlamanın bir yoludur. Ömür, bir referansa iliştirilmiş ve referansın ne kadar süreyle geçerli olduğunu açıklayan bir etikettir.

Rust'ta kesme işareti notu kullanarak bir ömür belirtebilirsiniz:

işlev<'A>

Bir referans oluştururken referansa, ne kadar süreyle geçerli olduğunu açıklayan bir kullanım ömrü atanır. Referansı bir değere alan bir işleviniz varsa, işlev döndüğünde değerin geçerli olmasını sağlamak için yaşam süresi işlev çağrısından daha uzun olmalıdır.

İşte bir fonksiyondaki kullanım ömrü spesifikasyonuna bir örnek.

fnbir şey yap<'A>(x: &'Ai32) -> &'Ai32 {
X
}

fnana() {
izin vermek x = 42;
izin vermek sonuç = bir şey yap(&x);
yazdır!("Sonuç: {}", sonuç);
}

İçinde bir şey yap işlev, 'A ömür boyu parametresi, referansın X işlev çağrısı sürece geçerlidir. Döndürülen başvuru, işlev çağrısı devam ettiği sürece de geçerlidir.

bu ana işlev, bir başvuru ileterek sonucu yazdırır. X değişken ana konsola işlev.

Ömür boyu sözdizimi ayrıntılı olabilir, ancak güvenlik ve bellek yönetimi için gereklidir. Üç ömür boyu seçim kuralları, Rust'ın belirli durumlarda referansların ömrünü çıkarmasına izin veren yönergeler sağlar.

Girdi Ömrü Kuralı

Giriş ömrü kuralı, bir işlev veya yöntemin giriş parametresi olarak bir veya daha fazla referans alması durumunda Rust'ın tüm referansların aynı ömre sahip olduğunu varsaydığını belirtir.

Basitçe söylemek gerekirse, çıktı referanslarının ömrü, girdi referanslarınınkiyle aynı olacaktır.

fnEn uzun<'A>(x: &'Astr, ben: &'Astr) -> &'Astr {
eğer x.len() > y.len() { x } başka { y }
}

İçinde En uzun Rust, çıkış referansının ömrünün giriş referansıyla aynı olduğu sonucuna varır, çünkü her ikisi de aynı ömür parametresine sahiptir. 'A.

Giriş ömrü kuralı, giriş olarak birden fazla referans alan genel işlevlerin yazılmasını kolaylaştırır.

Çıktı Ömrü Kuralı

Çıktı ömrü kuralı, bir işlev veya yöntemin bir referans döndürmesi durumunda, Rust'ın çıktı referansının ömrünün herhangi bir giriş referansının ömründen farklı olduğunu varsayacağını belirtir.

fnİlk kelime<'A>(s: &'Astr) -> &'Astr {
s.split_whitespace().next().unwrap()
}

Bu fonksiyonda Rust, çıkış referansının ömrünün giriş referansının ömründen farklı olduğu sonucuna varır çünkü bölünmüş_beyaz boşluk() yöntem, giriş referans parametresi almayan bir çıkış referansı oluşturur.

Yaşam Boyu Kuralının Elenmesi

Bir işlev veya yöntem bir referans veya giriş parametresi alır ve bir referans döndürürse, ömürlerin seçimi kuralı uygulanır. Bu durumda Rust, çıktı referansının giriş referansıyla aynı ömre sahip olduğunu varsayar.

fnEn uzun<'A>(x: &'Astr, ben: &str) -> &'Astr {
eğer x.len() > y.len() { x } başka { y }
}

Bu işlevde Rust, çıkış referansının ömrünün giriş referansının ömrü ile aynı olduğu sonucuna varır çünkü giriş referansı y yaşam parametresi yoktur. Rust, ömür boyu parametresini atlar y ve aynı ömre sahip olduğunu varsayar X.

Bu kural, bir giriş referansı alan ve bir çıkış referansı döndüren işlevlerin yazılmasını kolaylaştırır.

Özellikler ve Ömürler

Bir özelliği uygulayan ve geçerli bir ömrü olan türler için çalışan genel işlevler oluşturmak için özellikleri ve yaşam sürelerini birleştirebilirsiniz.

İşte bir özellik ve özelliği uygulayan bir değere başvuran bir işlev.

karakterToString {
fnto_string(&öz) -> Sicim;
}

fnto_string<'A, T: ToString>(t: &'A T) -> Sicim {
t.to_string()
}

Burada ömür parametresi 'A referans olmasını sağlar T başvurduğu nesnenin ömrü boyunca geçerlidir. kullanabilirsiniz to_string uygulayan türlerle işlev ToString geçerli bir ömre sahip özellik.

Nitelikler Rust'ta OOP Kavramlarını Uygulamanın Temelini Oluşturur

Özellikler, davranışları tanımlamanızı sağlar. Rust, nesne yönelimli bir programlama dili (OOP) olmasa da, kapsüllemeden kalıtım, polimorfizm ve soyutlamaya kadar OOP kavramlarını uygulamak için özellikleri kullanabilirsiniz.

Bu OOP kavramlarını özelliklerle uygulamak, Rust programlarınızı ölçeklenebilir, sağlam, bakımı yapılabilir ve verimli hale getirir.