类型转换
归根结底,一切都只是某处的一堆比特,类型系统只是为了帮助我们正确使用这些比特。关于比特类型化,有两个常见的问题:需要将这些精确的比特重新解释为不同的类型,以及需要更改比特以使它们对于不同的类型具有等效的含义。因为 Rust 鼓励在类型系统中编码重要的属性,所以这些问题非常普遍。因此,Rust 为您提供了几种解决它们的方法。
首先,我们将研究 Safe 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 提供了更符合人体工程学的替代方案。