类型转换
说到底,一切都只是某处的一堆比特,而类型系统只是为了帮助我们正确使用这些比特。类型系统中有两个常见的问题:需要将这些确切的位重新解释为不同的类型,以及需要改变位以对不同的类型具有同等的意义。因为 Rust 鼓励在类型系统中对重要的属性进行编码,所以这些问题是非常普遍的。因此,Rust 给了你几种方法来解决它们。
首先,我们将看看 Safe Rust 给你提供的重新解释值的方法。最简单的方法是把一个值分解成它的组成部分,然后从它们中建立一个新的类型:
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 提供了更符合人体工程学的替代方法。