https://zenn.dev/sprout2000/articles/2db265ba525384

↓ のようなドキュメントや記事の学習ノート。せっかちな人(筆者)向け。

1 年以内には完了したいが…

0. 動機

Electron アプリを Tauri に移植したかった。

1. hoge! はマクロ

組込み関数みたいなものと思うことにする。JS における console.log みたいにどこからでも呼び出せる。

2. 関数の値を返す文では return を省略可

fn make_double(num: i32) -> i32 {
    let answer = num * 2;
    answer
}

3. 変数はデフォで不変(=イミュータブル)

let x = 10;
x = 20;      // <-- コンパイルエラー

可変とするには明示的に mut(=ミュータブル)で宣言する。

4. スタックとヒープ(メモリ領域の種類)

**スタック**

- 高速
- 後入れ先出し (LIFO)
- 固定サイズのデータのみ置ける
**ヒープ**

- 低速
- 可変サイズやコンパイル時にサイズ不明なデータを置ける

5. スカラー値変数の代入はコピー

スカラー値は**スタック上に**置かれる。
スカラー値とは?

- すべての整数値型、浮動小数点型: `i32`, `f64` など
- 論理値型: `bool`
- 文字型: `char`
- タプル: ただし上記の型のみで構成される場合のみ
    - 👌 `(i32, i32)` *スカラー*
    - 🆖 `(i32, String)` *非スカラー*