Hi, nice to meet you!

对比 Rust 和 Python 图片缩放速度

写博客时经常会用到 tinypng 这个网站进行图片压缩,所以今天就想用 Rust 试一下关于图片处理的东西。首先对比了一个 Rust 和 Python 的缩放速度,Rust 使用了 image-rs,Python 使用了 Image 中的 PIL,速度结果如下图。

对比 Rust 和 Python 图片缩放速度

Rust 基础 | 常用集合数据类型

之前用到的 String 类型,并没有那么简单,接下来会聊一下关于 String 更多的一些应用。在说 String 前,需要先学习一下 Vec 这种数据类型,类似于一个动态的数组。然后是 HashMap,一个键对值的数据类型,与其他编程语言中的字典很类似。

Rust 基础 | 常用集合数据类型

Rust 基础 | 枚举、匹配

这篇博客涉及到的知识点有 枚举的定义Option 枚举match 语法if let 语法

枚举的定义

Rust 中定义一个枚举,使用关键字 enum,看下面的代码

// 定义一个NPC类型枚举
enum NPCType {
TalkNPC,
WalkNPC,
BattleNPC,
TaskNPC,
}

enum GameState {
OnLogin = 1,
OnHall = 2,
OnWorld,
OnBattle,
OnLogOut,
}
Rust 基础 | 枚举、匹配

Rust 基础 | 结构体

在有类的编程语言中,组织数据的方式可以定义一个类,而在 Rust 中,组织数据的方式,使用 struct。struct 可以定义三种不同的类型,一种是带有字段名字的结构体,一种是没有字段名字的元组结构体,一种是没有任何字段的单元结构体。

Rust 基础 | 结构体

Rust 基础 | 引用、切片

在阅读Rust官方教程时,会看到两个词,引用和借用,也就是 References and Borrowing。这里很容易让人混乱,如果了解C/C++这类有指针的语言,则引用很容易理解,但是 Rust 中的借用这个词是什么意思呢?我觉得,在初学 Rust 时,可以忽略这个词,或者就简单理解为,它所涉及到的东西,就是引用,就是一个指针,就可以了,避免陷入进去。所以,接下来我就就聊一聊引用。

Rust 基础 | 引用、切片

Rust 基础 | 所有权

什么是所有权

Rust 的所有权,是 Rust 语言的一个核心概念。可以简单理解为,一种内存管理的方式。用现实中的东西举例,当你从图书管借了一本书时,这本书的所有权暂时归你所有,而当你把书给你的朋友时,此刻,书的所有权归你的朋友所有,而当你的朋友把书归还图书馆时,此时没有人拥有书的所有权,相当于内存释放。

在使用有自动垃圾回收(GC)的编程语言时,我们并不需要考虑内存的释放问题,因为GC会帮我们释放。Rust是无GC的语言,一个变量占用的内存什么时候释放,由它的所有权决定,简单来说,当所有权所在的作用域结束时,内存将被释放。

Rust 基础 | 所有权

Rust 基础 | 基本语法

1. 变量和可变性

Rust 定义一个变量默认是不可变的,这一点与其他编程语言不同。

let x = 10;
x = 11; // 这里会编译出错,

如果要定义可变量,需要使用 mut

let mut x = 10;
x = 11;

用 let 先定义一个变量,再次用 let 定义一个变量,会将之前的变量覆盖,虽然同名,但也不是原来的变量了,这叫做 Shadowing

let x = 10;
let x = "Hello";

常量的定义使用 const,常量是永远不会变的量,常量必须在定义的时候注明数据类型

const MAX_SCORE: i32 = 10000;
Rust 基础 | 基本语法