类型转换(Type Conversions)
在一天结束时,所有的东西都只是一堆比特(bit,位),类型系统就在那里帮助我们正确地使用这些比特.键入位有两个常见问题:需要将这些精确的位重新解释为不同类型,以及需要将位更改为具有不同类型的等效含义.因为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提供了更符合人体工程学的替代方案.