型変換
結局の所、全ては単に、どこかにあるビットの山なだけであり、型システムはただただ これらのビットを正しく扱えるように手助けするためにあるのです。ビットを型付けする事には、 2 つの 問題があります。すなわち、ビットを異なる型として解釈する必要性と、同じ意味を異なる型で持たせるために ビットを変更する必要性です。 Rust は型システム内の重要な特性をエンコードすることを奨励しているため、 これらの問題は信じられないほど蔓延しています。ですから、 Rust では結果的に、 これらの問題を解決する複数の方法があります。
まず、安全な Rust が提供する、値を再解釈する方法について見ていきます。 最も平凡なやり方は、単に値をその構成要素に分配し、そしてそれらを用いて 新しい型の値を構築する方法です。
#![allow(unused)] fn main() { struct Foo { x: u32, y: u16, } struct Bar { a: u32, b: u16, } fn reinterpret(foo: Foo) -> Bar { let Foo { x, y } = foo; Bar { a: x, b: y } } }
しかしこれは、たとえ最良の方法だとしても、煩わしいです。 一般的な変換に関しては、 Rust はよりエルゴノミックな方法を提供しています。