Rust 是一種系統編程語言,旨在提供內存安全、并發性和性能。在 Rust 中,for
循環是用于迭代集合(如向量、數組和切片)的常用方法。為了確保在 for
循環中的安全性,Rust 提供了以下特性:
for
循環中,每次迭代都會創建一個新的變量作為當前元素的臨時所有者,從而確保安全性。let mut vec = vec![1, 2, 3];
for item in &mut vec {
*item += 1;
}
for
循環中,如果引用具有比循環更長的生命周期,那么它將始終有效,從而確保安全性。fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
fn main() {
let s1 = String::from("hello");
let s2 = String::from("world");
let result = longest(&s1, &s2);
println!("{}", result);
}
for
循環支持范圍檢查,可以確保迭代器不會越界訪問。如果嘗試訪問超出范圍的索引,編譯器將報錯。let vec = vec![1, 2, 3, 4, 5];
for i in 0..vec.len() {
println!("Index: {}", i);
}
for
循環中處理多種數據類型變得容易且安全。enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
}
fn process_message(msg: Message) {
match msg {
Message::Quit => println!("Quit"),
Message::Move { x, y } => println!("Move to ({}, {})", x, y),
Message::Write(text) => println!("Write: {}", text),
}
}
fn main() {
let messages = vec![
Message::Quit,
Message::Move { x: 3, y: 4 },
Message::Write(String::from("Hello, world!")),
];
for msg in messages {
process_message(msg);
}
}
通過這些特性,Rust 的 for
循環可以確保在迭代集合時的安全性,從而避免了常見的內存錯誤。