t_wの輪郭

clone

2022/2/17 1:01:00

deep copyするメソッド

let s1 = String::from("hello");
let s2 = s1.clone();

『多コピーの原罪』

2022/3/26 16:27:00

https://blog.ojisan.io/many-copies-original-sin/


目次

  • Rust は GC を持たない
    • GC とは
    • Rust には GC がない
  • Clone と Copy とヒープについて
    • コピーできるもの・できないもの
    • ヒープに入るものは Copy しない
    • ヒープにあるものを Clone するとどうなるか
  • Rust における文字の種類
    • スライス
    • char
    • バイト列
    • String
    • &str
  • Rust で文字列を扱うためのプラクティス
    • イージーなやり方: すべて String
    • よくやるやり方: 戻り値だけ String
    • 入力を汎用的にする: Into
    • 理想的なやり方: 戻り値も &str
    • ライフタイム付きの参照で zero-copy の実現
    • いい感じに抽象化できるスマートポインタ、CoW
  • まとめ、感想、お気持ち