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

大望路网站建设公司近期的重大新闻

大望路网站建设公司,近期的重大新闻,深圳网站设计必选成都柚米科技09做,北京网站建设公司代理文章目录Rust迭代器Rust迭代器的实现Iterator特型IntoIterator特型for循环与迭代器迭代器类型再看for循环实现自定义迭代器方式一方式二相关参考Rust迭代器 Rust语言内置了迭代器模式#xff0c;用于实现对一个项的序列进行特定的处理#xff0c;通常配合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迭代器的实现基于两个关键的特型Iterator和IntoIterator在Rust中迭代器指的是任何实现std::iter::Iterator特型的值而IntoIterator用于生成某种类型的迭代器。 Iterator特型 Rust标准库中Iterator特型定义如下 trait Iterator {type Item; // 产生值的类型fn next(mut self) - OptionSelf::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() 其中要说明的是iter和iter_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) - OptionSelf::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 isnt an iterator. }impl Counter {fn new(max: i32) - Counter {Counter { max: max }} }impl IntoIterator for Counter {type Item i32;type IntoIter std::ops::RangeSelf::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 迭代器 Iteratorhttps://www.twle.cn/c/yufei/rust/rust-basic-iterator.html
http://www.hkea.cn/news/14373113/

相关文章:

  • php网站开发环境说明注册公司流程和资料
  • 校园网站开发的意义网站规划与建设
  • 做甜品台的网站公司在网站做广告怎么做分录
  • 枣庄网站建设济南专业的设计网站
  • 做网站需要写配置文件吗想搞网站建设
  • 源码做微信电影网站济南做网站多钱
  • 网站服务公司人工成本进什么费用大数据查询官网
  • 深圳网站设计电话网站后台更新了 前台不现实
  • 使用本地主机做网站宁波无痛人流医院哪家好
  • 淄博建站哪家好企业网站模板价格
  • 手机网站 设计趋势凡科建设网站安全吗
  • 特效素材免费网站网络营销的八大能力
  • 宣传型网站功能定位住房和建设建设局网站
  • 虚拟主机可以做视频视频网站吗教做世界美食的网站
  • 建网站 必须学html吗网站内容建设方法步骤
  • 做网络推广要做网站吗wordpress标签静态
  • 翻译网站模板云南网站建设招商
  • 绍兴seo网站优化海棠网站
  • 南阳阿里巴巴网站推广从网站下载壁纸做海报涉及
  • 如何自己学做网站西安网站建设案例
  • 个人网站logo设计做网站能申报只是产权么
  • 长春网站seo定做网站建设
  • 用手机怎么做网站广西壮族自治区建设厅官方网站
  • 网站建设公司税率网站怎么做关键词库
  • 太原seo外包公司简单的网站更新 关键词优化 关键词互联
  • 在百度上建网站怎么建设互联网服务平台登录
  • 松江网站建设多少钱网站建设合同 简单
  • 创办网站需要多少钱山东网页设计公司
  • 网站建设费税率是多少四川省省建设厅网站
  • 做外贸网站注意事项公司网站建设代理