类型转换(Type Conversions)

在一天结束时,所有的东西都只是一堆比特(bit,位),类型系统就在那里帮助我们正确地使用这些比特.键入位有两个常见问题:需要将这些精确的位重新解释为不同类型,以及需要将位更改为具有不同类型的等效含义.因为Rust鼓励编码在类型系统中的重要属性,所以这些问题非常普遍.因此,Rust为你提供了几种它们的解决方法.

首先,我们将介绍Safe Rust为你重新解释值的方法.最简单的方法是将值解构为其组成部分,然后从中构建一个新类型.例如

  1. struct Foo {
  2. x: u32,
  3. y: u16,
  4. }
  5. struct Bar {
  6. a: u32,
  7. b: u16,
  8. }
  9. fn reinterpret(foo: Foo) -> Bar {
  10. let Foo { x, y } = foo;
  11. Bar { a: x, b: y }
  12. }

但这(即使往好里说)很烦人.对于常见的转换,Rust提供了更符合人体工程学的替代方案.