[解決済み] RustのRc::clone(&rc)とrc.clone()は何か違いがあるのでしょうか?また、それによるコンパイルの最適化はあるのでしょうか?
2022-01-31 14:28:21
質問
rustの本では
Rc::clone(&rc)
オーバー
rc.clone()
を次のようにします。
use std::rc::Rc;
let five = Rc::new(5);
// recommended
let _ = Rc::clone(&five);
// not recommended
let _ = five.clone();
なぜ?
解決方法は?
関数構文(
Rc::clone(&rc)
) は、参照されている基本オブジェクトのクローンを作るのではなく、新しい共有参照を作るだけ (安価) であることを明確にしています (高価かもしれません)。任意の参照カウント型では、浅いコピーか深いコピーかはっきりしないかもしれません。
この可読性・明瞭性の問題から 参照カウントされたポインタ型のクローンを作成するための別のインターフェースの提案 とのことです。 リンターは、参照カウントされた型がメソッド経由でクローンされたときに警告するようになりました。 .
関連
-
[解決済み] RustのRc::clone(&rc)とrc.clone()は何か違いがあるのでしょうか?また、それによるコンパイルの最適化はあるのでしょうか?
-
[解決済み] 文字列を追加して印刷するにはどうすればよいですか?
-
[解決済み] なぜRustコンパイラは、2つのミュータブル参照がエイリアスできないと仮定してコードを最適化しないのですか?
-
[解決済み】なぜRustでは明示的なライフタイムが必要なのですか?
-
[解決済み] RustのtraitとHaskellのtypeclassの違いは何ですか?
-
[解決済み] CopyとCloneの違いは何ですか?
-
[解決済み] Iterator(またはその他の trait)を返す正しい方法は何ですか?
-
[解決済み] Cargoで複数のバイナリをビルドするにはどうしたらいいですか?
-
[解決済み】iterとinto_iterの違いは何ですか?
-
[解決済み] アポストロフィが1つ付いているラストタイプは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rustで絶対値を求めるには?
-
[解決済み] Rustにはキューとスタックコレクションがありますか?
-
[解決済み] 構造体や配列を印刷するには?
-
[解決済み] 文字列を追加して印刷するにはどうすればよいですか?
-
[解決済み] Rustのユニットテストでprintln! が動作しないのはなぜ?
-
[解決済み】ある値とその値への参照を同じ構造体に格納できないのはなぜですか?
-
[解決済み】Rustで文字列を分割する方法は?
-
[解決済み】RustプログラムがCargoパッケージからメタデータにアクセスする方法は?
-
[解決済み] このクエスチョンマークの演算子は何についてですか?
-
[解決済み] アポストロフィが1つ付いているラストタイプは何ですか?