for and Range
迭代0到100,可以使用for n in 0. .100 n就是每次迭代的值。
fn main() {
for n in 0..100 {
if n % 15 == 0 {
println!("15的倍数")
} else if n % 3 == 0 {
println!("3的倍数")
} else if n % 5 == 0 {
println!("buzz");
} else {
println!("{}", n);
}
}
}
当然上述的for n in 0.100 可以写成for n in 0. .=100这样的格式。
fn main() {
for n in 0..=100 {
if n % 15 == 0 {
println!("15的倍数")
} else if n % 3 == 0 {
println!("3的倍数")
} else if n % 5 == 0 {
println!("buzz");
} else {
println!("{}", n);
}
}
}
for and iterators
iter()
集合元素不可被修改
fn main() {
let names=vec!["Bob", "Frank", "Ferris"];
for name in names.iter() {
///这里的name是字符串原始值的引用
match name {
&"Frank"=>println!("There is a rustacean among us!"),
_=>println!("Hello {}", name)
}
}
println!("names: {:?}", names);
}
into_iter()
使用into_iter()之后,集合本身生命周期结束
fn main() {
let names=vec!["Bob", "Frank", "Ferris"];
for name in names.into_iter() {
///这里into_iter会消耗集合数据,迭代完毕生命周期结束
match name {
"Frank"=>println!("There is a rustacean among us!"),
_=>println!("Hello {}", name)
}
}
}
iter_mut
使用iter_mut修改集合数据
fn main() {
let mut names = vec!["Bob", "Frank", "Ferris"];
///引用可以使用*操作符来进行解引用从而获取其在内存中指向的值
for name in names.iter_mut() {
*name =match name {
&mut "Ferris" => "There is a rustacean among us!",
_ => "Hello",
}
}
println!("names: {:?}", names);
}