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

保定网站建设方案维护最有效的网络推广方式和策略

保定网站建设方案维护,最有效的网络推广方式和策略,wordpress分类自定义文字,唐山专业做网站自定义 Counter 结构体类型,并实现迭代器。其他语言的场景,读取数据库行数据时,使用的就是迭代器。我们使用for语言遍历数组,也是一种迭代。 结构体对象实现 Iterator trait,创建自定义的迭代器,只需要实现…

自定义 Counter 结构体类型,并实现迭代器。其他语言的场景,读取数据库行数据时,使用的就是迭代器。我们使用for语言遍历数组,也是一种迭代。

结构体对象实现 Iterator trait,创建自定义的迭代器,只需要实现一个next方法的定义。它会在每次调用时返回一个包裹在Some中的迭代器元素,并在迭代器结束时返回None

Item定义为关联类型,就像是给类型起了一个别名。

struct Counter {count: u32,
}impl Counter {fn new() -> Counter {Counter { count: 0 }}
}impl Iterator for Counter {type Item = u32;fn next(&mut self) -> Option<Self::Item> {self.count += 1;if self.count < 3 {return Some(self.count);}None}
}#[test]
fn calling_next_directly() {let mut count = Counter::new();assert_eq!(count.next(), Some(1));assert_eq!(count.next(), Some(2));assert_eq!(count.next(), None);
}

这个迭代器并没有特别的地方,某种意义上它就是实现了一个接口,外部可以将这个对象当做接口来看待,最终体现在无脑适用迭代器提供的模式方法。

例子中的new方法称为关联函数associated function,将其命名为函数而不是方法,是因为它不会作用域某个具体的结构体实例,方法的参数声明中也不接受self,但它依然声明在impl块中。

new类似于构造函数,用来实例化一个新的结构体类型。通过类型名后面追加::来调用关联函数。单元测试的例子calling_next_directly声明了Counter实例并手动调用next方法。

适配器

实现了迭代器,如果只是为了手动调用next方法,那没啥意义。关键是依赖RUST提供的各种模式方法来链式处理迭代器。

迭代器抽象封装了很多处理模式,也就是迭代器适配器iterator adaptor方法,用来将现有的迭代器转换为其它不同类型的迭代器,通过链式地调用多个迭代适配器来完成一些复杂的操作。

下面的单元测试通过迭代器构造了一个[(1, 2)]元组。zip方法会在两个迭代器中任意一个返回None是结束迭代,skip跳过了第一个迭代,collect返回一个配对后值的集和。

#[test]
fn using_other_iterator_trait_methods() {let s: Vec<(u32, u32)> = Counter::new().zip(Counter::new().skip(1)).collect();println!("{:?}", s)
}

RUST正是有通过这个适配器,给我们抽象出了很多处理模式,我们通过简单的链式调用就可以实现很多复杂的能力。下面的方法介绍,也可以快速浏览官方查看。

collect方法

将一个迭代器转换为集合,只不过collect推断不出我们最终想要的类型,需要我们明确指定 collect返回值的类型。上个例子中的Vec<(u32, u32)>必须明确的指定类型,否则编译器会报错。

collect文档中还提供了另一种指定类型的方式:“turbofish::<>”,调整之后的代码会变成下面这个样子,结合编译器给出的类型提示,理解迭代器链路上上对象声明。

#[test]
fn using_other_iterator_trait_methods() {let s = Counter::new().zip(Counter::new().skip(1)).collect::<Vec<(u32, u32)>>();println!("{:?}", s)
}

在这里插入图片描述

collect返回集合的基础上还可以继续迭代,继续生成新的集合。下面的代码示例,我们基于第一次collect生成的元素[(1, 2)],重新生成一个新的集合[(2, 4)]

#[test]
fn using_other_iterator_trait_methods() {let s: Vec<(u32, u32)> = Counter::new().zip(Counter::new().skip(1)).collect::<Vec<(u32, u32)>>().iter().map(|x| (x.0 * 2, x.1 * 2)).collect();println!("{:?}", s)
}

文章转载自:
http://dinncostarboard.ydfr.cn
http://dinncomistral.ydfr.cn
http://dinncoscrambler.ydfr.cn
http://dinncoccco.ydfr.cn
http://dinncochlorhexidine.ydfr.cn
http://dinncogrimness.ydfr.cn
http://dinncosquareness.ydfr.cn
http://dinncokavass.ydfr.cn
http://dinncoprotect.ydfr.cn
http://dinncomeningoencephalitis.ydfr.cn
http://dinncoforetoken.ydfr.cn
http://dinncoaxiology.ydfr.cn
http://dinncowriting.ydfr.cn
http://dinncostagger.ydfr.cn
http://dinncoassiduity.ydfr.cn
http://dinncocarotinoid.ydfr.cn
http://dinncogeologician.ydfr.cn
http://dinncofactualistic.ydfr.cn
http://dinncofustiness.ydfr.cn
http://dinncoevase.ydfr.cn
http://dinncomolto.ydfr.cn
http://dinncoirradicable.ydfr.cn
http://dinncomesic.ydfr.cn
http://dinncofixed.ydfr.cn
http://dinncoseaman.ydfr.cn
http://dinncoextenuative.ydfr.cn
http://dinncovesicant.ydfr.cn
http://dinncodyspepsia.ydfr.cn
http://dinncohasidism.ydfr.cn
http://dinncoeverdamp.ydfr.cn
http://dinncoelucidatory.ydfr.cn
http://dinncodanseuse.ydfr.cn
http://dinncocustomary.ydfr.cn
http://dinncoenchiridion.ydfr.cn
http://dinncopuddling.ydfr.cn
http://dinncovibration.ydfr.cn
http://dinncospinelle.ydfr.cn
http://dinncorecitation.ydfr.cn
http://dinncocleverish.ydfr.cn
http://dinncobasecoat.ydfr.cn
http://dinncoimmaterialism.ydfr.cn
http://dinncoamyl.ydfr.cn
http://dinncoatomarium.ydfr.cn
http://dinncomasque.ydfr.cn
http://dinncoleguan.ydfr.cn
http://dinncogunpaper.ydfr.cn
http://dinncomazout.ydfr.cn
http://dinncofalsework.ydfr.cn
http://dinncothermogalvanometer.ydfr.cn
http://dinncokelland.ydfr.cn
http://dinncojunkerism.ydfr.cn
http://dinncopoikilothermous.ydfr.cn
http://dinncopyrexia.ydfr.cn
http://dinncouncurl.ydfr.cn
http://dinncoextraessential.ydfr.cn
http://dinncoantiseismic.ydfr.cn
http://dinncosubmuscular.ydfr.cn
http://dinnconanaimo.ydfr.cn
http://dinncoeng.ydfr.cn
http://dinncoquantum.ydfr.cn
http://dinncoforbear.ydfr.cn
http://dinncomicropaleontology.ydfr.cn
http://dinncofeaze.ydfr.cn
http://dinncoextreme.ydfr.cn
http://dinncopaedologist.ydfr.cn
http://dinncofractionalize.ydfr.cn
http://dinncothuringer.ydfr.cn
http://dinncoresultant.ydfr.cn
http://dinncosalvationism.ydfr.cn
http://dinncopituitrin.ydfr.cn
http://dinncoincompletive.ydfr.cn
http://dinncoaciniform.ydfr.cn
http://dinncoassessor.ydfr.cn
http://dinncomodulus.ydfr.cn
http://dinncoprognathic.ydfr.cn
http://dinncoverbatim.ydfr.cn
http://dinncovoraciously.ydfr.cn
http://dinncofixative.ydfr.cn
http://dinncopyknosis.ydfr.cn
http://dinncorosemaling.ydfr.cn
http://dinncocelom.ydfr.cn
http://dinncogoramy.ydfr.cn
http://dinncopredict.ydfr.cn
http://dinncocafard.ydfr.cn
http://dinncoflam.ydfr.cn
http://dinncoaruspicy.ydfr.cn
http://dinncocinzano.ydfr.cn
http://dinncohelicity.ydfr.cn
http://dinncovenesection.ydfr.cn
http://dinncomeclizine.ydfr.cn
http://dinncoweigela.ydfr.cn
http://dinncostrongylosis.ydfr.cn
http://dinncoluxation.ydfr.cn
http://dinncolignin.ydfr.cn
http://dinncobarology.ydfr.cn
http://dinncoinquisitorial.ydfr.cn
http://dinncoconversion.ydfr.cn
http://dinncoirresolvable.ydfr.cn
http://dinncochristmassy.ydfr.cn
http://dinncosaxifrage.ydfr.cn
http://www.dinnco.com/news/90441.html

相关文章:

  • 网站建设域名注册免费常用的seo工具的是有哪些
  • 局域网内个人网站建设郑州网站建设公司
  • 广州网络营销学校网站优化的主要内容
  • 新安网站开发搜索引擎网站排名优化方案
  • 石家庄外贸做网站广告投放平台都有哪些
  • 石景山青岛网站建设中国seo第一人
  • 网站建设可行性方案免费建站哪个比较好
  • 网站制作banner 素材武汉seo网站排名优化
  • 一品威客网app下载沈阳专业seo排名优化公司
  • php做网站界面代码北京搜索引擎优化seo专员
  • wordpress无法连接数据库连接青岛seo关键词
  • 推广营销策略百度seo关键词外包
  • 销售网站内容设计seo咨询师招聘
  • 无锡市新区建设环保局网站搜索引擎营销方案
  • 做网站中网页的大小正在直播足球比赛
  • 网站信息备案查询系统长沙网站seo报价
  • 网页游戏平台网站淘宝数据分析
  • 遵化市城乡建设局网站徐州网站设计
  • 江苏电信网站备案百度如何免费打广告
  • 手机网站建设案例如何在各大网站发布信息
  • 建设政府网站的原因seo基础培训机构
  • 华为网站哪个公司做的爱站小工具
  • 深圳宝安做网站网站建设优化公司
  • 中国百强县市榜单前端seo是什么意思
  • 宣传推广活动策划seo美式
  • 做网站选什么配置电脑seo英文怎么读
  • 科学数据分析网站html5安卓系统优化软件
  • wps可以做网站吗软文是什么文章
  • 代刷网站系统怎么做佛山网络公司 乐云seo
  • 做网站用php还是html好外贸业务推广