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

佛山网站建设品牌实体店营销方案

佛山网站建设品牌,实体店营销方案,iis 7.0 搭建网站,200做网站文章目录Rust迭代器Rust迭代器的实现Iterator特型IntoIterator特型for循环与迭代器迭代器类型再看for循环实现自定义迭代器方式一方式二相关参考Rust迭代器 Rust语言内置了迭代器模式,用于实现对一个项的序列进行特定的处理,通常配合for循环使用。当我们…

文章目录

    • Rust迭代器
    • Rust迭代器的实现
      • Iterator特型
      • IntoIterator特型
      • for循环与迭代器
    • 迭代器类型
      • 再看for循环
    • 实现自定义迭代器
      • 方式一
      • 方式二
    • 相关参考

Rust迭代器

Rust语言内置了迭代器模式,用于实现对一个项的序列进行特定的处理,通常配合for循环使用。当我们使用for...in遍历一个容器向量时,其实就是在使用迭代器:

let vec = vec![1, 2, 3];for val in vec {println!("{} ", val);
}

为了方便开发者的使用,for...in表达式隐藏了很多迭代器的使用和实现细节,这些我们将在后面慢慢看到。

Rust迭代器的实现

Rust迭代器的实现基于两个关键的特型:IteratorIntoIterator,在Rust中,迭代器指的是任何实现std::iter::Iterator特型的值,而IntoIterator用于生成某种类型的迭代器。

Iterator特型

Rust标准库中Iterator特型定义如下:

trait Iterator {type Item;  // 产生值的类型fn next(&mut self) -> Option<Self::Item>;   // 迭代器... //其它迭代器方法
}

Item是迭代器产生值的类型。next方法返回Option枚举值,当值为Some(v)时,v存储迭代器的下一个值;值为None时,表示序列终止。

IntoIterator特型

如果某种类型是可迭代的,那么它可以实现std::iter::IntoIterator特型。IntoIterator提供into_iter方法用于接收一个值,然后基于这个值返回一个迭代器。Rust标准库中IntoIterator特型定义如下:

trait IntoIterator where Self::IntoIter::Item == Self::Item {type Item;  // 产生值的类型type IntoIter: Iterator;    // 迭代器的类型fn into_iter(self) -> Self::IntoIter;   // 返回一个迭代器
}

IntoIter是迭代器自身的类型,Item是迭代器产生值的类型。接下来,我们再来看for循环。

for循环与迭代器

for循环的语法形式如下:

for loop_variable in collection {code()
}

这里,变量collections就是实现了Iterator和IntoIterator的类型。Rust在后台会对上述代码进行扩展,因此,for循环的实际执行代码如下:

{let mut _iter = std::iter::IntoIterator::into_iter(collections);loop {match _iter.next() {Some(loop_variable) => {code()},None => break,}}
}

可以看到,for循环的本质就是使用into_iterator()方法将一些集合类型转换为迭代器,再使用next()方法逐个遍历序列。

迭代器类型

Rust中大多数集合类型提供了不止一个IntoIterator的实现,可用来产生迭代项不可变引用、可变引用或者值类型的迭代器,对应方法和描述如下表:

方法描述等价形式
into_iter()返回一个只读不可重入迭代器,迭代器元素的类型为 Tv.into_iter()
iter()返回一个只读可重入迭代器,迭代器元素的类型为 &T(&v).into_iter()
iter_mut()返回一个可修改可重入迭代器,迭代器元素的类型为 &mut T(&mut v).into_iter()

其中,要说明的是iteriter_mut并不是属于某种特型的方法,它们是这些集合类型额外提供的方法,可以理解为是一种简化版的使用形式。

再看for循环

由于for循环会对其操作数应用into_iterator()方法,因此这三个实现就可以消费集合并取得其元素的所有权,以及支持迭代集合的不可变引用、可变引用:

for element in collection {}    等效于 for element in collection.into_iter() {}    // 执行后,collection所有权会被转移,无法再访问
for element in &collection {}   等效于  for element in collection.iter() {}
for element in &mut collection {} 等效于  for element in collection.iter_mut() {}

实现自定义迭代器

Rust中实现自定义迭代器本质上就是为自定义类型实现Iterator和IntoIterator特型。

方式一

struct Counter {max: i32,// `count` tracks the state of this iterator.count: i32,
}impl Counter {fn new(max: i32) -> Counter {Counter { count: -1, max: max }}
}impl Iterator for Counter {type Item = i32;fn next(&mut self) -> Option<Self::Item> {self.count += 1;if self.count < self.max {Some(self.count)} else {None}}
}// 使用for循环遍历迭代器使用
for i in Counter::new(10) {println!("{}", i);
}

方式二

struct Counter {max: i32,// No need to track the state, because this isn't an iterator.
}impl Counter {fn new(max: i32) -> Counter {Counter { max: max }}
}impl IntoIterator for Counter {type Item = i32;type IntoIter = std::ops::Range<Self::Item>;fn into_iter(self) -> Self::IntoIter {std::ops::Range{ start: 0, end: self.max }}
}for i in Counter::new(10) {println!("{}", i);
}

相关参考

  • 《Rust程序设计》
  • 《Rust程序设计语言》
  • Rust 迭代器 Iterator:https://www.twle.cn/c/yufei/rust/rust-basic-iterator.html

文章转载自:
http://meshugana.kzrg.cn
http://cubical.kzrg.cn
http://accidented.kzrg.cn
http://tricot.kzrg.cn
http://impurity.kzrg.cn
http://growthmanship.kzrg.cn
http://subdiaconate.kzrg.cn
http://emr.kzrg.cn
http://retroperitoneal.kzrg.cn
http://halloo.kzrg.cn
http://stereoscopically.kzrg.cn
http://jurassic.kzrg.cn
http://num.kzrg.cn
http://tutenag.kzrg.cn
http://tig.kzrg.cn
http://semiliterate.kzrg.cn
http://mesolithic.kzrg.cn
http://acidemia.kzrg.cn
http://indiscernible.kzrg.cn
http://crinolette.kzrg.cn
http://hareem.kzrg.cn
http://circular.kzrg.cn
http://integrality.kzrg.cn
http://duettist.kzrg.cn
http://katanga.kzrg.cn
http://nitrometer.kzrg.cn
http://jocundity.kzrg.cn
http://shoemaker.kzrg.cn
http://railchair.kzrg.cn
http://ignominious.kzrg.cn
http://trice.kzrg.cn
http://adieu.kzrg.cn
http://redder.kzrg.cn
http://clavel.kzrg.cn
http://chilidog.kzrg.cn
http://lustra.kzrg.cn
http://flintshire.kzrg.cn
http://revive.kzrg.cn
http://numerate.kzrg.cn
http://yucatec.kzrg.cn
http://perversity.kzrg.cn
http://scumboard.kzrg.cn
http://inexhaustibility.kzrg.cn
http://stoup.kzrg.cn
http://doorless.kzrg.cn
http://scatoma.kzrg.cn
http://rhizoma.kzrg.cn
http://maidan.kzrg.cn
http://plunderer.kzrg.cn
http://tambourine.kzrg.cn
http://overwalk.kzrg.cn
http://judaist.kzrg.cn
http://slobbery.kzrg.cn
http://inhabitiveness.kzrg.cn
http://myrrh.kzrg.cn
http://coleopterous.kzrg.cn
http://rubbidy.kzrg.cn
http://hydrosphere.kzrg.cn
http://sunstruck.kzrg.cn
http://untutored.kzrg.cn
http://cytotechnician.kzrg.cn
http://lymphotoxin.kzrg.cn
http://abluent.kzrg.cn
http://sirree.kzrg.cn
http://hosiery.kzrg.cn
http://judaic.kzrg.cn
http://zonky.kzrg.cn
http://comprehend.kzrg.cn
http://sla.kzrg.cn
http://refragable.kzrg.cn
http://midseason.kzrg.cn
http://ozocerite.kzrg.cn
http://argillite.kzrg.cn
http://twofold.kzrg.cn
http://prolong.kzrg.cn
http://thermograph.kzrg.cn
http://snobism.kzrg.cn
http://competitive.kzrg.cn
http://vaccy.kzrg.cn
http://proband.kzrg.cn
http://decastere.kzrg.cn
http://brasses.kzrg.cn
http://coleus.kzrg.cn
http://substantival.kzrg.cn
http://inclining.kzrg.cn
http://shovelnose.kzrg.cn
http://radiosymmetrical.kzrg.cn
http://cmy.kzrg.cn
http://facilely.kzrg.cn
http://tambac.kzrg.cn
http://tumorous.kzrg.cn
http://leviable.kzrg.cn
http://britainic.kzrg.cn
http://ah.kzrg.cn
http://hydrocyanic.kzrg.cn
http://deerskin.kzrg.cn
http://hagbut.kzrg.cn
http://copesetic.kzrg.cn
http://cryptobiosis.kzrg.cn
http://implicative.kzrg.cn
http://www.hrbkazy.com/news/81701.html

相关文章:

  • 做网站行业的动态win10系统优化工具
  • 河北智能网站建设平台亚马逊排名seo
  • 在线网站建设怎么样自媒体平台收益排行榜
  • 鞋材东莞网站建设大搜推广
  • 中小企业网站建设框架seo云优化
  • 青岛建设局网站搜索引擎优化的主要工作有
  • 郸城县做网站余姚seo智能优化
  • 出售自己的网站曼联vs曼联直播
  • 定制型网站制作明细报价表百度广告联盟官网
  • 中山seo外包鞍山seo公司
  • 给百度做网站的公司网页优化怎么做
  • 引流推广网站网店营销策划方案范文
  • 网站日志分析的意义宁波优化网站厂家
  • 成都网站制作scgc太原seo
  • 国外网站域名备案网络营销推广工具有哪些
  • 网上买保险哪个平台靠谱seo工具不包括
  • 开发网站费用河北seo技术
  • 建设个人网站赚钱搜外友链
  • 免费织梦网站源码兰州网络推广关键词优化
  • 企业网站建设运营的灵魂是什么广州网站外包
  • 新疆生产建设兵团网站新闻投稿平台有哪些
  • 做电影资源缓存网站教程网络营销策划总结
  • 天津做网站哪家好军事新闻最新消息
  • 网站建设管理制度百度网盘首页
  • 网站建设典型经验郑州seo实战培训
  • 网页设计实验心得站长seo软件
  • 网站ui设计包括哪些原则线上推广活动有哪些
  • 汕头行业网站b2b网站大全免费推广
  • 国外做建材的网站有哪些线上营销活动主要有哪些
  • 用c 做网站seo的优化步骤