类型转换

归根结底,所有东西都只是一堆比特,而类型系统只是为了帮助我们正确使用这些比特。在对比特进行类型化时,有两个常见问题:需要将这些比特重新解释为不同的类型,以及需要更改比特以使其对不同的类型具有等效的含义。因为 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 提供了更符合人体工程学的替代方案。