Rust
install
$ rustup update stable
rustup -> rustc -> cargoみたいな感じで全部はいるのかな? Editions
開発スタート
tools
プロセスを作成
ownership
所有権の移動に関して許されるのは「Ownerが、貸与中でないオブジェクトの所有権を移動すること」だけである。Ownerが、貸与中オブジェクトの所有権を移動することはできないし、また、Borrowerが、借用中オブジェクトの所有権を勝手に移動することもできない。
key feature
memory management
スコープから外れたときに自動的ににメモリーを開放する=drop
referenceしたとき=borrowしたときはownershipは持たない=スコープから抜けてもdropしない。
さらに、変数を変更できない。
mutable referenceも可能だが、一つしか存在し得ない
文字列リテラルは変更できないが文字列型の変数は可能
リテラルはメモリ上に固定されるため
だから早い
Stringは配列への参照
mutable 参照はスコープ内でひとつ
mutable refとrefは同時にだめ。
ヒープはmoveされて前の変数(ポインタ)は無効になるがスタックはshallow copyだから無効にはならない