![](https://img-blog.csdnimg.cn/e99e6ad462fc47048cfbf2f7406b3533.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Rust
文章平均质量分 82
神级语言Rust从入门到精通
微小冷
这个作者很懒,什么都没留下…
展开
-
Rust图形界面编程:egui平直布局
在前面的示例中,已经用到了`ui.horizontal`用来布局,其特点是水平摆放控件。相应地,`ui.vertical`则是垂直摆放控件。根据控件的摆放顺序不同,这两个布局组件衍生出一系列布局函数原创 2023-11-16 07:00:00 · 1945 阅读 · 1 评论 -
Rust错误处理:Result
Rust中没有提供类似try…catch之类的分支语句块,而是提供了Result这种数据类型,用于处理错误的返回值。和Option类似,Result的实质也是一种枚举类型Ok(T),Err(E),下面做一个简单的示例,用Result类型的返回值,来构造一个除法函数。原创 2023-11-23 08:00:00 · 399 阅读 · 0 评论 -
Rust可空类型Option
所以,在实际使用时,需要把Option中的有效值提取出来,为此可使用match来对其进行匹配,为此新建一个函数,以打印div_safe的结果。在一些编程语言中,允许存在空值,但在Rust中并不建议这么做,而建议采取可空类型Option来实现。下面做一个简单的示例,用Option类型的返回值,来构造一个除法函数,并表示x/0这种问题。原创 2023-11-22 09:00:00 · 441 阅读 · 0 评论 -
Rust宏详解之类函数宏
其中,#[proc_macro]下面就是我们定义的类函数宏,其语法结构也像是一个函数结构,输入和输出均为TokenStream类型。过程宏和声明宏有一个重要区别,即过程宏首先是一个库,需要在其配置文件中说明,下面用cargo创建一个新的项目。主函数中也包含两行,第一行是调用宏生成一个函数,结合前面的代码,可知这个函数就是。函数内部,第一行用输入的n,拼接成一条符合Rust语法的字符串,即如下式。第二行,将这个表达式转换为一个可执行的语句,再行输出。下面在lib.rs中实现一个简单的类函数宏,内容如下。原创 2023-11-21 07:45:00 · 439 阅读 · 0 评论 -
Rust用宏实现参数可变的函数
但和C语言相比,Rust中的宏,有着更加复杂的替换,下面是一个示例。仅从上面的示例来看,宏似乎同函数没什么区别,或许优势仅体现在编译期做替换,从而在编译后可以减少一个函数指针的开销。所以,接下来,不妨用宏实现一个函数无法实现的功能:输入多个参数。编译运行的结果为10,接下来就细致地探讨一下这个宏的替换规则,求和的功能就通过宏的方式实现了。原创 2023-11-18 09:15:00 · 609 阅读 · 0 评论 -
Rust动态数组Vec
虽然名为动态数组,但从内存分配的角度来说,Vec中存在一个静态连续的内存区域,用以提高性能。这部分容量可通过capacity()来获取,而当前数组中元素个数,则用len()来得到。Vec提供了一系列sort函数,其中最简单的是sort(),其功能是将数组从小到大进行排列。其中,append输入参数为另一个引用的动态数组,如果想要引用自身,则需克隆一下。Rust提供了动态数组这种数据类型,所谓动态,就是长度可变,示例如下。在迭代中的表现,但是,若想修改迭代中的值,则需通过。其长度为0,容量为10。原创 2023-11-20 08:00:00 · 1104 阅读 · 2 评论 -
Rust根据条件删除相邻元素:dedup
Rust中的动态数组Vec提供了dedup函数,用于删除相邻重复元素。此外,还提供了dedup_by和dedup_by_key,可根据条件删除相邻元素。原创 2023-11-19 08:00:00 · 670 阅读 · 1 评论 -
Rust图形界面egui初步
egui是比较友好的Rust GUI工具。原创 2023-11-12 10:00:00 · 1877 阅读 · 0 评论 -
Rust图形界面:eGUI的Panel布局
eGUI提供面板堆叠的布局方案,即Panel布局。其布局逻辑是,根据当前面板指定的方向,尽可能地填充空间。原创 2023-11-17 09:16:51 · 986 阅读 · 1 评论 -
Rust教程7:Gargo包管理、创建并调用模块
当工程规模变得越来越大,模块化编程是唯一的出路,这几乎是所有编程语言的共识,Rust亦然。在Rust中,项目组织分为三个层级- Module:即模块,是代码的组织单元,对应mod关键字- Crate:即包,由多个模块组成,对应crate关键字。- package:项目,可用于构建、测试和分享包原创 2023-11-11 07:41:27 · 733 阅读 · 0 评论 -
Rust图形界面:从零开始创建eGUi项目
主要来自两个结构体,分别是Ui和Widget。其中Ui里的组件以函数形式调用,Widget中的组件以结构体的形式调用。但大部分组件,二者之间可以互相转换。例如,在上面的代码中,通过调用`ui.label("name: ");`来创造一个标签,但也可以用另一种方法原创 2023-11-13 08:00:00 · 3788 阅读 · 1 评论 -
Rust教程6:并发编程和线程通信
在Rust中,开启多线程进行并发编程,只需调用thread::spawn,但这里有一个坑点,即spawn函数只有一个传入参数,即准备运行的函数,原则上讲这个准备并发执行的函数并没有输入参数。但从测试的角度来说,这样就没法分清谁是谁,为了让带有参数的函数也能享受多线程功能,可采取闭包的方式,将其转化为无参数函数。原创 2023-11-09 09:30:00 · 727 阅读 · 0 评论 -
Rust教程5:泛型和特征
泛型是静态类型语言中必不可少的效率利器,有了这个,就可以让不同的数据类型使用同一套函数。Rust采纳了C++中的泛型机制,并且形式上也几乎借鉴了C++。原创 2023-11-08 09:15:00 · 350 阅读 · 1 评论 -
Rust字符串详解
我们所熟知的由双引号括起来的字符串,在Rust中只是个字符串切片,又叫字符串字面值。这种类型一旦创建,则不可更改。但支持索引,从切片中索引出来的内容,仍是切片,其基本语法有二原创 2023-11-14 08:00:00 · 862 阅读 · 0 评论 -
Rust函数进阶
函数式编程的一大优势就是把函数当作变量,那么既然是变量,就应该可以用let绑定,而想用let绑定,就必须通过赋值好把函数名和函数内容分开,这就是lambda表达式。Rust中的lambda表达式,从写法上来说,就是用两个竖线代替函数的括号,总共有四种写法原创 2023-11-07 08:00:00 · 871 阅读 · 1 评论 -
讲透Rust核心概念:所有权
全面介绍Rust语言的所有权概念,用案例分析移动、克隆、引用租借等操作。原创 2023-11-05 08:30:00 · 565 阅读 · 2 评论 -
Rust语言初步
介绍Rust语言的安装与测试、数据类型、变量、条件语句、数组、循环语句等,看完就能上手撸代码。原创 2023-11-04 09:00:00 · 407 阅读 · 0 评论 -
Rust结构体和枚举类
介绍Rust中的结构体和枚举类,举例说明结构体如何构造、成员方法如何调用,以及match语句的基本用法。原创 2023-11-06 09:00:00 · 509 阅读 · 0 评论