私はVec
を取り、その位置に基づいてその値の一部を取り除く関数downsample_vec
を持っています。私は(私だけClone
とIndex
を必要としますが、それを動作させることができませんでした)トラブル右の特性に注釈を付けるを持っていたので、私は私が右の推論を行うために、コンパイラを納得させることができるかどうかを確認するためにself
を使用することにしました:ライブラリ内の固有の型を拡張するのは悪い形ですか?
impl Vec<IndexMut<usize>> {
fn downsample<usize>(&mut self, factor: usize) {
let len = self.len();
if factor > len {
self.clear(); // downsample factor skips all elements
} else if factor == 1 {
return; // no actual downsampling
}
for ind in 0..len() {
if ind % factor != 0 {
self.remove(ind);
}
}
}
}
コンパイルエラーthe value of the associated type `Output` (from the trait `std::ops::Index`) must be specified [E0191]
を返します。
私は、出力タイプを指定する方法を正確にはわからない、とちょうど一般的で特色にブログ、これを行う方法上の任意の参照を見つけることができませんでした。私の主なリソースはthe rust vec .retain()
sourceでした。
それが最初の場所で特定のライブラリでは、このような局部的にモンキーパッチVec
に悪い形で、またはこれを行うには正しい方法は何ですか? (私が書いたオリジナルの分離機能は、the playgroundで見ることができます)。
感謝。私はあまりにも多くの編集をして、私はそれを乱して質問に微調整していた。 –