C++/Swift /その他の言語でベクトルのサイズを変更したい場合は、通常my_vec.resize(my_vec.size(), 0x00);
のように記述しますが、これをRustで試してみるとimmutable borrow occurs here
というエラーが出ます。あなたは現在1に行の2を置くことができないRustの相対ベクトルリサイズのためのOne-Liner
1
A
答えて
3
let old_size = my_vec.len();
my_vec.resize(old_size - 2, 0x00);
が、私はワンライナーがあることをかなり確信して...:もちろん
私はこのような何かを書くことができますCannot borrow as immutable because it is also borrowed as mutable in function argumentsに記載されている。
が、私はワンライナーがあることを確信している...もちろん
:あまり生意気
{ let old_size = my_vec.len(); my_vec.resize(old_size - 2, 0x00); }
、あなたは形質メソッドを追加することができます。
trait ResizeRelative<T> {
fn resize_relative(&mut self, delta: isize, default: T);
}
impl<T: Clone> ResizeRelative<T> for Vec<T> {
fn resize_relative(&mut self, delta: isize, default: T) {
let len = if delta < 0 {
self.len() - ((-delta) as usize)
} else {
self.len() + delta as usize
};
self.resize(len, default);
}
}
fn main() {
let mut v = Vec::new();
v.resize_relative(3, 42);
v.resize_relative(-1, 2);
println!("{:?}", v);
}
両方向でサイズを変更できるようにするために必要な回転に注意してください。それでも、ゼロ以下にサイズを変更すると、パニックに陥る可能性があります。
+1
ああ、今問題を理解しています...私は関数が関数パラメータの後に評価されたと考えました。私は関数が実際に 'Vec :: resize(&mut my_vec、...)'に拡張されたことに気付かなかった –
関連する問題
- 1. 相対輸入のためのPythonパッケージ
- 2. Rustのためのステップバイステップインタラクティブデバッガ?
- 3. pythonの相対含める
- 4. 相対URIとローカルファイルの相対パスと絶対パスを処理するためのタイプ
- 5. 相対位置決めの絶対位置決め?
- 6. 相対エントロピーまたは相互情報を計算するためのPerlスクリプト
- 7. 配列対WCFとの相互運用性のためのリスト
- 8. 相対パスですが、ポートのためのものですか?
- 9. 相対ハッシュバンURLの互換性のためのUri.IsWellFormedUriString
- 10. のXcode:埋め込まれたバイナリ上の相対パス
- 11. Antスクリプトの相対パスをInkscapeのために拡大する
- 12. 相対的子100%相対親の幅
- 13. アルゴリズム - 対の相互発生をカウントするため
- 14. 相対URLを使用するための小さなMCEウェザー
- 15. レールにアクセスするための相対パスアセット
- 16. if文を使ったPython oneliner
- 17. Python os.pathsepのRustに相当するものは何ですか?
- 18. printf形式のデバッグのためにRustの型システムをサブタイプ化
- 19. Goの相対パス
- 20. グランツソースファイルの相対パス
- 21. カップルデバイスの相対レイアウト
- 22. のInstallShield - 相対ファイルパス
- 23. 相対URLのプロキシ
- 24. Nodejsの相対パスエラー?
- 25. オンボードの相対レイアウト
- 26. VB.Netの相対パス
- 27. タイムスタンプの相対フォーマット
- 28. perlの相対ファイルパス
- 29. iOSの相対パス
- 30. Xamppの相対URL
非常によく似た質問:https://stackoverflow.com/questions/41352710/nested-method-calls-with-mut-receivers-result-in-borrow-checker-errors – fghj
https:///github.com/rust-lang/rfcs/issues/811これについての進歩を知ることは面白いでしょう。 – fghj
これはベクトルを切り捨てるだけですか、それとも成長させることができるソリューションを探していますか? – 8bittree