【Rust】【wip】Sizedの概念についてより深掘りしよう
RustのSizedは、プログラムが動作する際のスタックとヒープを理解してない厳しい。
なので、それも一緒に理解して行った方がいいと思われる。
参考資料
Log
hr.icon
strはDST
DSTはローカル変数としては使えない。Unsizedなので、スタックにデータ積むときに確保すべき領域サイズが不明だから。
rust でDSTを扱いたいなら、参照(&)を使う。
ex:&str, &[i32]とか...
なお、StringやVecはDSTじゃないのか!?って聞こえるが違う。
StringやVecは可変データを扱うが、スタックに積むのは可変データへの参照だけ。
参照とはつまりポインタであり、ポインタのサイズは決まってる。
Sizedトレイトを明示的に実装とかすることはほとんどない。
コンパイラが、コンパイル時に型を見てSizedか否かを判断してくれる。