直接上程式碼說明。
#![allow(unused_variables)]
const TOUCHDOWN_POINTS: i32 = 6;
type Points = i32;
fn main() {
let favorite_season = "Summer";
let mut _points_score: Points = 28;
_points_score = 35;
let event_time = "06:00";
let event_time = 6;
let favorite_beverage = "Coca";
println!(
"My favorite season is {}. The team scroed {} points. The event started at {}.
A touchdown is worth {} points.",
favorite_season, _points_score, event_time, TOUCHDOWN_POINTS
);
}
#![allow(unused_variables)]
✅ 這是一個「編譯器指令」(compiler directive),是一種標註,
它的作用是:告訴編譯器如何解析程式碼,例如:允許未使用變數,也不要跳出警告
#![allow(unused_variables)]
fn main() {
let a = 10; // 不使用也不會警告
}
這邊要特別注意!井字號後方多個驚嘆號。
👉 套件層級(crate-level)屬性
#[allow(unused_variables)]
fn main() {
let b = 20; // 不使用也不會警告
}
fn other() {
let c = 30; // ⚠️ 這裡會有警告,因為不在上面設定裡
}
👉 區域層級(item-level)屬性
const TOUCHDOWN_POINTS: i32 = 6;
✅ 宣告一個常數 TOUCHDOWN_POINTS,型別為 i32,值為 6
Rust 中的常數(constant)在程式執行過程中不可變更,會在編譯時就決定好。
type Points = i32;
✅ 定義型別別名(type alias),Points 是 i32 的別名
這讓程式碼更語意化,例如代表分數時不直接寫 i32,而是寫 Points 會更清楚。
let mut _points_score: Points = 28;
_points_score = 35;
✅ 宣告一個可變的變數 _points_score,初始值為 28,型別是 Points(即 i32)
變數名稱前面加 _ 表示「我知道這變數沒被用,但請編譯器不要警告」。
✅ 將 _points_score 的值改為 35。
✅ 這邊在前一篇文章提到就不多討論。
let event_time = "06:00";
let event_time = 6;
✅ 第一行宣告 event_time 為字串 "06:00",
✅ 第二行使用**變數遮蔽(variable shadowing)**重新宣告同名變數為整數 6。
舊的變數會被新的取代。
let favorite_beverage = "Coca";
✅ 宣告一個變數 favorite_beverage,內容為 "Coca"。雖然沒被用到,因為上方有#![allow(unused_variables)],所以不會報警告。