t_wの輪郭

Feedlyでフォローするボタン

format

2022/2/19 15:00:00

文字列といろんなものを結合できるすごい関数マクロ
Displayが実装されていればなんでも結合できる気がする(要検証)


StringStringの結合

let hello:String = String::from("hello");
let world:String = String::from("world");
let hello_world = format!("{} {}", hello, world);
println!("{}", hello_world);   //hello world

String文字列リテラル&str)の結合

let hello:String = String::from("hello");
let world:&str = "world";
let hello_world = format!("{} {}", hello, world);
println!("{}", hello_world);   //hello world

String整数型u32)の結合

let hello:String = String::from("hello");
let number:u32 = 1234;
let hello_number = format!("{} {}", hello, number);
println!("{}", hello_number);   //hello 1234

String

2022/2/18 21:34:00

Rustの文字列オブジェクト
文字のコレクション

『多コピーの原罪』

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
  • まとめ、感想、お気持ち