rust变量
rust默认变量是不可变的,通过加mut设置变量可变
fn main() {
let _immutable_variable = 1i;
let mut mutable_variable = 1i;
println!("Before mutation: {}", mutable_variable);
// Ok
mutable_variable += 1;
println!("After mutation: {}", mutable_variable);
// Error!
_immutable_variable += 1;
// FIXME ^ Comment out this line
}
变量具有局部作用域,被限制在所属的代码块内
fn main() {
let a = 1;
{
let b = 2;
println!("{}", b); // 2
println!("{}", a); // 1
let a = 3;
println!("{}", a);// 3
}
println!("{}", a); // 1
println!("{}", b);//编译不通过,b不在此作用域
}
rust类型
rust语言内置的类型:
- 有符号正数:
i8
,i16
,i32
,i64
和int
(机器字长) - 无符号正数:
u8
,u16
,u32
,u64
和uint
(机器字长) - 浮点数:
f32
,f64
char
Unicode字符 (Scalars) 例如'a'
(4字长)bool
逻辑类型,取值为true
和false
- 空元组类型
()
, 其唯一值也是()
类型转换
rust不提供基础类型之间的隐式类型转换,只能使用as
关键字显式转换类型
let decimal = 65.4321;
let integer = decimal as u8;
表达式
rust里面几乎所有语句都是表达式,也就是具有值。
代码块也是表达式,可以做为赋值语句中的右值。代码块的最后一条表达式的值,将作为该代码块的值,被赋值给左值。但是,如果代码块的最后一条语句以分号;
结尾,其值将是()
,也就没有值。
if和else
if-else语句也是表达式,每个分支必须返回相同的类型,以确保类型安全。