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

石家庄专业做网站公司安卓小程序开发教程

石家庄专业做网站公司,安卓小程序开发教程,国家最新消息,东莞网站空间目录 前言 Vector HashMap 其他 前言 上一课介绍了rust的变量和常见的数据类型,走马观花的看了一下rust常见的变量和数据类型,这些都是rust的基本语法,整理出来只是起一个引子的效果,基本语法多练习才可以熟练。这一课继续介绍…

目录

前言

Vector

HashMap

其他


前言

上一课介绍了rust的变量和常见的数据类型,走马观花的看了一下rust常见的变量和数据类型,这些都是rust的基本语法,整理出来只是起一个引子的效果,基本语法多练习才可以熟练。这一课继续介绍rust中的容器类型Vector和HashMap,这也是在工作中使用频率非常高的。开发代码都是这些基本的数据结构加上流程控制完成业务需求,虽然有些枯燥,但这就是工作。

开始之前,我们依旧使用cargo init lesson3创建一个新项目来保存这节课的代码。

Vector

vector,可变数组,这里的可变是相对于Array而言的,rust中的数组是长度不可变的,但是vector是长度可变的,类似于java中的ArrayList。关于vec的定义和增删改查都在下面代码中写了demo和详细解释,特殊说明的,在最后几行我们使用了枚举和模式匹配,还记得上一课中我们提到的枚举么,我们使用get方法获取的结果是Option,在vscode中可以点开源码查看Option的定义,它就是我们以后高频使用的枚举之一,枚举和模式匹配搭配一起使用,用来解析Option中是否存在值。

fn main() {// 定义方式1let mut v1: Vec<i32> = Vec::new();// 定义方式2let mut v2: Vec<i32> = vec![1, 2, 3, 4, 5];// 定义方式3let mut v3: Vec<i32> = Vec::with_capacity(5);// 定义方式4let mut v4: Vec<i32> = vec![1; 5]; // [1,1,1,1,1]// 增加元素v1.push(1);// 删除元素,删除操作其实在任何工作场景中用的都很少// pop删除并返回vec的最后一个元素,返回值是一个Option,这个java/scala中的optional// 的含义一致,都是表示也许有也许没有的意思let last = v2.pop();// remove删除指定索引位置的元素,并将该元素后面的元素左移let idx0 = v2.remove(0);// 修改元素v1[0] = 2;// 查询元素println!("v1[0]={}", v1[0]);match v1.get(0) {Some(x) => println!("x={}", x),None => println!("nothing"),}
}

Option的源码如下:

pub enum Option<T> {/// No value.#[lang = "None"]#[stable(feature = "rust1", since = "1.0.0")]None,/// Some value of type `T`.#[lang = "Some"]#[stable(feature = "rust1", since = "1.0.0")]Some(#[stable(feature = "rust1", since = "1.0.0")] T),
}

HashMap

映射表,也是在工作中使用频率极高的一种容器。用法在代码中,HashMap并没有像vec!一样的初始化方法,还记得加上感叹号是宏么,也许在后面我们学习到宏的时候,我们自己实现一个hashmap!,我自己都不确定能不能写到那时候,工作时间越久,越感觉世事无常,一切过往,皆是序章,但愿到时候还有机会和大家可以分享一下hashmap!。

use std::collections::HashMap;fn main() {// 定义方式1let mut h1: HashMap<String, i32> = HashMap::new();// 定义方式2let mut h2: HashMap<String, String> = HashMap::with_capacity(5);// 增/改// insert 如果插入的key不存在,插入成功,返回None,如果插入的key存在,更新成功,返回旧值let r1: Option<i32> = h1.insert("a".to_string(), 1);match r1 {Some(x) => println!("x = {}", x),None => println!("r1 is None"),}let r2: Option<i32> = h1.insert("a".to_string(), 2);match r2 {Some(x) => println!("x = {}", x),None => println!("r2 is None"),}// 删// remove 成功返回旧值 不存在该key则返回Nonelet r3 = h1.remove("a");match r3 {Some(x) => println!("x = {}", x),None => println!("r3 is None"),}// 查h1.insert("b".to_string(), 2);println!("h1[b]={}", h1["b"]);match h1.get("b") {Some(x) => println!("x = {}", x),None => println!("None"),}
}

其他

rust中还有一些别的容器类型,下图列举了rust的collections中的一些容器类型,大家可以在需要使用时自行学习了解

//! * Sequences: [`Vec`], [`VecDeque`], [`LinkedList`]
//! * Maps: [`HashMap`], [`BTreeMap`]
//! * Sets: [`HashSet`], [`BTreeSet`]
//! * Misc: [`BinaryHeap`]

http://www.yayakq.cn/news/121245/

相关文章:

  • 浙江省建设厅信息中心网站wordpress 判断移动端
  • 下载app 的网站 如何做wordpress仪表盘加速
  • 奢侈品网站 方案建设网络良好生态
  • 期货网站开发重庆建设施工安全管理网站
  • 心雨在线高端网站建设网页设计深圳市南山区住房和建设局网站
  • 嘉定个人网站建设宁波网站建设的过程
  • 温州做网站优化wordpress 评论 样式
  • wordpress360收录插件安徽seo报价
  • 黄埔区做网站网站安全 维护
  • 西电信息化建设网站画册设计印刷
  • 论坛类的网站怎么做咨询行业
  • 厦门网站定制洛阳疾控最新通告今天
  • 触屏版网站制作邢台做网站口碑好
  • 在线网站建设培训班设置WordPress注册
  • 电子商务网站建设与实例linux安装wordpress无法访问
  • php网站开发发展趋势爱漫画-只做精品的韩漫网站
  • 做视频怎样传到网站韶关住房和城乡建设部网站
  • 企业门户网站设计报告松原建设网站
  • 网站建设赣icp公司网站横幅如何做
  • 安康网站制作seo基础培训
  • 自己建网站花钱吗设计一个营销方案
  • 做网站模版与定制的区别黄冈市建设局官方网站
  • 做网站空间哪家好省心的专业建设网站公司
  • 凤翔网站制作装修公司那家好
  • wordpress网站聊天插件石家庄微网站建设公司
  • 网站模仿算侵权吗精品网站制作
  • 关于网站建设的奖项名称wordpress 手机短信
  • 莆田 做网站的公司网站开发项目 工作分解图
  • 音乐网站建设策划书最近一周新闻大事件
  • 品牌整合推广新塘网站seo优化