, Index
trait tanımlanır: `Index` özelliğinin` Idx` tipi parametresinin neden boyutunun değiştirilemediğine izin verilir? aşağıdaki gibi Rust 1.14 olarak
pub trait Index<Idx> where Idx: ?Sized {
type Output: ?Sized;
fn index(&self, index: Idx) -> &Self::Output;
}
Output
Çeşidi bağlanmış kapalı Sized
?Sized
ile rahat. Hangisi mantıklı, çünkü
index()
yöntemi
Output
'a bir başvuru döndürüyor. Böylece, kullanışsız tipler kullanılabilir; Örnek: bağlı
impl<T> Index<Range<usize>> for Vec<T> {
type Output = [T]; // unsized!
fn index(&self, index: Range<usize>) -> &[T] { … } // no problem: &[T] is sized!
}
Idx
tür parametresi örtülü zamanda rahat ve karışık olabilir. Ancak Idx
, değer olarak yöntem argümanı olarak kullanılır ve bağımsız değişkenler argüman olarak kullanılamaz AFAIK. Neden Idx
, boyutlandırılmaya izinli değil?
Her zamanki gibi mükemmel cevap! – mcarton
* Ayrıca, bir gün, dinamik büyüklükteki türleri (DST'ler) değere göre değiştirmek isteyebileceğimizi de söylüyorum, ancak nasıl olduğunu anlamıyorum. * => Dil ve uygulama arasında bir fark var. Sadece dil bir hareket (değerden geçmek) göz önünde bulundurduğundan, ABI seviyesinde değerin işaretçi tarafından geçilmediği anlamına gelmez. Ve böylece dilin DST'yi gerçek uygulama ile bir işaretçinin kullanıldığı değerlere geçirmesi oldukça mantıklıdır. Ancak, onlara göre değer döndürmek, daha zor görünüyor :) –