Rust 参考目前对as
operator进行了以下说明:
7.2.12.5 类型转换表达式
类型转换表达式用二元运算符表示
as
。执行
as
表达式会将左侧的值转换为右侧的类型。表达式示例
as
:fn average(values: &[f64]) -> f64 { let sum: f64 = sum(values); let size: f64 = len(values) as f64; sum / size }
(另外,因为它是相关的:
7.2.12.8 运算符优先级
Rust 二元运算符的优先级顺序如下,从强到弱:
as * / % + - << >>
)
天真地将其用作运算符似乎不起作用:
fn main() {
let x = 100 as u16 << 8;
}
实际上并没有编译:
% rustc testing.rs
testing.rs:2:24: 2:25 error: expected type, found `8`
testing.rs:2 let x = 100 as u16 << 8;
带括号 — let x = (100 as u16) << 8;
— 它编译。参考中的示例中不需要括号,但似乎在这里。这里的确切语法是什么?是否需要括号,除非这是 a 的唯一权利=
?还是我只是做错了什么?
将其称为运算符有点奇怪,因为 RHS 似乎需要是一种类型,并且通常,我认为运算符具有两个表达式……</sub>