4
從文檔中,Index
性狀被定義:爲什麼索引方法需要所有權?
pub trait Index<Idx> where Idx: ?Sized {
type Output: ?Sized;
fn index(&self, index: Idx) -> &Self::Output;
}
由於index
參數的類型是Idx
和不&Idx
,所述index
方法需要把它傳遞的值的所有權。
是否有這種限制的原因?我知道10次中有9次會使用類似於整數類型的東西,它衍生出Copy
,但我只是很好奇爲什麼借入的值不能充當索引。
D'oh,這是有道理的。謝謝你清理那個。 – jobo3208
如果我沒有弄錯,那正是限制'Idx:?Sized'的意思,不是嗎? – rodrigo
Rust有計劃允許通過值*傳遞動態大小的類型到函數,但這還不行(至於Rust 1.4.0),因此爲什麼['FnBox'](https://doc.rust-lang .org/stable/std/boxed/trait.FnBox.html)存在。實施此操作時,'Idx:?Sized'將允許將DST用於'Idx'。 –