Rust(中文称为“锈”)是一种由Mozilla开发的系统编程语言,它着力于提供安全性、并发性和实用性。Rust的设计目标是消除程序出现的内存安全性问题,如空指针引用、数据竞争等。它通过在编译时进行严格的所有权和借用检查来实现这一目标,而不是依赖于垃圾回收机制。
以下是Rust的一些关键特点和概念:
所有权系统(Ownership): Rust引入了所有权的概念,通过所有权系统,确保在任何时刻只有一个部分的代码可以访问数据,从而避免了内存泄漏和悬挂指针等问题。
借用和生命周期: Rust允许通过借用(borrowing)来访问数据,而不是直接拥有它。借用有严格的生命周期(lifetimes)概念,确保引用的有效性。
模式匹配(Pattern Matching): Rust支持强大的模式匹配语法,这使得代码更加清晰和可读,同时也提高了代码的表达力。
零成本抽象(Zero-cost Abstractions): Rust提供了高度抽象的功能,如泛型、trait等,但同时它能够在不引入运行时开销的情况下实现这些抽象。
并发安全性: Rust在语言级别提供了并发安全性,避免了数据竞争和其他并发问题。它使用所有权和借用系统来保证多线程代码的安全性。
无空指针: Rust在语言层面上消除了空指针引用问题,确保不会出现野指针和悬挂指针。
高性能: Rust的设计注重性能,可以用于开发高性能的系统级应用和底层组件。
社区支持: Rust拥有一个活跃的社区,提供丰富的文档、库和工具,帮助开发者更容易地学习和使用这门语言。
由于这些特性,Rust在一些领域取得了广泛的应用,包括系统编程、嵌入式系统、网络服务和操作系统等。它的设计理念使其成为一种强大的编程语言,适用于需要高性能和内存安全的应用场景。
。编译: rustc main.rs
。运行:
编译和运行是单独的两步
。运行 Rust 程序之前必须先编译,命令为: rustc 源文件名-rustcmain.rs
。编译成功后,会生成一个二进制文件
-在Windows 上还会生成一个 .pdb 文件,里面包含调试信息。Rust 是 ahead-of-time 编译的语言
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
。Visual Studio Code
Rust 程序解剖
fn main(){
没有参数,没有返回println!("Hello, world!");
println!
是一个 Rust macro (宏)。如果是函数的话,就没有!“Hello World”
是字符串,它是 println!的参数cargo --version
查看。。src/main.rs
类型 | 描述 |
---|---|
i8 , i16 , i32 , i64 , i128 | 有符号整数 |
u8 , u16 , u32 , u64 , u128 | 无符号整数 |
isize , usize | 与计算机架构相关的整数(通常用于索引和长度) |
f32 | 单精度浮点数 |
f64 | 双精度浮点数 |
bool | 布尔类型(true 或 false ) |
char | 字符类型 |
类型 | 描述 |
---|---|
struct | 结构体类型,用于创建自定义的数据结构 |
enum | 枚举类型,允许创建具有多个变体的类型 |
array | 具有固定大小的相同类型元素的数组 ,如果想让你的数据存放在 stack(栈)上而不是 heap(堆)上,或者想保证有固定数量的元素,这时使用数组更有好处。但是数组没有 Vector 灵活(以后再讲)。 |
tuple | 元组类型,将多个不同或相同类型的值组合在一起 |
slice | 数组切片类型,对数组的引用表示数组的一部分 |
&T | 引用类型,对类型 T 的不可变引用 |
&mut T | 引用类型,对类型 T 的可变引用 |
*const T | 不可变指针 |
*mut T | 可变指针 |
fn | 函数类型 |