Dilimlerle oynamak için oldukça başarısız bir şekilde deniyorum.Bir dilimdeki dizinleme işleminin dönüş tipi nedir?
pub trait Index<Index> {
type Output;
fn index(&'a self, index: &Index) -> &'a <Self as Index<Index>>::Output;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
Ancak derleyici bana verir: O slice[index]
dönüş tipi documentation verilen bir referans olması benim beklenti
fn at<'a, T>(slice: &'a [T], index: usize) -> &'a T {
let item = slice[index];
item
}
geçerli:
Ben benim ilk sorunu azaltmıştır Bir hata:
error: mismatched types: expected
&'a T
, foundT
(expected &-ptr, found type parameter)item ^~~~
Hangi ben mea olarak yorumluyorsunuz item
tipi işlevinin dönüş türü eşleşmiyor ning (Karşılığında gelen ifade değerlendirme bölmek, sadece hata ayıklama amacıyla item
tanıtıldı).
Ve tabii ki ben beklendiği gibi bir borrow hareketli hakkında başka hata mesajı item
türüdür T
dönüş türünü geçerseniz. Bir referans hile yok olmaya türünü zorlayarak
fn at<'a, T>(slice: &'a [T], index: usize) -> &'a T {
&slice[index]
^
}
fn at<'a, T>(slice: &'a [T], index: usize) -> &'a T {
let ref item = slice[index];
^~~
item
}
:
biraz müdahalesi sonra sonunda iki alternatif çözüm var.
Ama neden bu kurnazlık ilk etapta gerekli olan? Yanlış bir şey yapıyorum?
Ah! Gördüğüm için, [] 'nin şekeri tarafından yakalandım!Ben bir fark beklemediğim gibi, doğrudan indekslemeyi düşünmemiştim, fark ettim ki fark ettim ki fark ettim ki, '' '' '' '' '' '' '' '' '' '' '' '' 't' ile' indeks'ı çağırmaktan çugk difference wouldr difference differencer. Resim için teşekkürler, gerçekten şeyleri görselleştirmeye yardımcı oluyor. –