Rustの特徴的な言語仕様として、「所有権とライフタイム」というのがあります。 これと上手に付き合うには、「この変数がいつまで生きているのか」つまり「変数のスコープ」を知ることがとても重要です。これがわからないと、Rustのボローチェッカーに頻繁に指摘されてもどうすればいいのかわからなかったりするでしょう。 Rustで躓くポイントの一つだと思います。 そこでこの記事では、「変数のスコープ」について、極力具体的なコードを挙げて掘り下げていきたいと思います。 その前に、変数のスコープを確認しやすくするために、以下のような定義の構造体を定義して、生成と破棄のタイミングで標準出力されるようにします。 struct MyStruct<T: Display> { value: T, } impl<T: Display> MyStruct<T> { fn new(value: T) -> Self {