Rustの文字列型
文字列が静的か、動的かという視点で見るなら
コード上に直接記述するような、リテラルとしてプログラムに含まれるような文字列は&str
プログラム実行時に動的に決まるような文字列はStringにする
となるが、この↑説明は必要条件を満たしてるが、十分条件は満たしていない感じ
実際は、&strはslice、参照なので意味合いとしてはもっと広い
Stringのsliceも&strで表現できるし
str と String の使い分けに関する、ものすごく実用に偏った説明「仮引数では基本的に &str、ただしその関数の実装で String が必ず必要なら String で受ける。構造体のメンバについては、str と String の区別がつかないうちは全部 String で困らない」
参考
https://gyazo.com/78bed433543ea339ee0dca57dad3cb4e