文字列関連の型の使い分け

以下の3つの型の使い分けに慣れておらず、コンパイラに怒られるまま修正していき、気づいたらぐちゃぐちゃになっている。

今の理解で使い分け方針をまとめておく。

&str

基本これで行く。リテラルもこれ。

String

構造体のフィールドはこれ。
あとはAPIがStringを要求する場合。
例えば std::env::args()Stringを返す。

取得した String を処理する関数とかは、&strに変換して受け取る。

&String

これを使うことはほぼないはず。