Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

一時的な可変性

説明

多くの場合、何らかのデータを準備して処理する必要がありますが、その後そのデータは 参照されるだけで、変更されることはありません。可変変数を不変として再定義することで、 その意図を明示できます。

これは、ネストしたブロック内でデータを処理するか、変数を再定義することで実現できます。

たとえば、ベクターは使用前にソートされていなければならないとします。

ネストしたブロックを使用する場合:

let data = {
    let mut data = get_vec();
    data.sort();
    data
};

// ここで `data` は不変です。

変数の再束縛を使用する場合:

let mut data = get_vec();
data.sort();
let data = data;

// ここで `data` は不変です。

利点

コンパイラーは、ある時点以降に誤ってデータを変更しないことを保証します。

欠点

ネストしたブロックでは、ブロック本体に追加のインデントが必要です。ブロックから データを返す、または変数を再定義するために、さらに1行必要です。