rust:hello_world与变量绑定

Hello World 与变量绑定

创建一个新项目:

cargo new hello_world
cd hello_world

打开 src/main.rs,编写代码:

fn main() {
    println!("Hello, World!");
}

运行:

cargo run
  • fn 关键字声明函数
  • main() 是程序的入口函数
  • println! 是宏(带感叹号),用于打印文本
  • 字符串用双引号包裹
  • 语句以分号结尾

Rust 使用 let 声明变量绑定:

fn main() {
    let x = 5;
    println!("x = {}", x);
}

{} 是占位符,Rust 会自动推断类型并打印值。

变量默认不可变。尝试修改会编译错误:

let x = 5;
x = 6; // 编译错误:不能给不可变变量赋值

错误信息:

error[E0384]: cannot assign twice to immutable variable `x`

使用 mut 关键字使变量可变:

let mut x = 5;
println!("x = {}", x);
x = 6;
println!("x = {}", x);

Rust 是静态类型语言,但支持类型推断。你也可以显式标注类型:

let x: i32 = 5;       // 32位有符号整数
let y: f64 = 3.14;    // 64位浮点数
let z: bool = true;   // 布尔值
let c: char = 'A';    // 字符

变量在花括号 {} 范围内有效:

fn main() {
    let x = 1;
    {
        let y = 2;
        println!("内部: x={}, y={}", x, y); // 可以访问 x 和 y
    }
    // println!("y = {}", y); // 编译错误:y 不在作用域内
}

在同一作用域中,可以用同名变量遮蔽之前的变量:

fn main() {
    let x = 5;
    let x = x + 1;      // 遮蔽,x 变成 6
    {
        let x = "文本"; // 内部作用域遮蔽,类型也可以改变
        println!("内部: {}", x); // 打印 "文本"
    }
    println!("外部: {}", x);     // 打印 6
}

变量遮蔽与 mut 的区别:

  • mut 允许修改同一变量的值,但不能改变类型
  • 遮蔽允许改变类型,且可以重新绑定

常量用 const 声明,必须在声明时初始化,类型不可省略:

const MAX_POINTS: u32 = 100_000;
const PI: f64 = 3.1415926;

常量和变量的区别:

  • 常量总是不可变
  • 常量可以在任何作用域声明(包括全局)
  • 常量必须标注类型
  • 常量值必须是编译期常量表达式
fn main() {
    let name = "小明";
    let mut age: u8 = 25;
    println!("我叫{},今年{}岁", name, age);
 
    age = 26;
    println!("明年我{}岁", age);
 
    const BIRTH_YEAR: u16 = 2000;
    println!("我出生于{}年", BIRTH_YEAR);
}
  • let 声明变量,默认不可变
  • mut 使变量可变
  • Rust 有类型推断,也可显式标注类型
  • 变量有作用域,支持遮蔽
  • const 声明编译期常量

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • rust/hello_world与变量绑定.txt
  • 最后更改: 2026/06/15 15:41
  • 张叶安