對(duì)于我不擁有的類型,我如何實(shí)現(xiàn)我不擁有的特性?我想實(shí)現(xiàn)Shl特征Vec,代碼在下面。這會(huì)使事情像vec << 4有可能,這是很好的糖vec.push(4).use std::ops::Shl;impl<T> Shl<T> for Vec<T> {
type Output = Vec<T>;
fn shl(&self, elem: &T) -> Vec<T> {
self.push(*elem);
*self
}}fn main() {
let v = vec![1, 2, 3];
v << 4;}編譯失敗,出現(xiàn)以下錯(cuò)誤:無(wú)法提供在此機(jī)箱中未定義特征和類型的擴(kuò)展實(shí)現(xiàn)[E 0117]或類型參數(shù)T必須用作某些本地類型的類型參數(shù)(例如,MyStruct<T>);只有當(dāng)前機(jī)箱中定義的特征才能對(duì)類型參數(shù)[E 0210]實(shí)現(xiàn)。據(jù)我所知,我必須修補(bǔ)stdlib,更具體地說(shuō),collections::vec箱子。是否有另一種方法可以將此代碼更改為成功編譯?
對(duì)于我不擁有的類型,我如何實(shí)現(xiàn)我不擁有的特性?
有只小跳蛙
2019-07-04 17:53:25