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

珠海网站seo建设一个机械公司网站多少钱

珠海网站seo,建设一个机械公司网站多少钱,青岛注册公司的步骤和流程,网站建设的风险在 Rust 中, for 语句的执行依赖于类型对于 IntoIterator 的实现, 如果某类型实现了这个 trait, 那么它就可以直接使用 for 进行循环. 直接实现 在 Rust 中, 如果一个类型实现了 Iterator, 那么它会被同时实现 IntoIterator, 具体逻辑是返回自身, 因为自身就是迭代器. 但是如…在 Rust 中, for 语句的执行依赖于类型对于 IntoIterator 的实现, 如果某类型实现了这个 trait, 那么它就可以直接使用 for 进行循环. 直接实现 在 Rust 中, 如果一个类型实现了 Iterator, 那么它会被同时实现 IntoIterator, 具体逻辑是返回自身, 因为自身就是迭代器. 但是如果自身就是迭代器的话, 就意味着自身必须存储迭代状态, 例如当前迭代的位置. 如果是这样的话, 迭代器就只能被使用一次. 况且自身直接被传入 into_iter 方法后, 所有权被转移, 该对象就无法被再次使用了. 定义类型本身: struct IntRange {current: i32,step: i32,end: i32 }直接为其实现迭代器: impl Iterator for IntRange {type Item i32;fn next(mut self) - OptionSelf::Item {if self.current self.end {return None;} else {let current self.current;self.current self.step;return Some(current);}} }使用该类型: let range IntRange { current: 0, step: 1, end: 10 }; for value in range {println!(v: {}, value); }所以结论是, 如果你的类型是一次性用品, 你可以直接对其实现 Iterator 手动实现迭代器 如果你向手动实现类似于容器的东西, 那么它当然不是一次性的. 我们应该仿照 Rust 中对切片的迭代器实现. 同时实现会转移所有权和不会转移所有权的两个迭代器对 self 和 self 都实现 IntoIterator, 这样就可以做不转移所有权的迭代了 类型本身: struct IntRange {step: i32,end: i32 }两个迭代器: struct IntRangeItera {range: a IntRange,current: i32, }struct IntRangeIntoIter {range: IntRange,current: i32, }两个迭代器实现: impl Iterator for IntRangeIter_ {type Item i32;fn next(mut self) - OptionSelf::Item {if self.current self.range.end {return None;} else {let current self.current;self.current self.range.step;return Some(current);}} }impl Iterator for IntRangeIntoIter {type Item i32;fn next(mut self) - OptionSelf::Item {if self.current self.range.end {return None;} else {let current self.current;self.current self.range.step;return Some(current);}} }实现返回两种迭代器的 IntoIterator: impla IntoIterator for a IntRange {type Item i32;type IntoIter IntRangeItera;fn into_iter(self) - Self::IntoIter {IntRangeIter {range: self,current: 0}} }impl IntoIterator for IntRange {type Item i32;type IntoIter IntRangeIntoIter;fn into_iter(self) - Self::IntoIter {IntRangeIntoIter {range: self,current: 0}} }使用它: let range IntRange { step: 1, end: 10 };// 可以使用引用来进行 for 循环 for value in range {println!(v: {}, value); }// 也可以直接对其进行 for 循环 for value in range {println!(v: {}, value); }切片对迭代的实现 我们知道, Rust 的切片有一个 iter 方法, 其实它就相当于对当前切片的引用调用 into_iter. 其实, 在调用切片引用的 into_iter 方法时, 本质上就是调用的其 iter 方法. 方法的实现是在 iter 内的. let v vec![1, 2, 3];// 下面两个调用是等价的 let iter1 v.iter(); let iter2 (v).into_iter();如果你希望实现迭代变量可变的迭代器, 还可以为 mut T 实现 into_iter, 当然, Rust 内部对于切片的实现, 也是这样的: let mut v vec![1, 2, 3];// 下面两个调用是等价的 let mutIter v.iter_mut(); let mutIter (mut v).into_iter();总结 两种类型: 对于一次性使用的类型, 可以直接对其实现迭代器 trait. 对于容器, 不应该对容器本身直接实现迭代器, 而是应该单独创建迭代器类型, 然后对其本身实现 IntoIterator 为了方便用户使用, 调用之间的实现应该是这样: 实现 T 的 IntoIterator实现 T 的 iter 函数, 返回借用的迭代器.实训 mut T 的 iter_mut 函数, 返回可变借用的迭代器.对 T 和 mut T 实现 into_iter 函数, 并在内部调用刚刚实现的 iter 和 iter_mut 函数. 这样, 用户就可以直接调用 iter 方法获得借用的迭代器, 然后使用 map, filter 等方法进行集合的复杂操作了
http://www.tj-hxxt.cn/news/130902.html

相关文章:

  • 哈尔滨做网站搭建的wordpress自动缩略图
  • 网站目录怎么做网站建设 镇江万达
  • 手机端开发网站模板下载中企动力科技股份官网
  • 外贸 国外推广网站网站开发设计工程师岗位职责
  • 上传网站教程做app多少钱
  • 自己做网站一定要实名吗开发公司挖出的沙子归谁
  • 金泉网 网站建设站群软件
  • 网站建设与运营的预算方案模板厦门住房和城乡建设局网站
  • 如何用七牛云做视频网站网站建设与运营合同
  • 邢台做网站建设优化制作公司金信wordpress 怎么样
  • 一流的盐城网站开发腾讯云服务器怎么做网站
  • 网站建站网站网站维护网站建设 seo商情网
  • 南安网站定制wordpress社交主题
  • 义乌外贸建网站珠峰网站建设
  • 在网站做推广要钱吗wordpress Nirvana
  • 单位还能建设网站吗哪里做网站域名不用备案
  • 中小网站公司做的推广怎么样祥符网站建设
  • a站怎么进哔哩哔哩网站开发图片
  • 辽宁营销型网站建设如何注册自己的工作室
  • 手机版网站开发框架开题报告旅游网站建设
  • 宁波seo网站排名优化公司网站建设公司济宁
  • 最好的网站建设哪家好网站建设设计咨询
  • 晋城 网站建设wordpress主题上传失败
  • 哈尔滨创意网站建设如何改wordpress的title
  • 怎么编辑网站后台百度云搜索引擎搜索
  • 会计做帐模板网站营销型网站价格
  • 外贸电商做俄罗斯市场网站常熟做网站价格
  • 网站制作知识可以做视频推广的网站吗
  • 做钻石的网站后台网站怎么做视频
  • 雄安专业网站建设方案内蒙建设工程信息网站