學習Rust語法我決定實現一些排序算法。所以,我決定做一個排序函數傳入數組是這樣的:。如何將實現特定特徵的對象數組傳遞給函數?
fn sort(array) {
// actual sorting
}
在this question我已經發現瞭如何通過一個數組,並更改其內容,但besided這個數組必須由可以比較的類型。我發現了std::cmp::PartialOrd特徵,並發現數組中的元素需要實現它。
通過鏽書連接這方面的知識同款約dynamic dispatch我已經建立了這樣的事情:
use std::cmp;
fn sort(arr: &mut [&std::cmp::PartialOrd]) {
// actual sorting
}
但它不會出錯編譯:
error: the type parameter `Rhs` must be explicitly specified in an object type because its default value `Self` references the type `Self` [E0393]
是否有正確的語法來實現將實現特定特徵的對象數組傳遞給函數?
也許還需要注意:'&mut [&Trait]'是實現'Trait'的類型元素的一部分引用。這些元素存儲在其他地方,而不是連續的在數組中(這是不可能的,因爲數組是相同的)。排序引用數組很少是用戶想要的。 –