![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Rust
文章平均质量分 86
花落花开99
这个作者很懒,什么都没留下…
展开
-
在 Windows 10 系统编译 RustDesk
环境信息操作系统:Windows 10 LTSC 2019提前安装 Rust 和 Git安装 LLVM在 LLVM Download Page 页面找到最新版本,跳转到对应的 GitHub 页面下载 Windows 版安装程序。双击安装记得将 LLVM 添加到系统环境变量 PATH。安装 Vcpkg下载并安装在 C 盘创建 dev 文件夹,并下载 vcpkg,然后运行 bootstrap-vcpkg.bat 脚本。mkdir devcd devgit clone https:/原创 2021-11-29 11:19:04 · 4645 阅读 · 10 评论 -
Rust 中的宏
宏(macro) 是 Rust 中的一种高级特性,Rust 中的宏分为两种:声明性宏(declarative macros)程序宏(procedural macros)Custom #[derive] macrosAttribute-like macrosFunction-like macros宏与函数的区别函数不能接收任意多个参数,而宏可以。函数不能操作语法单元,而宏可以。从根本上说,宏是用来生成代码的。函数在编译之前不需要特殊处理,声明性宏需要在编译之前进行展开,展开之后代原创 2021-04-25 10:52:16 · 7545 阅读 · 4 评论 -
Rust 中的闭包
什么是闭包?维基百科上对闭包是这样描述的:在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是在支持头等函数的编程语言中实现词法绑定的一种技术。闭包在实现上是一个结构体,它存储了一个函数(通常是其入口地址)和一个关联的环境(相当于一个符号查找表)。环境里是若干对符号和值的对应关系,它既要包括约束变量(该函数内部绑定的符号),也要包括自由变量(在函数外部定义但在函数内被引用),有些函数也可能没有自由变量。闭包跟函数原创 2021-03-14 00:18:42 · 994 阅读 · 0 评论 -
Rust 中的属性
属性是什么属性(Attribute)是一种通用的自由格式的元数据,Rust 中的属性以ECMA-335中的为模型,其语法则来自ECMA-334(C#)。属性的用途属性只能应用于 Rust 中的项(Item),属性的主要用途如下:条件编译设置 Crate 名称,版本和类型(binary 或 library)自动生成代码控制 Linter 的行为启用编译器的一些特性链接外部的 library标记单元测试函数属性的语法属性的语法借鉴了 C#,内部属性(Inner attributes)原创 2021-02-21 13:23:40 · 1545 阅读 · 0 评论 -
Rust 中的文件操作
文件路径想要打开或者创建一个文件,首先要指定文件的路径。Rust 中的路径操作是跨平台的,std::path 模块提供的了两个用于描述路径的类型:PathBuf – 具有所有权并且可被修改,类似于 String。Path – 路径切片,类似于 str。示例:use std::path::Path;use std::path::PathBuf;fn main() { // 直接将一个字符串切片包装成一个路径切片 let path = Path::new("./foo/bar原创 2021-02-06 21:35:20 · 5312 阅读 · 0 评论 -
Rust 中的注释
Rust 中的注释分为两种:普通注释 – 仅做注释用,在编译时编译器会忽略它们。文档注释 – 可以通过命令生成 HTML 帮助文档。普通注释Rust 的普通注释与 C++ 的风格一样,分为:单行注释 – 以 // 开头,// 后的内容都会被注释掉。块注释 – 可以注释多行,并且可以嵌套,使用 /* ... */ 将注释内容与代码分隔。示例:fn main() { // 这是行注释 /* 这是块注释, 可以注释多行。*/ /* * 这也是块原创 2021-01-31 09:44:23 · 1470 阅读 · 0 评论 -
Rust 所有权系统——所有权、借用和生命周期
所有权系统(Ownership System)是 Rust 语言最基本最独特也是最重要的特性之一。其它编程语言管理内存的方式:程序员手动分配和释放内存,比如:C 语言。采用垃圾回收机制,比如:Java 语言的虚拟机提供垃圾回收器,程序员基本无需关心内存的分配和释放。Rust 采用的是第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则(所有权规则)进行检查和管理内存。简单地说,编译器在编译的时候就能知道内存如何分配以及何时释放。所有权系统,包括三个重要的组成部分:所有权(O原创 2021-01-24 23:01:36 · 1108 阅读 · 0 评论 -
Rust 错误处理
在编程语言中,处理错误的方式大致可分为两种:抛出异常作为值返回(返回一个错误代码或者自定义错误类型)Rust 将错误作为值返回,并提供了原生的错误处理方案。在 Rust 中,错误可分为两种:可恢复错误(recoverable)—— Result<T, E>不可恢复错误(unrecoverable)—— panic!panic!panic! 是 Rust 提供的一个宏,这个宏在执行时会打印错误信息,展开并清理栈数据。panic! 会导致当前线程结束,甚至是整个程序的结束。因原创 2021-01-23 17:59:06 · 2187 阅读 · 0 评论 -
Rust 模块系统
Rust 提供了一套模块系统来组织和管理代码,包括:模块(module)、Crate、包(package)和工作空间(workspace)。包和 CrateCrate 的英文意思是大木箱,它是一个模块树,并且是编译的基本单元,可以将其编译成可执行程序(executable)或者库(library)。因此,Crate 基本分为两种:二进制 Crate(binary crate)和 库 Crate(library crate)。包(package)是包含一个或者多个 Crate 的文件夹(目录)。包(原创 2021-01-20 15:17:10 · 1350 阅读 · 1 评论 -
Rust 中的序列化和反序列化
序列化: 将数据结构或对象转换成二进制序列的过程。反序列化:将在序列化过程中所生成的二进制序列转换成数据结构或者对象的过程。Serde 是对 Rust 数据结构进行序列化和反序列化一种常用框架。Serde 中的 traitSerde 定义了 4 种 trait:Deserialize A data structure that can be deserialized from any data format supported by Serde.Deserializer A data form原创 2021-01-18 16:08:29 · 4911 阅读 · 0 评论 -
Rust 中的泛型
数据类型是对同一类数据的抽象,而泛型是对具有一组相同行为的数据类型的抽象。Rust 使用 trait 来描述这一组相同的行为,简单的说 trait 就是一组函数的集合。Rust中的trait类似于其他语言中的常被称为接口(interfaces)的功能。泛型在函数中使用泛型假如有两个函数,它们的功能是查找slice中最大值并返回,函数体中的采用的算法是一样的,主要不同的是参数类型。如下所示:fn largest_i32(list: &[i32]) -> i32 { let mut原创 2020-12-22 21:12:21 · 1180 阅读 · 0 评论 -
Rust 流程控制
条件选择if 条件选择是一个表达式(可以用来赋值),并且所有分支都必须返回相同的类型。判断条件不必用小括号括起来,条件后跟的代码块必须用大括号括起来。示例一:if 表达式fn main() { let number = 3; if number != 0 { println!("number was something other than zero"); }}示例二:if-else 表达式fn main() { let number = 3原创 2020-12-19 16:40:06 · 284 阅读 · 1 评论 -
Rust 函数
Rust 支持多种编程范式,但更偏向于函数式,函数在 Rust 中是“一等公民”,函数可以作为数据在程序中进行传递。跟 C、C++ 一样, Rust 也有一个唯一的程序入口 main 函数。示例:程序入口 main 函数fn main() { println!("Hello, world!");}Rust 使用 fn 关键字来声明和定义函数,使用 snake case 风格来命名函数,即所有的字母小写并使用下划线分隔单词。函数可以有参数,并且每个函数都有返回值。函数参数参数的声明方式:原创 2020-12-18 16:36:21 · 810 阅读 · 1 评论 -
Rust 自定义类型
Rust 自定义类型主要有两种:结构体和枚举类型。结构体和元组一样,结构体中的值可以是不同的数据类型,但结构体有自己的名称,并且需定义结构体中各个数据的名称和类型,称之为字段(field)。结构体分为三类:C 语言风格结构体(C struct)元组结构体(uple struct)单元结构体(unit-like struct)C 语言风格结构体示例: 结构体的定义和实例化// 定义 User 结构体// 使用 `struct` 关键字,指定结构体名称,在大括号内指定字段(field)名原创 2020-12-17 13:58:16 · 897 阅读 · 0 评论 -
Rust 数据类型
Rust 是静态类型语言,它的数据类型分为两类:标量(scalar)类型和复合(compound)类型。标量类型标量(scalar)类型代表一个单独的值。Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型。整型Rust 提供了不同长度的整型,并且每种长度的整型都分为有符号和无符号两类。整型分类:长度有符号无符号备注8-biti8u816-biti16u1632-biti32u3264-biti64u64128-原创 2020-12-16 09:57:05 · 1754 阅读 · 0 评论 -
Rust 工具之 cargo
Cargo 是 Rust 的代码组织管理和项目构建工具,使用 rustup 安装 Rust 时,Cargo 默认也会被安装。Cargo 的主要用途:创建和管理 Rust 的模块系统 。下载和管理依赖包。调用rustc或其他构建工具来构建项目(应用)。Rust提供了一套模块系统来组织和管理代码,包括:模块(module)、Crate、包(package)和工作空间(workspace)。其中,包(package)是包含一个或者多个Crate的目录结构,类似于其他编程语言中项目的概念。而 Cra原创 2020-12-14 15:38:45 · 1392 阅读 · 0 评论 -
Rust 工具之 rustup
安装rustup 是 Rust 的安装和管理工具,并且官网推荐使用 rustup 安装 Rust。在不同操作系统的安装方式:在 Unix 系统,使用curl https://sh.rustup.rs -sSf | sh命令,该命令会下载并运行rustup-init.sh。在 Windows 系统,下载并运行rustup-init.exe(32-bit,64-bit)。另外,在 Windows 系统上有两种 ABI 可供选择:Visual Studio使用的本地(MSVC) ABI。GCC原创 2020-12-12 22:04:35 · 6291 阅读 · 0 评论 -
Windows下搭建 Rust 开发环境
Rust 支持很多的集成开发环境(IDE)或开发专用的文本编辑器。查看官网公布支持的开发工具。本文采用的是 Microsoft C++ 生成工具 + Visual Studio Code 的方式。Rust 的编译工具依赖 C 语言的编译工具,可以使用Microsoft C++ 生成工具或者 MinGW + GCC 编译环境。安装 Microsoft C++ 生成工具Microsoft C++ 生成工具主要是为 Rust 提供一个 C 编译环境,它是Visual Studio的一个可以单独安装的组件。原创 2020-12-11 23:32:58 · 1969 阅读 · 1 评论