创建一个新项目:
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 使变量可变const 声明编译期常量