このブラウザでは Web Speech API が利用できません。
# Rust基礎 1: Rustは何を守ってくれる言語なのか
Rustを学ぶとき、最初に覚えたいことは、文法よりも思想です。
Rustは、速く動くプログラムを書くための言語です。
同時に、メモリに関する危険なバグを、できるだけコンパイル時に見つけようとします。
つまりRustは、実行する前に、かなり厳しく確認してくれる言語です。
## Rustの特徴
Rustには、大きく三つの特徴があります。
一つ目は、速いことです。
Rustはガベージコレクションを使わず、CやC++に近い性能を目指せます。
二つ目は、安全であることです。
特に、メモリの使い方に関するミスを防ぐ仕組みがあります。
三つ目は、並行処理に強いことです。
複数の処理が同時に動くときの危険な状態も、型システムで見つけやすくなっています。
## 変数は基本的に変更できない
Rustでは、変数は基本的に変更できません。
たとえば、数値を入れた変数を作ると、その値はそのまま固定されます。
あとから値を変えたい場合は、変数に `mut` を付けます。
ここが、JavaScriptやPythonと少し違うところです。
Rustは、変更できるものと変更できないものを、はっきり分けます。
そのおかげで、コードを読むときに安心できます。
## 所有権という考え方
Rustで一番大事なのは、所有権です。
所有権とは、ある値を誰が持っているのか、というルールです。
Rustでは、一つの値には、基本的に一つの所有者があります。
所有者がスコープの外に出ると、その値は自動的に片付けられます。
この仕組みによって、Rustはガベージコレクションなしでメモリを管理できます。
## 値は移動する
Rustでは、値を別の変数に渡すと、所有権が移動することがあります。
たとえば、文字列を変数 `a` に入れます。
その文字列を変数 `b` に渡すと、文字列の所有者は `b` になります。
そのあとで `a` を使おうとすると、コンパイラがエラーにします。
最初は不便に感じます。
でもこれは、同じメモリを二重に片付けるような危険を防ぐためです。
## 借用する
所有権を移動したくないときは、借用します。
借用とは、値を一時的に使わせてもらうことです。
Rustでは、参照を使って値を借ります。
参照を使えば、所有権を渡さずに、関数へ値を見せることができます。
読み取りだけなら、不変参照を使います。
値を変更したいなら、可変参照を使います。
ただし、可変参照には厳しいルールがあります。
同じタイミングで、同じ値を自由に何人も変更することはできません。
このルールが、データ競合を防ぎます。
## 今日のまとめ
Rustは、速さと安全性を両立しようとする言語です。
変数は、基本的に変更できません。
変更したいときは、`mut` を使います。
Rustの中心には、所有権があります。
値には所有者があり、所有者がいなくなると値は片付けられます。
所有権を渡したくないときは、借用します。
借用によって、値を安全に一時利用できます。
Rustは最初、少し厳しく感じます。
でもその厳しさは、あとで安心してコードを変更するための味方になります。
次は、変数、型、関数をもう少し具体的に見ていきます。