当前位置: 首页 > news >正文

网站制作最论坛推广技巧

网站制作最,论坛推广技巧,房地产中介网站建设,产品网页文章目录 1 遍历对象实质为 .into_iter() 生成的迭代器2 避免转移 .iter() / .iter_mut()3 for循环里自变量为什么不用加mut // for循环语法糖 for loop_variable in iterator {code() } // 解糖 {let result match IntoIterator::into_iter(iterator) {mut iter > loop {m…

文章目录

  • 1 遍历对象实质为 .into_iter() 生成的迭代器
  • 2 避免转移 .iter() / .iter_mut()
  • 3 for循环里自变量为什么不用加mut

// for循环语法糖
for loop_variable in iterator {code()
}
// 解糖
{let result = match IntoIterator::into_iter(iterator) {mut iter => loop {match iter.next() {None => break,Some(loop_variable) => { code(); },};},};result
}

1 遍历对象实质为 .into_iter() 生成的迭代器

fn into_iter(self) -> Self::IntoIter
(注意:这里的IntoIter是关联类型,自定义的类型别名)
遍历未实现Copy trait的对象将发生所有权转移

let a = vec![0, 1]; // Vec未实现Copy trait
for i in a {i;}
// a; // 去掉注释;报错,a所有权转移

2 避免转移 .iter() / .iter_mut()

fn iter(&self) -> Iter
fn iter_mut(&mut self) -> IterMut
1)

let a = vec![0, 1]; 
for i in a.iter() {i;}
a; 

实际上,for循环可以遍历所有实现IntoIterator trait的对象,而IntoIterator trait必须实现的方法就是into_iter();
Iter和IterMut也都实现了IntoIterator trait,所以可以理解为上述代码解糖后操作的对象是a.iter().into_iter(),而基本库里Iter对象into_iter()方法实现是这样的:

impl<I: Iterator> IntoIterator for I {type Item = I::Item;type IntoIter = I; // 类型IntoIter就是待实现对象的类型,这里也就是Iter#[inline]fn into_iter(self) -> I {self // 将iter()产生的Iter对象原封不动地返回,但之前对象的所有权已经转移}
}

.into_iter()a.iter()原封不动地返回,此时for循环遍历的对象实质就是a.iter(),而.iter()传递的是调用者的引用

2)
另一种写法就是直接遍历对象的引用

    let a = vec![0, 1]; for i in &a {i;}a; 

不可变引用都实现了 Copy trait这里自然不存在所有权转移;
同时,【摘自文档 https://rustwiki.org/zh-CN/std/iter/index.html】如果集合类型 C 提供 iter(),则它通常还为 &C 实现 IntoIterator,而该实现只是调用 iter()。 同样,提供 iter_mut() 的集合 C 通常通过委派给 iter_mut() 来为 &mut C 实现 IntoIterator。
所以,这里实际上操作的对象还是a.iter()
p.s 方法的调用会自动解引用,故&a.iter()和a.iter()等价

3 for循环里自变量为什么不用加mut

从文章开头贴出的代码可以看到,解糖后的代码自变量loop_variable实际只是存在于单次循环中的一个临时变量,可以理解成每次循环都会完成一次let loop_variable = iter.next();的赋值操作, 所以,自变量无需mut也能发生变化;当然,添加了mut也不会报错,只是会多个警告提示。

http://www.hyszgw.com/news/29842.html

相关文章:

  • 做网站常用代码短视频推广公司
  • 邢台公司做网站深圳网站关键词优化公司
  • 不花钱自己可以做网站吗b站视频推广网站动漫
  • Pc端做社区网站用什么框架高端seo服务
  • 电子商务网站开发教程sem竞价推广代运营收费
  • 武汉教育网站建设公司河南seo网站多少钱
  • 网站开发加维护需要多少钱单页网站怎么优化
  • 肉多各种地方做的网站百度网盘登录首页
  • 网站备案编号查询百度网页版登录
  • 页面设计理念说明芭嘞seo
  • 温州做网站推广如何做电商新手入门
  • 做推广哪个平台网站好怎样做产品推广
  • 个人网站 备案 名称全国疫情最新情况
  • wap网站适配什么是网络软文营销
  • 微信输入法使用方法合肥seo推广外包
  • b2c特点和典型电子商务平台seo技术团队
  • 期货做程序化回测的网站seo关键词优化软件
  • 宝鸡企业做网站惠州seo外包费用
  • 广州的兼职网站建设windows优化大师会员
  • 北京建外贸网站公司seo运营经理
  • 网站制作学校seo需求
  • 关于加强政府网站信息内容建设天津百度搜索排名优化
  • 废品网站怎么做网站定制
  • 网络网站建设办公全网推广怎么做
  • 智能小程序WordPress东莞网络优化排名
  • 做论坛网站的元素营销推广方案
  • 品牌制作网站百度seo关键词排名
  • 县区组织部12380网站建设如何网站推广
  • 福州网站建设信息无锡百度快照优化排名
  • 做个微信小程序要花多少钱东莞百度推广优化