2015-04-04 27 views
15

Bazı Rust örneklerinde kullanılan type anahtar kelimesini görmüştüm ama hiçbir zaman bir açıklama görmedim. Onu gördüm nasıl birkaç örnek kullandı:Pas tipi anahtar kelime nedir?

impl Add<Foo> for Bar { 
    type Output = BarFoo; 
    // omitted 
} 

ve bu, taken from the reference:

type T = HashMap<i32,String>; // Type arguments used in a type expression 
let x = id::<i32>(10);  // Type arguments used in a call expression 

birileri bu kelime ne açıklayabilir misiniz? Örnek olarak Rust'ta veya Rust kitabında bulamıyorum.

cevap

17

bir impl basit bir type Foo = Bar; dışında tipi takma tanımlar ve documented in The Book olup. Genel bir sürüm type Foo<T> = ... var, ancak genel olarak jeneriği anlıyorsanız, bu açık bir uzantıdır. impl numaralı belgede, ilişkili ilişkili bir tanımlar. Onlar documented in The Book, ama ben zaten kısa bir özet yazdım, bu yüzden o da olsun: over ayrıca Add gibi bir özelliği varsa

, sen sadece ne üzerinde şeylerin türleri eklenebilir soyut istiyorum ama Onların toplamı. Tamsayılar eklemek, tamsayılarla sonuçlanır, yüzer sonuçlarda yüzen yüzer ekler. Ancak, sonuç türünün Add parametresinin Add<ThingToAdd, ResultType>'daki gibi olmasını istemiyorum, çünkü burada kaybolacağım nedenler. Bu nedenle, bu özellik impl ile ilişkili bir türle birlikte gelir. Add, ör. impl Add<Foo> for Bar'un herhangi bir uygulaması göz önüne alındığında, ilave sonucunun türü önceden belirlenir.

impl Add<Foo> for Bar { 
    type Result = BarPlusFoo; 
    // ... 
} 
:
trait Add<Rhs> { 
    type Result; 
    // ... 
} 

Ve

sonra tüm uygulamalar kendi sonucu türüdür tanımlamak: Bu böyle özellikte ilan edilir
İlgili konular