From 61ea880492a8c195c3212ebce1d3fac86ea64803 Mon Sep 17 00:00:00 2001 From: EpicMo <1982742309@qq.com> Date: Wed, 2 Aug 2023 16:58:50 +0800 Subject: [PATCH] Update numbers.md --- src/basic/base-type/numbers.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/basic/base-type/numbers.md b/src/basic/base-type/numbers.md index 99d7d661..a9fce7e7 100644 --- a/src/basic/base-type/numbers.md +++ b/src/basic/base-type/numbers.md @@ -306,6 +306,20 @@ for i in 'a'..='z' { } ``` +## 使用 As 完成类型转换 +Rust 中可以使用 As 来完成一个类型到另一个类型的转换,其最常用于将原始类型转换为其他原始类型,但是它也可以完成诸如将指针转换为地址、地址转换为指针以及将指针转换为其他指针等功能。 +在使用 As 的情况下,我们往往需要的行为是完成隐式转换无法完成的工作,例如下面的例子: + +```rust +let var1: u8 = 89.0 as u8; +assert_eq!('B' as u32, 66); +assert_eq!(var1 as char, 'Y'); +let var2: f32 = thing1 as f32 + 10.5; +assert_eq!(true as u8 + var2 as u8, 100); +``` + +当然,关于 As 还有更多用法,暂时我们只用了解这些即可。 + ## 有理数和复数 Rust 的标准库相比其它语言,准入门槛较高,因此有理数和复数并未包含在标准库中: