Rust编程与项目实战
文章平均质量分 94
《Rust编程与项目实战》
夏天又到了
QQ 49659450
展开
-
Rust编程的泛型
C/C++、Rust都是强类型语言,在对数据进行处理时,必须明确数据的数据类型。但是很多时候,比如链表这种数据结构,可以是整型数据的链表,也可以是其他类型,可能会写出重复的代码,只是数据类型不同而已。泛型编程是一种编程风格,其中的算法以尽可能抽象的方式编写,而不依赖于将在其上执行这些算法的数据形式。泛型这个词并不是通用的,在不同的语言实现中,具有不同的命名。原创 2024-10-11 12:55:28 · 583 阅读 · 0 评论 -
Rust编程的函数
然后,我们定义了一个名为calculate的函数,它接收一个函数参数op,类型为fn(i32, i32) -> i32,表示接收两个i32类型的参数并返回i32类型结果。函数可以返回一个值,返回值是函数的输出结果,用于提供函数执行后的结果或计算的值。函数可以接收参数,参数是函数的输入数据,用于在函数体中进行处理和操作。在上述示例中,我们定义了一个名为add的函数,它接收两个参数a和b,类型均为i32。在上述示例中,我们定义了一个名为greet的函数,它接收一个类型为&str的参数name。原创 2024-10-10 15:39:10 · 777 阅读 · 0 评论 -
Rust编程中的循环语句
第三次temp_variable取值是lower_bound+2,然后执行代码语句,以此类推,一直到temp_variable取值upper_bound−1,此时将最后一次执行代码语句,则整个for循环结束。temp_variable是一个临时变量,取值范围是[lower_bound,upper_bound-1],也就是让temp_variable不断改变取值(从lower_bound开始,每次加1),不断执行代码语句。只要表达式为true,就可以执行循环体内的语句,否则终止循环,执行循环体外的语句。原创 2024-10-09 08:13:42 · 723 阅读 · 0 评论 -
Rust编程的匹配控制语句match
如果point的第二个元素等于0,就会执行第二个代码块,输出"The point is on the x-axis";match语句是Rust中非常强大的语言特性,它可以让我们根据不同的匹配模式执行不同的代码。其中,value是要匹配的变量,pattern是匹配模式,=>后面是要执行的代码块。match语句是Rust中的一种控制流语句,它可以让我们根据不同的模式匹配执行不同的代码。在match语句中,每个分支的代码块通常都比较复杂,因此我们应该给每个分支加上花括号,以便更好地阅读和维护代码。原创 2024-10-08 11:23:50 · 1143 阅读 · 0 评论 -
Rust编程的if选择语句
Rust语言实现选择结构时,根据某种条件的成立与否而采用不同的程序段进行处理的程序结构称为选择结构。通常选择结构有两个分支,条件为“真”,执行甲程序段,否则执行乙程序段。有时,两个分支还不能完全描述实际问题。例如,判断学生的成绩属于哪个等级(A:90~100,B:80~89,C:60~79,D:0~59),根据学生的成绩的条件分成4个分支,分别处理各等级的情况。这样的程序结构称为多分支选择结构。原创 2024-09-26 17:58:51 · 1229 阅读 · 0 评论 -
Rust格式化输出宏
我们编写程序的目的就是对输入进行处理,然后将处理结果反馈给用户,对于初学者一般是将处理结果直接显示在屏幕上。Rust语言的打印操作主要是通过在std::fmt中定义一系列宏来处理。Rust中的主要输出靠宏print!或println!,两者唯一不同的地方在于print!会将要输出的内容打印到控制台,println!会在输出的内容打印到控制台后进行换行。print!原创 2024-09-24 15:54:19 · 1287 阅读 · 0 评论 -
Rust 运算符快速了解
比如,加法操作3 + 2,这里的+是操作符,加号两边的3和2是操作数,加法符号的作用是对操作数3加上操作数2,得到计算结果5并返回5。其实,编程语言由于是给人用的,一定要考虑到人的局限性(就是面对复杂事物容易出错),所以编程语言一定要简单明了,Rust去掉了++和--,相对于C语言而言,绝对是个进步,可以从源头上尽可能防止人类出错。它做的唯一工作就是取该操作数的反面值,也就是说如果操作数值为真(true),那么运算后值变为假(false),如果操作数值为假(false),则运算结果为真(true)。原创 2024-09-21 10:10:43 · 1316 阅读 · 0 评论 -
Rust编程的作用域与所有权
计算机程序必须在运行时管理它们所使用的内存资源。大多数编程语言都有管理内存的功能:C/C++这样的语言主要通过手动方式管理内存,开发者需要手动申请和释放内存资源。但为了提高开发效率,只要不影响程序功能的实现,许多开发者没有及时释放内存的习惯。所以手动管理内存的方式常常造成资源浪费。Java语言编写的程序在Java虚拟机(Java Virtual Machine,JVM)中运行,JVM具备自动回收内存资源的功能。原创 2024-09-20 09:04:19 · 1388 阅读 · 0 评论 -
Rust的常量
常量和变量是高级程序设计语言中数据的两种表现形式。这里我们先介绍常量,常量是指程序运行过程中值始终不变的量。常量的特点是一旦被定义就不能被修改或重新定义。常量可以是一个具体的数值或一个数学表达式。例如,数学中的圆周率π,就是一个常量,它的取值是固定且不能被改变的,又如1、2、1000、5.88等数值也是常量。在Rust中,常量分为直接常量和const常量。3.3.2。原创 2024-09-12 08:38:02 · 1183 阅读 · 0 评论 -
Rust程序结构与代码注释
main函数后面的花括号之间的内容称为函数体,里面的代码就是函数功能的具体实现,花括号必不可少。所有以两个斜线符号(//)开始的程序行都被认为是注释行,这些注释行是程序员写在程序源代码内,用来对程序进行简单解释或描述,对程序本身的运行不会产生影响。程序中可以有注释行(以//开头),然后有函数的声明(本例中为main函数),最后是程序语句(例如调用println!如果你在源程序中插入了注释而没有用//符号或/*和*/符号,编译器会把它们当成Rust的语句,那么在编译时就会出现一个或多个错误信息。原创 2024-09-11 11:31:10 · 1133 阅读 · 0 评论 -
搭建Windows下的Rust开发环境
下载下来的文件是codelldb-x86_64-windows.vsix,如果不想下载,也可以在somesofts文件夹下找到,然后打开VS Code,单击左侧工具栏上的Extensions按钮,然后把文件codelldb-x86_64-windows.vsix拖入VS Code的Extensions页下的空白处,稍等片刻,VS Code右下角会提示安装完成。其中,文件Cargo.lock也是工具Cargo的元配置文件,它包含依赖的精确描述信息,它是由Cargo自行维护的,因此不需要手动修改。原创 2024-09-10 08:27:55 · 1746 阅读 · 1 评论 -
Rust编程语言的特点及其适合做什么
它保证在任何情况下,使用对象时先构造对象,再析构对象,这是一个主要与C++相关的代码习语,但该技术现在也存在于Rust中,即每次对象超出范围时,都会调用其析构函数并释放其拥有的资源,程序员不必手动执行此操作,并且可以防止资源泄露错误。例如,普通的if表达式就取代了C的三元表达式。Rust中也有引用概念(用&符号),不包含运行时引用计数,租约检查器的编译时已经验证了此类指针的安全性,阻止悬空指针和其他形式的未定义行为。Rust有一个所有权系统,所有的值都有一个唯一的属主,值的有效范围跟属主的有效范围一样。原创 2024-05-11 09:49:27 · 2380 阅读 · 0 评论 -
Rust的数据类型
在Rust编程中,所谓数据类型,就是对数据存储的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的数据类型分配不同的长度和存储形式。在编程时,我们将变量存储在计算机的内存中,但是计算机要知道我们要用这些变量存储什么样的值,因为一个简单的数值,一个字符或一个巨大的数值在内存中所占用的空间是不一样的。在Rust中,每个值都属于某一个数据类型,用来告诉Rust它被指定为何种数据,以便明确数据处理方式。Rust基本数据类型主要有两类子集:标量(Scalar)类型和复合(Compound)类型。原创 2024-09-05 08:01:50 · 1391 阅读 · 0 评论 -
【图书介绍】《Rust编程与项目实战》
Rust是一门系统编程语言,专注于安全,尤其是并发安全,它也是支持函数式、命令式以及泛型等编程范式的多范式语言。标准Rust在语法和性能上和标准C++类似,设计者可以在保证性能的同时提供更好的内存安全。本书详解Rust编程技巧,配套示例源码、PPT课件、作者QQ答疑服务。原创 2024-05-11 09:02:04 · 1049 阅读 · 9 评论 -
Rust线程模型与线程创建
但要注意的是,当主线程结束的时候,整个进程就结束了,此时派生线程也会结束,所以派生线程中的打印信息是不会全部输出完毕的。Rust中的致命逻辑错误会导致线程死机(也称崩溃),在此期间,线程将展开堆栈,运行析构函数并释放所拥有的资源。如果没有捕捉到死机,线程将退出,但可以选择从具有连接的其他线程检测到死机。事实上,如果线程及其返回值可以比它们的调用程序更持久,我们需要确保它们在之后是有效的,因为我们不知道它们什么时候会返回,所以需要让它们尽可能长时间地有效,也就是说,直到程序结束,因此是“静态生存期”。原创 2024-08-14 09:40:14 · 957 阅读 · 0 评论 -
Rust到底值不值得学
Rust是近两年呼声比较高的一种新型开发语言,市场占有量并不大,但增长速度极为迅猛。有人统计过,在计算机行业,平均每33.5天就有一种所谓的新型开发语言面世,这还不包括很多企业内部、项目内部的内置简易流程工具。然而大浪淘沙,如今仍然占据着市场地位的,仍然是耳熟能详的有限几种。作为新来的搅局者,Rust到底值不值得学习并且在工作中应用呢?先说结论,这里粗略地把开发者分为初学者、小有经验的常规工程师和资深开发者三类。原创 2024-08-22 16:38:11 · 971 阅读 · 0 评论 -
快速了解Rust 的数据分析库Polars
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言,易于阅读和编写,同时也易于机器解析和生成,并有效地提升了网络传输效率。这里需要注意,如果数据中存在空数据,则需要用None来表示,而Rust是强类型语言,需要列数据类型一致,因此,如果数据中有None存在,则其他非None数据需要用Some()包裹,达到类型一致。Polars是一个基于 Rust 的数据分析库,它的目标是提供一个高性能的数据分析工具,同时也提供了Python和JavaScript的接口,也就是说这款工具还可以供Python使用。原创 2024-08-30 15:41:31 · 1488 阅读 · 0 评论 -
Rust到底值不值得学,之二
带来的优点也是显而易见的,除刚才提过的不让程序Bug带入生产环境外,错误能在编译阶段就消除掉,无须在运行时进行更多不必要的错误检查,这也将大大地减少程序在运行时的消耗。顺便还见识了Rust中函数的嵌套写法,当然现在新兴的语言,包括C++11之后的版本,都已经支持这种写法,这在函数式(Functional Programming Paradigm,注意不是函数化Functionalization)编程中是很重要的支持。去掉之后是可以编译通过的,但仍然需要注意,y此时是可写的指针,“借用”了x的写权限。原创 2024-09-02 10:05:20 · 1314 阅读 · 0 评论 -
Rust多线程编程概述
这个实例的输出结果是随机的,主线程一旦执行完成,程序就会自动退出,不会继续等待子线程。线程是进程(Process)中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。事实上,如果线程及其返回值可以比它们的调用程序更持久,我们需要确保它们在之后是有效的,因为我们不知道它们什么时候会返回,所以需要让它们尽可能长时间地有效,也就是说,直到程序结束,因此是“静态生存期”。原创 2024-09-03 09:22:11 · 1481 阅读 · 0 评论 -
Rust模块std::thread
但是,程序通常需要特定的支持才能利用超过64个逻辑CPU,并且在没有此类支持的情况下,此函数返回的数字准确地反映了程序默认可以使用的逻辑CPU的数量。调用handle的join方法会阻止当前运行线程的执行,直到handle所表示的这些线程终结join方法返回一个线程结果值,如果线程崩溃,则返回错误码,否则返回Ok。move闭包通常和thread::spawn函数一起使用,它允许用户使用其他线程的数据,这样在创建新线程时,可以把其他线程中的变量的所有权从一个线程转移到另一个线程,然后就可以使用该变量了。原创 2024-09-04 08:48:01 · 1589 阅读 · 0 评论 -
Rust的常数、作用域与所有权
计算机程序必须在运行时管理它们所使用的内存资源。大多数编程语言都有管理内存的功能:C/C++这样的语言主要通过手动方式管理内存,开发者需要手动申请和释放内存资源。但为了提高开发效率,只要不影响程序功能的实现,许多开发者没有及时释放内存的习惯。所以手动管理内存的方式常常造成资源浪费。Java语言编写的程序在Java虚拟机(Java Virtual Machine,JVM)中运行,JVM具备自动回收内存资源的功能。原创 2024-09-06 09:39:05 · 1422 阅读 · 0 评论 -
Rust运算符
比如,加法操作3 + 2,这里的+是操作符,加号两边的3和2是操作数,加法符号的作用是对操作数3加上操作数2,得到计算结果5并返回5。其实,编程语言由于是给人用的,一定要考虑到人的局限性(就是面对复杂事物容易出错),所以编程语言一定要简单明了,Rust去掉了++和--,相对于C语言而言,绝对是个进步,可以从源头上尽可能防止人类出错。它做的唯一工作就是取该操作数的反面值,也就是说如果操作数值为真(true),那么运算后值变为假(false),如果操作数值为假(false),则运算结果为真(true)。原创 2024-09-09 08:15:55 · 1238 阅读 · 0 评论