湘潭市网站建设_网站建设公司_博客网站_seo优化
2026/1/1 16:55:09 网站建设 项目流程
fn main() {let arr = [1, 2, 3, 4, 5];// 不获取所有权// for item in &arr 与 for item in arr.iter() 等价for item in &arr{println!("{} = {}", item, *item); // item 的类型是&i32}for item in arr.iter() {println!("{} = {}", item, *item); // item 的类型是&i32}let arr2 = ["a".to_string(), "a".to_string(), "a".to_string()];// 获取所有权// for item in arr 和 for item in arr.into_iter等价for item in arr2 {println!("{}", item); // item 的类型是i32}// borrow of moved value: `arr2`// value borrowed here after mov// println!("arr2.len = {}", arr2.len());  // arr2的所有权发生了转移// println!("{:?}", arr2.last()); let arr3 = [1, 2, 3, 4, 5];for item in arr3.into_iter() {println!("{}", item); // item 的类型是i32}println!("arr3.len = {}", arr3.len());  // i32实现了copy类型,所有在迭代时是复制而不是所有权转移println!("{:?}", arr3.last());// 修改数组元素,但不获取所有权// for item in &mut arr3 和 for item in arr3.iter_mut 等价let mut arr3 = [1, 2, 3, 4, 5];for item in &mut arr3 {*item *= 2; // item的类型是&mut i32}println!("{:?}", arr3); // 2, 4, 6, 8, 10for item in arr3.iter_mut() {*item /= 2;}println!("{:?}", arr3); // 1, 2, 3, 4, 5// 获取引用的所有权// for item in (&arr).into_iter 实际是for item in &arr// 明确将引用转换为迭代器// 获取引用的所有权,而不是数组的所有权// 是 for item in &arr的底层展开形式let mut arr4 = [1, 2, 3, 4, 5];for item in (&mut arr4).into_iter() {*item *= 3; // item的类型是&mut i32}println!("{:?}", arr4); let arr5 = [String::from("abc"), String::from("def")];for item in (&arr5).into_iter() {println!("{}", item); // item的类型是&String}println!("{:?}", arr5);
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询