Keyword as[−][src]
Expand description
在类型之间进行转换,或重命名导入。
as
最常用于将基本类型转换为其他基本类型,但它还有其他用途,包括将指针转换为地址、将地址转换为指针以及将指针转换为其他指针。
let thing1: u8 = 89.0 as u8; assert_eq!('B' as u32, 66); assert_eq!(thing1 as char, 'Y'); let thing2: f32 = thing1 as f32 + 10.5; assert_eq!(true as u8 + thing2 as u8, 100);Run
通常,任何可以通过指定类型执行的强制转换也可以使用 as
完成,因此,除了编写 let x: u32 = 123
之外,您还可以编写 let x = 123 as u32
(注意: 在这种情况下,let x: u32 = 123
最好)。
但是,在另一个方向上并非如此。
显式使用 as
可以允许更多隐式不允许的强制,例如更改裸指针的类型或将闭包转换为裸指针。
as
可以看作是 From
和 Into
的原语: as
仅适用于原语 (u8
,bool
,str
,指针等),而 From
和 Into
也适用于 String
或 Vec
等类型。
as
当可以推断目标类型时,也可以与 _
占位符一起使用。请注意,这可能会导致推理中断,通常,此类代码应使用显式类型以确保清晰度和稳定性。
使用 as *const _
或 as* mut _
转换指针时,这是最有用的,尽管 as *const _
推荐使用 cast
方法,而 as* mut _
则建议使用 the same: 这些方法使意图更清晰。
as
还用于重命名 use
和 extern crate
语句中的导入:
use std::{mem as memory, net as network}; // 现在,您可以使用名称 `memory` 和 `network` 来引用 `std::mem` 和 `std::net`。Run
有关 as
的功能的更多信息,请参见 Reference。