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

制作一个自适应网站网站开发培训是不是坑

制作一个自适应网站,网站开发培训是不是坑,wordpress图片站教程,网站 备案 注销 影响文章目录 一、迭代与循环1.循环2.迭代iteration3.区别 二、Intoiterator、Iterator和Iter之间的关系1.Intolterator2.Iterator Trait3. 源码中经常出现的iter 三、获取迭代器的三种方法iter(),iter_mut()和into_iter()1.iter()方法2.iter_mut()方法3.into_iter()方法---尽量写 … 文章目录 一、迭代与循环1.循环2.迭代iteration3.区别 二、Intoiterator、Iterator和Iter之间的关系1.Intolterator2.Iterator Trait3. 源码中经常出现的iter 三、获取迭代器的三种方法iter(),iter_mut()和into_iter()1.iter()方法2.iter_mut()方法3.into_iter()方法---尽量写 四、自定义类型实现iter(),iter_mut()和into_iter()参考 一、迭代与循环 1.循环 定义循环是一种控制流结构它会反复执行一组语句直到满足某个条件。 控制条件循环通常包含一个条件表达式只有在条件为真时循环体中的语句才会执行。 退出条件循环执行直到条件不再满足或者通过break、语句显式中断循环。 使用场景适用于需要反复执行某个操作直到满足某个条件的情况。 2.迭代iteration ·定义选代是对序列中的元素进行逐个访问的过程。 ·控制条件迭代通常使用迭代器lterator来实现迭代器提供了对序列元素的访问和操作。 ·退出条件通常不需要显式的退出条件迭代器会在处理完所有元素后自动停止。 ·使用场景适用于需要遍历数据结构中的元素的情况例如数组、切片、集合等。 3.区别 ·1.循环是一种控制流结构它反复执行一组语句。 ·2.送代是对序列中的元素进行逐个访问的过程通常使用迭代器实现。 ·3.循环可以是有限的通过设置退出条件或无限的使用loop关键字。 ·4.迭代器提供了一种更抽象的方式来处理序列使得代码更具可读性和灵活性。 在Rust中循环和迭代性能的差距可能会取决于具体的使用情况和编译器的优化。绝大多数情况下Rust的迭代器是经过优化的可以达到或接近手动编写循环的性能水平。 // [i32] Vec // loop fn sum_with_loop(arr: [i32]) - i32 {let mut sum 0;for item in arr {sum item;}sum }// iter fn sum_with_iter(arr: [i32]) - i32 {arr.iter().sum() }fn main() {const ARRAY_SIZE: usize 10000;let array: Veci32 (1..ARRAY_SIZE as i32).collect();let sum1 sum_with_loop(array);println!(sum loop {}, sum1);let sum2 sum_with_iter(array);println!(sum loop {}, sum2); } 编译及运行 ▶ cargo runCompiling ch5_iter_loop v0.1.0 (/home/wangji/code/rust/2024_rust/rust_project/ch4_iter_loop)Finished dev profile [unoptimized debuginfo] target(s) in 19.20sRunning target/debug/ch5_iter_loop sum loop 50005000 sum loop 50005000二、Intoiterator、Iterator和Iter之间的关系 1.Intolterator Intolterator是一个RustTrait它定义了一种将类型转换为迭代器的能力。 该Trait包含一个方法into_iter该方法返回一个实现了IteratorTrait的迭代器。 通常当你有一个类型希望能够对其进行迭代时你会实现IntolteratorTrait来提供将该类型转换为迭代器的方法。 2.Iterator Trait Iterator是Rust标准库中的Trait定义了一种访问序列元素的方式。 ·它包含了一系列方法如next、map、filter、sum、等用于对序列进行不同类型的操作。 ·通过实现Iterator丶Trait你可以创建自定义的迭代器以定义如何迭代你的类型中的元素。 pub trait Iterator{ type Item; fn next(mut self) - OptionSelf::Item; }3. 源码中经常出现的iter ·Iter是IteratorTrait的一个具体实现通常用于对集合中的元素进行迭代。 ·在Rust中你会经常看到Iter特别是在对数组、切片等集合类型进行迭代时。 ·通过lntolteratorTrait你可以获取到一个特定类型的迭代器比如Iter然后可以使用IteratorTrait的方法进行操作。 fn main() {// veclet v vec![1, 2, 3, 4, 5]; // intoIterator 特质 into_iter// 转换为迭代器let iter v.into_iter(); // move 所有权转移 类似ppt中的Iter Iterator的特质对象let sum: i32 iter.sum();println!(sum: {}, sum);// println!({:?}, v)// arraylet array [1, 2, 3, 4, 5];let iter: std::slice::Iter_, i32 array.iter();//所有权没有转移let sum: i32 iter.sum();println!(sum: {}, sum);println!({:?}, array);// charslet text hello, world!;let iter text.chars();//所有权没有转移// 等价于let uppercaseString iter.map(|c| c.to_ascii_uppercase()).collect();// collect表示迭代器的下一个 String表示返回的类型是Stringlet uppercase iter.map(|c| c.to_ascii_uppercase()).collect::String();println!(uppercase: {}, uppercase);println!({:?}, text); } 编译及运行 ▶ cargo runCompiling ch2_intoiterator_iterator_iter v0.1.0 (/home/wangji/code/rust/2024_rust/rust_project/ch5_intoiterator_iterator_iter)Finished dev profile [unoptimized debuginfo] target(s) in 11.04sRunning target/debug/ch2_intoiterator_iterator_iter sum: 15 sum: 15 [1, 2, 3, 4, 5] uppercase: HELLO, WORLD! hello, world!三、获取迭代器的三种方法iter(),iter_mut()和into_iter() 1.iter()方法 iter方法返回一个不可变引用的迭代器用于只读访问集合的元素。 该方法适用于你希望在不修改集合的情况下迭代元素的场景。 2.iter_mut()方法 iter_mut方法返回一个可变引用的迭代器用于允许修改集合中的元素。 该方法适用于你希望在迭代过程中修改集合元素的场景。 3.into_iter()方法—尽量写 into_iter方法返回一个拥有所有权的迭代器该迭代器会消耗集合本身将所有权转移到迭代器。 该方法适用于你希望在迭代过程中拥有集合的所有权以便进行消耗性的操作如移除元素。 fn main() {let vec vec![1, 2, 3, 4, 5];// iterfor item in vec.iter() {println!({}, item);}println!({:?}, vec);// 可变引用let mut vec vec![1, 2, 3, 4, 5];for item in vec.iter_mut() {*item * 2;}// 所有权转移println!({:?}, vec);let vec vec![1, 2, 3, 4, 5];for item in vec.into_iter() {println!({}, item);}// println!({:?}, vec); } 编译加运行 ▶ cargo runCompiling ch3_iter v0.1.0 (/home/wangji/code/rust/2024_rust/rust_project/ch6_iter)Finished dev profile [unoptimized debuginfo] target(s) in 10.14sRunning target/debug/ch3_iter 1 2 3 4 5 [1, 2, 3, 4, 5] [2, 4, 6, 8, 10] 1 2 3 4 5四、自定义类型实现iter(),iter_mut()和into_iter() #[derive(Debug)] struct StackT {items: VecT, }implT StackT {fn new() - Self {Stack { items: Vec::new() }}// 入栈fn push(mut self, item: T) {self.items.push(item);}// 出栈fn pop(mut self) - OptionT {self.items.pop()}// 不可变引用fn iter(self) - std::slice::IterT {self.items.iter()}// 返回可变引用fn iter_mut(mut self) - std::slice::IterMutT {self.items.iter_mut()}// 所有权转移fn into_iter(self) - std::vec::IntoIterT {self.items.into_iter()} }fn main() {let mut my_stack Stack::new();my_stack.push(1);my_stack.push(2);my_stack.push(3);for item in my_stack.iter() {println!(Item {}, item);}println!({:?}, my_stack);for item in my_stack.iter_mut() {*item * 2;}println!({:?}, my_stack);for item in my_stack.into_iter() {println!({}, item);}// println!({:?}, my_stack); } 编译及运行  cargo runCompiling ch28_custom_iter v0.1.0 (/home/wangji/installer/rust/project/ch28_custom_iter) warning: method pop is never used-- src/main.rs:15:8| 6 | implT StackT {| ---------------- method in this implementation ... 15 | fn pop(mut self) - OptionT {| ^^^| note: #[warn(dead_code)] on by defaultwarning: ch28_custom_iter (bin ch28_custom_iter) generated 1 warningFinished dev profile [unoptimized debuginfo] target(s) in 12.50sRunning target/debug/ch28_custom_iter Item 1 Item 2 Item 3 Stack { items: [1, 2, 3] } Stack { items: [2, 4, 6] } 2 4 6参考 2024 Rust现代实用教程
http://www.hkea.cn/news/14307259/

相关文章:

  • 工信部申诉备案网站淄博高端网站建设公司
  • html5视频网站源码一个公司可以做几个网站备案
  • 企业网站建设哪家优惠江门网站设计找哪家
  • 重庆做网站价格网站建设免费书
  • 广州网站提升排名早那么做商城网站
  • 陕西网站建设的目的外贸大型门户网站制作
  • 兴宁市网站建设wordpress禁止某ip
  • 和狗狗做电影网站wordpress百度云加速插件
  • 和布克赛尔网站建设电子商务网站系统设计
  • 广州市番禺区住房和建设局网站锦州做网站的公司
  • 昆明企业网站设计外贸网站建设公司
  • 做网站设计的论文中摘要怎么写上海市建设协会网站
  • 个人做网站 用什么语言网站正能量晚上在线观看视频
  • 建行移动门户网站建设网站需要用到哪些软件
  • 奖励软件下载网站合肥公司注册
  • 天津制作个人建站麻将app软件开发
  • 户外旅游网站模板杭州seo价格
  • 优化自己的网站品牌广告策划方案
  • 冶金建设网站公众号开发商咨询电话
  • 番禺网站建设优化网站建设推广小王熊掌号
  • 怎样用自己的服务器建设网站怎样做网站
  • 民治做网站公司网站开发都用什么
  • 用服务器建立网站教程建设银行益阳市分行桃江支行网站
  • 餐饮门户网站源码个人网页设计师
  • 成都品牌设计网站天津营销网站建设公司
  • 怎样做国外能看到的网站设计师服务平台可以下载
  • 本地推广找哪些网站网站制作软件dw
  • 东阳网站建设网站全是乱码
  • 站酷官网首页wordpress阅读类主题
  • asp做网站搜索上海频道做网站怎么样