首页 技术杂谈 正文
  • 本文约747字,阅读需4分钟
  • 164
  • 0

Rust - 变量

摘要

Rust变量,类型系统的动态守卫。变量声明严格遵循数据类型,结合Rust的所有权和借用规则,确保了内存安全和数据一致性,是编写可靠程序的起点。

1.1、变量与可变性

  • 声明变量使用let关键字
  • 默认情况下,变量是不可变的
  • 声明变量时,在变量前面加上mut,就可以使变量可变
fn main() {
    // 默认数字是i32类型
    let mut num = 10;
    // 如果加mut情况下重新赋值会报错
    num = 20;
    println!("number is {}",num);
}

1.2、变量与常量

  • 常量:常量在绑定值以后也是不可变的,但是它与不可变的变量有区别
    • 不可以使用mut,常量永远不可变
    • 声明常量使用const关键字,它的类型必须被标注
    • 常量可以在任何作用域内进行声明,包括全局作用域
    • 常量只可以绑定到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值
  • 在程序运行期间,常量在其声明的作用域内一直有效
  • 命名规范:Rust里常量使用全大写字母,每个单词之间用下划线分开
// 可以在任何地方声明变量
const MAX_POINIS:i32 = 100_00;

fn main() {
    println!("number is {}",MAX_POINIS);
}

1.3、shadowing(隐藏)

  • 可以使用相同的命令声明新的变量,新的变量就会shadow之前声明的同名变量
  • shadow和把变量标记为mut是不一样的
    • 如果不适用let关键字,那么在重新给非mut的变量赋值会导致编译时错误
    • 而使用let声明的同名新变量,也是不可变的
    • 使用let声明的同名新变量,它的类型可以与之前不同
fn main() {
    // 第一次声明的x
    let x = 5;
    // 与使用mut关键字不同,第二次声明的x是重新声明了一个新变量
    let x = x+1;
    let x = x*2;
    // 声明不同类型的同名变量
    let spaces_str = "    ";
    let spaces_num = spaces_str.len();
    println!("number is {}",x);
}
评论