>>263
Vecを受けてVecを返すインタフェースに通常することはない
普通は以下のようにする
(1) 同じVecを返す場合 (=書き換えたい場合)
まずこの場合はVec<T>自体を渡さなくても参照を渡せば済む
書き換えるから&mut Vec<T>を渡せばいいように思うが
普通はスライス&mut [T]を渡すインタフェースにする
なぜならVecの書き換え参照を渡すとVecの書き換えしかできないが
スライスの書き換え参照を渡せばVecの途中一部の書き換えもできるし
配列や配列の途中一部の書き換えもできるからである
(2) 別のVecを返す場合 (=引数側のVecのデータから作り出したい場合)
この場合も同様となる
引数としてVec<T>を渡すのではなくスライス共有参照&[T]を引数にする
これで入力データがVecだけでなく配列やそれらの一部でも受け付けることが可能
(2)' (2)のケースで入力を順次アクセスのみする場合
この場合は入力としてイテレータを受け付けられると良い場合がある
なぜならイテレータはVecのようなメモリ領域を必要としないため有利
イテレータを入力とする場合のインタフェースは更に2通りに分かれる
[a] イテレータのメソッドとしてしまう
イテレータチェーンに組み込むことができて便利
ただしVecや配列やスライスに適用する時はinput.iter().method()の形になる
[b] 引数として IntoIterator<Item=T> を受け付ける
これだと引数に直接スライス、配列、Vec、イテレータのどれも渡せて便利
ただしイテレータチェーンに組み込むことはできない
イテレータメソッドの2つ目の入力インタフェースとしても使われる
どちらの場合でも順次出力でない場合ならばVecを返すのもありだが
順次出力ならばイテレータを返したほうがイテレータチェーンに組み込めて有利
なぜなら中間生成Vecを無駄に返さずに済むからである
この場合にVecが欲しければcollect()すればよい
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
278デフォルトの名無しさん
2022/03/26(土) 20:52:37.86ID:Vz8Iz6e1■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「排外主義が日本全体で跋扈」村井嘉浩宮城県知事−外国ルーツの女子児童へのいじめで [蚤の市★]
- 【テレビ】20代で7割、30代で6割が「見ていない」 衝撃の調査結果から考える「若者のテレビ離れ」本当の理由 [冬月記者★]
- 【サッカーW杯】 観客285万人に到達 1試合平均は6万5000人 過去最多を大幅更新ペース [阿弥陀ヶ峰★]
- クールジャパン機構、累積損失500億円超 政府が廃止など検討へ ★2 [ぐれ★]
- 【アニメ】『日本の最強アニソンBEST100』 1位はまたもや『残酷な天使のテーゼ』… 視聴者は「出来レース」「見飽きた」の声 [冬月記者★]
- AKB48契約解除の花田藍衣、動画で悲痛な訴え「運営から性的な質問をされ…峯岸さんのように坊主にして誠意を見せろと言われ坊主に」★5 [冬月記者★]
- 【高市悲報】右翼団体幹部、無許可の「白トラ」で中国へ輸出する中古車を運搬し逮捕😤誇らしい! [359965264]
- 【高市悲報】日帝「ボコボコや…大本営発表で撃沈した事にしとこ」→日帝「撃沈しとるやんけ!🤩(自己暗示)」→壊滅 [359965264]
- 【文春】高市、暴かれた本性。木下秘書「文春は中国から毎週一千万円もらっている」自民党内から総スカンなど🤓 [359965264]
- 高市早苗、「媚びへつらう娼婦」であることが世界にバレる。はずかしいよ俺……! [592058334]
- 【高市悲報】歌舞伎町の超売れっ子ホストさん、W杯観戦に向かうもアメリカ入国拒否。 [668024367]
- かけ子役で実刑確定した元ホスト「軽いノリ」で加担…被害者への気持ち聞かれ「誰か知らないし」 高市😡 [399259198]