rust-类型系统
类型系统
类型转换
Rust 不提供原生类型之间的隐式类型转换,但可以使用 as 关键字进行显式类型转换。
整型之间的转换大体遵循 C 语言的惯例,除了 C 会产生未定义行为的情形。在 Rust 中所 有整型转换都是定义良好的。
1 | let spend = 1; |
字面量
对数值字面量,只要把类型作为后缀加上去,就完成了类型说明。比如指定字面量 42 的 类型是 i32,只需要写 42i32。
无后缀的数值字面量,其类型取决于怎样使用它们。如果没有限制,编译器会对整数使用 i32,对浮点数使用 f64。
1 | // 带后缀的字面量,其类型在初始化时已经知道了。 |
类型推断
Rust 的类型推断引擎是很聪明的,它不只是在初始化时看看右值(r-value)的 类型而已,它还会考察变量之后会怎样使用,借此推断类型。
1 | // 因为有类型说明,编译器知道类型是 u8。 |
别名
可以用 type 语句给已有的类型取个新的名字。类型的名字必须遵循驼峰命名法(像是 CamelCase 这样),否则编译器将给出警告。原生类型是例外,比如: usize、f32,等等。别名的主要用途是避免写出冗长的模板化代码。
type 新名字 = 原名字;
1 | type MyU64 = u64; |
注意类型别名并不能提供额外的类型安全,因为别名并不是新的类型。
添加微信 | 公众号更多内容 |
---|---|
本博客所发布的内容,部分内容来源于网络,版权归原作者所有,如有侵权,请联系删除。转载请注明来自 面向加薪学习!