【Rust】【wip】Sizedの概念についてより深掘りしよう
#rust #tips #wip
RustのSizedは、プログラムが動作する際のスタックとヒープを理解してない厳しい。
なので、それも一緒に理解して行った方がいいと思われる。
参考資料
https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap
https://www.reddit.com/r/rust/comments/1b2tiod/trying_to_understand_stack_heap/
youtube1
youtube2
https://lafor.ge/rust/heap_stack/
Log
hr.icon
strはDST
DSTはローカル変数としては使えない。Unsizedなので、スタックにデータ積むときに確保すべき領域サイズが不明だから。
rust でDSTを扱いたいなら、参照(&)を使う。
ex:&str, &[i32]とか...
なお、StringやVecはDSTじゃないのか!?って聞こえるが違う。
StringやVecは可変データを扱うが、スタックに積むのは可変データへの参照だけ。
参照とはつまりポインタであり、ポインタのサイズは決まってる。
Sizedトレイトを明示的に実装とかすることはほとんどない。
コンパイラが、コンパイル時に型を見てSizedか否かを判断してくれる。
https://rust-exercises.com/100-exercises/04_traits/08_sized.html