Rust之通用编程

1、变量与可变性:

在Rust语言中,变量默认是不可变的,所以一旦变量被绑定到某个值上面,这个值就再也无法被改变。
可以通过在声明的变量名称前添加mut关键字来使其可变。除了使变量的值可变,mut还会向阅读代码的人暗示其他代码可能会改变这个变量的值。

2、数据类型:

(1)、标量类型:

a、整数:

在Rust中的整数类型:
在这里插入图片描述
在Rust中的整数字面量:
在这里插入图片描述
在Rust中,默认使用的类型是i32

b、浮点数:

在Rust中的浮点数分为f32f64两种类型,其分别对应单精度浮点数和双精度浮点数。

c、布尔值:

Rust的布尔类型只拥有两个可能的值:truefalse,它会占据单个字节的空间大小。可以使用bool来表示一个布尔类型。

d、字符:

在Rust中,char类型被用于描述语言中最基础的单个字符。
Rust中的char类型占4字节,是一个Unicode标量值,这也意味着
它可以表示比ASCII多得多的字符内容。拼音字母、中文、日文、韩文、零长度空白字符,甚至是emoji表情都可以作为一个有效的char类型值。

(2)、复合类型:

a、元组:

元组是一种常见的复合类型,可以将其他不同类型的多个值组合进一个复合类型中。元组拥有固定的长度,无法在声明结束后增加或减少其中的元素数量。

  • 解构:将元组中的数据解析出来的操作。例如:
fn main() { 
	 let tup = (500, 6.4, 1); 
	 let (x, y, z) = tup; 
	 println!("The value of y is: {}", y); 
}

这段程序首先创建了一个元组,并将其绑定到了变量tup上。随后,let关键字的右侧使用了一个模式将tup拆分为3个不同的部分:x、y和z。最后,程序将变量y的值。

  • 通过点号(.)来访问元组中的值,例如
fn main() { 
	 let x: (i32, f64, u8) = (500, 6.4, 1); 
	 let five_hundred = x.0; 
	 let six_point_four = x.1; 
	 let one = x.2; 
} 

这段程序首先创建了一个元组x,随后又通过索引访问元组的各个元素,并将它们的值绑定到新的变量上。

b、数组:

可以在数组中存储多个值的集合。与元组不同,数组中的每一个元素都必须是相同的类型。Rust中的数组拥有固定的长度,一旦声明就再也不能随意更改大小。
在Rust中,你可以将以逗号分隔的值放置在一对方括号内来创建一个数组。

i、数组初始化的方法:

  • 使用一对方括号,并在方括号中填写数组内所有元素的类型、一个分号及数组内元素的数量,例如:
let a: [i32; 5] = [1, 2, 3, 4, 5];//的i32便是数组内所有元素的类型,而分号之后的5则表明当前的数组包含5个元素。
  • 假如你想要创建一个含有相同元素的数组,那么你可以在方括号中指定元素的值,并接着填入一个分号及数组的长度,例如:
let a = [3; 5]

ii、访问数组:

通过索引来访问一个数组中的所有元素,例如:

fn main() { 
 let a = [1, 2, 3, 4, 5]; 
 let first = a[0]; 
 let second = a[1]; 
}

在这个例子中,first变量会被赋值为1,这正是数组中索引[0]对应的那个值。同样,second变量将获得数组中索引[1]对应的那个值,也就是2。

3、函数:

在Rust中,可以使用fn来声明一个新的函数。
Rust中使用蛇形命名法来作为规范函数和变量名称的风格。蛇形命名法只使用小写字母来进行命名,并以下划线分割单词。
在Rust中,函数定义以fn关键字开始并紧随函数名称与一对圆括号,另外还有一对花括号用于标识函数体开始和结尾的地方。
使用函数名加圆括号来调用函数。

(1)、函数参数:

当函数存在参数时,需要在调用函数的时候为这些参数提供具体的值。
在函数签名中,必须显式地声明每个参数的类型。由于类型被显式地注明,因此编译器不需要通过其他部分的代码进行推导就能明确地知道编程者的意图。

(2)、函数体中的语句和表达式:

在Rust中,语句和表达式为两个不同的概念。语句是指那些执行操作但是不返回值的指令,表达式是指那些进行计算并产生一个值作为结果的指令。
在表达式的结尾没有;,而在语句的结尾有;,当在表达式的结尾加上;,表达式就会变成语句,而不会返回任何值。

(3)、函数的返回值:

函数可以调用它的代码返回值,不用为返回值命名,但是需要在箭头符号(->)的后面声明它的类型。在Rust中,函数的返回值等同于函数体最后一个表达式的值。也可以使用return关键字并指定一个值来提前从函数中返回,但大多数函数都是隐式地返回了最后的表达式。

4、控制流:

通过条件来执行或重复执行某些代码,在Rust中,用来控制程序执行流的结构主要就是if表达式循环表达式

(1)、if表达式:

if表达式允许我们根据条件执行不同的代码分支。

(2)、使用循环重复执行代码:

a、使用loop重复执行:

可以使用loop关键字来指示Rust反复执行某一块代码,直到显式地声明退出为止。

b、while条件循环:

在每次执行之前都判断一次条件,假如条件为真则执行代码片段,假如条件为假或在执行过程中遇到break就退出当前循环。

c、for循环:

示例:

fn main() { 
	let a = [10, 20, 30, 40, 50]; 
	for element in a.iter() { 
		println!("the value is: {}", element); 
	} 
}

使用for循环遍历数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/43046.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:零基础快速入门人工智能《机器学习入门到精通》 K-近邻算法 1、什么是K-近邻算法?2、K-近邻算法API3、…

【论文阅读 03】机器学习算法在颈动脉斑块影像学分类中的研究进展

读完之后就是,总结 机器学习(SVM、小波)和深度学习(CNN)在 颈动脉斑块影像学中的 分类效果。只讨论了超声、磁共振两种成像 Chin J Clin Neurosci 临床神经科学杂志 复旦大学 颈动脉斑块( carotid plaques) 是一种…

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解 本文主要讲述opencv中的外接多边形的使用: 多边形近似外接矩形、最小外接矩形最小外接圆外接三角形椭圆拟合凸包 将重点讲述最小外接矩形的使用 1. API介绍 #多边形近似 v…

若依微服务整合activiti7.1.0.M6

若依微服务3.6.3版本整合activiti7(7.1.0.M6) 目前有两种办法集成activiti7 放弃activiti7新版本封装的API,使用老版本的API,这种方式只需要直接集成即可,在7.1.0.M6版本中甚至不需要去除security的依赖。不多介绍&a…

Origin科学绘图分析软件2023最新版下载安装教程

在科学研究和工程领域,数据的处理和分析是至关重要的一环,而Origin则是这方面的一款重要工具。Origin软件是由OriginLab公司开发的,主要用于各种科学数据的处理和分析,以及高质量的科学图形的创建。#乐享周末分享吧# 下载地址文末…

【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

Yan-英杰的主 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 问题描述 报错信息如下 报错描述 解决方法 总结 【粉丝福利】 【文末送书】 目录: 本书特色: 问题描述 报错信息如下 Description:An attempt…

微服务保护——Sentinel【实战篇二】

一、线程隔离 🍉 线程隔离有两种方式实现: 线程池隔离信号量隔离(Sentinel默认采用) 线程隔离(舱壁模式)🥝 在添加限流规则时,可以选择两种阈值类型: QPS:…

Java反射 -- 详细介绍 (框架核心)

反射 是 Java框架 的核心 ,无论是Tomcat、SpringMVC、Spring IOC、Spring AOP、动态代理 ,都使用到了 反射 反射的作用简单讲就是 无需 new 对象,就可以动态获取到一个类的全部信息,包括 属性、方法,构造器&#xff0…

3、C# 方法构成

上一节,我们讲述了程序的基本构成。由大到小分别为”解决方案-->项目-->类-->方法“。 这一节,我们讲讲方法。 方法可以说是程序的基本构成单位。假如把方法抽象成点的话,我们可以认为程序是一个树状的结构。树根,就是我们的起点方法,也叫主方法。这一点,基本…

iOS 测试 iOS 端 Monkey 测试

说起 Monkey 测试,大家想到的是 monkey 测试只有安卓有,monkey 测试只针对安卓 app,今天给大家分享一下 Monkey 测试在 iOS 端也能跑!iOS 端 app 也能使用 Monkey 测试来执行稳定性测试。 一、环境准备 1、准备 Mac 设备&#x…

SpringCloud分布式项目下feign的使用

新建一个feign的微服务&#xff08;后面统称为A&#xff09;&#xff0c;其他项目要使用利用maven导入该服务模块的依赖就行了 导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</…

Tabby - 本地化AI代码自动补全 - Linux Debian

参考&#xff1a; https://github.com/TabbyML/tabby Docker | Tabby Linux Debian上快速安装Docker并运行_Entropy-Go的博客-CSDN博客 Tabby - 本地化AI代码自动补全 - Windows10_Entropy-Go的博客-CSDN博客 为什么选择Tabby 已经有好几款类似强劲的代码补全工具&#xf…

【苹果日历推送】群发部署开发工具、SDK或框架,如APNs推送服务的HTTP/2接口

苹果日历本身并不直接支持群发推送通知&#xff0c;因为推送通知是针对单个设备的。如果你想向多个用户发送推送通知&#xff0c;你需要在自己的应用中实现推送功能&#xff0c;然后针对每个设备单独发送推送通知。 以下是实现推送通知的一般步骤&#xff1a; 开发推送服务&a…

【Linux | Shell】结构化命令2 - test命令、方括号测试条件、case命令

目录 一、概述二、test 命令2.1 test 命令2.2 方括号测试条件2.3 test 命令和测试条件可以判断的 3 类条件2.3.1 数值比较2.3.2 字符串比较 三、复合条件测试四、if-then 的高级特性五、case 命令 一、概述 上篇文章介绍了 if 语句相关知识。但 if 语句只能执行命令&#xff0c…

vscode(Better Comments插件)在vue文件中不显示相对应的颜色

解决办法&#xff1a; 1、在.vscode文件下找到 aaron-bond.better-comments-3.0.2 &#xff08;我的路径&#xff1a;C:\Users\cown\.vscode\extensions\aaron-bond.better-comments-3.0.2&#xff09;&#xff0c;后面版本不唯一&#xff0c;根据自身情况辨别 2、进入文件路…

vue项目展示pdf文件

记录贴 最近我有个需求,就是在h5页面上展示pdf文件,分页,最后一页有个蒙层阴影渐变的效果,尝试过一些插件,但都不是很好用,最后用了pdfjs-dist加上canvas 可以看下效果 先下载: npm i pdfjs-dist2.5.207下面展示代码 html: <template><canvas v-for"pageNumb…

Linux——环境开发基础(vim、gcc、yum、git、gdb)

目录 1.Linux编辑器——vim使用 2.Linux编译器——gcc/g 3.Linux项目自动化构建工具——make/Makefile 4.Linux软件包管理器——yum 5.Linux调试器——gdb 前言&#xff1a;因为篇幅原因&#xff0c;本文着重列出命令&#xff0c;小伙伴下去自己尝试&#xff0c;只有多使…

关于K8s的Pod的详解(一)

关于K8s的Pod的详解&#xff08;一&#xff09; Pod和API server的通信加快Pod启动更改Pod的资源Pod 的持久卷的单个访问模式Pod 拓扑分布约束Pod 拓扑分布中的最小域数 Pod 作为k8s创建&#xff0c;调度&#xff0c;管理的基本单位。由上级的Controller对Node上安装的Kubelet发…

绘出「星辰大海」:华为云Astro轻应用新手指南-第一章

第1章 旅程的开端 发现Astro轻应用地图 第1站&#xff1a;创建账户 首先&#xff0c;你需要在华为云Astro官网注册专属账号。若已有华为账户&#xff0c;可直接登录。 在官网点击「立即使用」&#xff0c;即可跳转至「登录界面」 在「登录界面」点击「注册」&#xff0c;注册…

csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

文章目录 ⭐前言⭐利用inscode免费开放资源&#x1f496; 在inscode搭建vue3tsant项目&#x1f496; 调整配置&#x1f496; antd 国际化配置&#x1f496; 用户store&#x1f496; 路由权限&#x1f496; 预览 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享…