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

网站建设模板源代码公司网站空间申请

网站建设模板源代码,公司网站空间申请,网络设计报告范文,游戏网站建设收费明细背景 Transforms an iterator into a collection 将一个迭代器转换为一个集合 collect() 可以处理任何可迭代的对象#xff0c;并将其转换为相关的集合 collect() 最基本模式是将一个集合转换为另一个集合#xff1a; 先获取一个集合#xff0c;对其调用 iter 方法#x…背景 Transforms an iterator into a collection 将一个迭代器转换为一个集合 collect() 可以处理任何可迭代的对象并将其转换为相关的集合 collect() 最基本模式是将一个集合转换为另一个集合 先获取一个集合对其调用 iter 方法进行转换操作最后调用 collect() collect() 还可以创建非典型集合类型的实例。 可以从 char 构建一个 String 可以将由 ResultT, E 元素组成的迭代器收集到 ResultCollectionT, E 中 collect() 的通用性很强可能会导致类型推断出现问题因此As suchcollect() 是少数几种会看到被称为“涡轮鱼”语法 :: 的情况之一 这有助于类型推断算法明确你要收集到的具体集合类型。 Because collect() is so general, it can cause problems with type inference. As such, collect() is one of the few times you’ll see少数几种会看到的情况之一 the syntax affectionately known as the ‘turbofish’: ::. This helps the inference algorithm understand specifically which collection you’re trying to collect into. 定义 fn collectB: FromIteratorSelf::Item(self) - B whereSelf: Sized, {FromIterator::from_iter(self) }示例 从 char 构建 String fn main() {// 定义一个包含多个 char 元素的数组let chars [H, e, l, l, o];// 使用 collect() 方法将字符数组转换为 Stringlet hello_string: String chars.iter().cloned().collect();// 输出结果println!(构建的字符串是: {}, hello_string); }将 ResultT, E 元素组成的迭代器收集到 ResultCollectionT, E 中 use std::result::Result;fn main() {// 定义一个包含多个 Result 元素的数组let results: [Resulti32, str; 3] [Ok(1), Ok(2), Ok(3)];// 使用 collect() 方法将 Result 数组收集到一个新的 Result 中let collection_result: ResultVeci32, str results.iter().cloned().collect();match collection_result {Ok(values) {println!(收集到的元素是: {:?}, values);}Err(error) {println!(收集过程中出现错误: {}, error);}}// 包含错误元素的情况let error_results: [Resulti32, str; 3] [Ok(1), Err(出错啦), Ok(3)];let error_collection_result: ResultVeci32, str error_results.iter().cloned().collect();match error_collection_result {Ok(values) {println!(收集到的元素是: {:?}, values);}Err(error) {println!(收集过程中出现错误: {}, error);}} }源码中的示例 fn main() {let a [1, 2, 3];let doubled: Veci32 a.iter().map(|x| x * 2).collect();assert_eq!(vec![2, 4, 6], doubled);use std::collections::VecDeque;let a [1, 2, 3];let doubled: VecDequei32 a.iter().map(|x| x * 2).collect();assert_eq!(2, doubled[0]);assert_eq!(4, doubled[1]);assert_eq!(6, doubled[2]);let a [1, 2, 3];let doubled a.iter().map(|x| x * 2).collect::Veci32();assert_eq!(vec![2, 4, 6], doubled);let a [1, 2, 3];let doubled a.iter().map(|x| x * 2).collect::Vec_();assert_eq!(vec![2, 4, 6], doubled);let chars [g, d, k, k, n];let hello: String chars.iter().map(|x| x as u8).map(|x| (x 1) as char).collect();assert_eq!(hello, hello);use std::result::Result;let results [Ok(1), Err(nope), Ok(3), Err(bad)];let result: ResultVec_, str results.iter().cloned().collect();// gives us the first errorassert_eq!(Err(nope), result);let results [Ok(1), Ok(3)];let result: ResultVec_, str results.iter().cloned().collect();// gives us the list of answersassert_eq!(Ok(vec![1, 3]), result); }什么是 turbofish涡轮鱼语法 :: turbofish涡轮鱼语法 :: 是一种用于帮助编译器进行类型推断的语法糖主要在泛型类型的上下文中使用特别是在调用泛型函数或方法时当编译器无法自动推断出具体的泛型参数类型时就可以使用 “涡轮鱼” 语法来显式地指定泛型参数。 为什么需要 “涡轮鱼” 语法 Rust 编译器有强大的类型推断能力很多时候可以自动推断出泛型参数的具体类型但在某些复杂的场景下编译器可能无法准确推断。例如当调用一个泛型方法该方法可以返回多种不同类型的结果时编译器就需要额外的信息来确定具体的类型。这时“涡轮鱼” 语法就派上用场了它允许开发者显式地指定泛型参数从而帮助编译器消除类型歧义。 “涡轮鱼” 语法的使用场景 collect 方法 collect 是 Rust 标准库中一个非常常用的方法用于将一个迭代器转换为一个集合。由于 collect 方法可以返回多种不同类型的集合编译器有时无法自动推断出具体的集合类型这时就需要使用 “涡轮鱼” 语法来指定。 fn main() {let numbers vec![1, 2, 3, 4, 5];// 使用“涡轮鱼”语法显式指定泛型参数为 Veci32let squared: Veci32 numbers.iter().map(|x| x * x).collect::Veci32();println!({:?}, squared); }collect 方法可以将迭代器的元素收集到多种不同类型的集合中如 Vec、HashSet 等。 通过使用 “涡轮鱼” 语法 ::Veci32明确告诉编译器要将元素收集到一个 Vec 类型的集合中 泛型函数调用 当调用泛型函数时如果编译器无法推断出泛型参数的具体类型也可以使用 “涡轮鱼” 语法来指定。 fn identityT(x: T) - T {x }fn main() {// 使用“涡轮鱼”语法显式指定泛型参数为 i32let result identity::i32(42);println!({}, result); }identity 是一个泛型函数它接受一个类型为 T 的参数并返回该参数。通过使用 “涡轮鱼” 语法 ::i32明确告诉编译器 T 的具体类型是 i32。 部分类型提示与 “涡轮鱼” 语法 在某些情况下可能只需要部分指定泛型参数的类型这时可以使用 _ 作为占位符。 fn main() {let numbers vec![1, 2, 3, 4, 5];// 使用部分类型提示让编译器推断元素类型let squared numbers.iter().map(|x| x * x).collect::Vec_();println!({:?}, squared); }collect::Vec_ 表示要将元素收集到一个 Vec 类型的集合中但具体的元素类型由编译器根据上下文自动推断。 综上所述 总结 “涡轮鱼” 语法 :: 是 Rust 中一种用于显式指定泛型参数的有用工具它可以帮助编译器消除类型歧义使代码更加清晰和易于理解。
http://www.sczhlp.com/news/195165/

相关文章:

  • 甘肃白银住房建设局网站个人网页设计作品简笔画
  • 旅游网站设计模板图片wordpress 模板语言包
  • wordpress网站代码企业查官网入口
  • 如何选择医疗网站建设做当地门户网站多少钱
  • 成都那家网站制作公司好咸阳住房和城乡建设规划局网站
  • 象山专业网站建设wordpress 跨域
  • 网站不备案不能访问吗最新资讯热点
  • 网站优化网站建设公司搜索引擎推广的简称是
  • 湖南常德广宇建设网站戴南网站建设
  • pc 移动端网站建设学校 网站建设招聘
  • 一个普通的网站做线上交易好吗查询食品注册商标查询官网
  • Ubuntu22.04 server网络配置
  • 2025 年玄武岩厂家推荐榜:玄武岩/0-3mm/3-5mm/5-10mm/10-15mm/10-20mm/石子厂,聚焦基建升级与高端化需求,山东展飞建筑材料有限公司成优选
  • 网站制作建设是做什么如何在wordpress中添加背景音乐
  • 东莞网站推广哪里好建站程序免费下载
  • wordpress 网站源码网站建设从哪入手
  • 江西建设部网站seo优化推广工程师
  • 使用网站模板快速建站利川网站网站建设
  • 做时彩网站违法吗电子工程网名
  • 连云港企业网站制作网站建设方面的文章
  • 网站的论坛怎么做php网站的优点
  • 优秀网站设计书籍深圳工程交易服务网
  • 学院网站的系统建设方式企业邮箱腾讯
  • 图书网站建设源码图片编辑软件
  • 中太建设集团官方网站WordPress自动拼音别名
  • 南宁手机网站设计策划网站代码需要注意什么
  • 学网站开发需要多久杭州网站推广找哪家
  • 如何建立一个网站根目录软文营销推广
  • 建设我们的网站手机端网站设计制作案例
  • 自己做导航网站网站制作需要哪些