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. 相対パスですが、ポートのためのものですか?
- 8. 配列対WCFとの相互運用性のためのリスト
- 9. 相対ハッシュバンURLの互換性のためのUri.IsWellFormedUriString
- 10. Antスクリプトの相対パスをInkscapeのために拡大する
- 11. グリッド子供のための相対的な高さ
- 12. のXcode:埋め込まれたバイナリ上の相対パス
- 13. 相対的子100%相対親の幅
- 14. レールにアクセスするための相対パスアセット
- 15. アルゴリズム - 対の相互発生をカウントするため
- 16. 相対URLを使用するための小さなMCEウェザー
- 17. CSSの絶対と相対
- 18. if文を使ったPython oneliner
- 19. カップルデバイスの相対レイアウト
- 20. iOSの相対パス
- 21. グランツソースファイルの相対パス
- 22. Nodejsの相対パスエラー?
- 23. perlの相対ファイルパス
- 24. VB.Netの相対パス
- 25. Xamppの相対URL
- 26. PHPの相対パス?
- 27. 相対テンプレートのインポート
- 28. 相対URLのプロキシ
- 29. Goの相対パス
- 30. タイムスタンプの相対フォーマット
非常によく似た質問: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