Rust 主要是由以下核心部件构成
- 语言规范
- 编译器
- 核心库
- 标准库
- 包管理器
语言规范
Rust 语言规范主要是由 Rust 语言参考(The Rust Reference)和 RFC 文档组成。
Rust 语言参考
Rust 语言参考有官方团队维护,包含三类内容
- 对每种语言结构及其用法的描述。
- 对内存模型、并发模型、链接、调试等内存的描述。
- 影响语言设计的基本原理和参考。 此文档非正式规范性文档,可作为参考使用
RFC 文档
Rust 引入规范化的 RFC 流程,RFC 文档是涵盖了语言特性的设计意图、详细设计、优缺点的完整技术方案。 总结来讲: RFC 相当于草案。
编译器
Rust 官方编译器为 rustc。负责将 Rust 源码便以为可执行文件或者其他类库文件(.a、.so、.lib、.dll等)。
Rustc 有以下特点
rustc是跨平台的应用程序,支持 UNIX/Linux 等类 UNIX 平台,也支持 Windows 平台rustc支持交叉编译,可以在当前平台下编译出可运行与其他平台上的应用程序和库。rustc使用 LLVM 作为编译器后端,具有很好的代码生成和优化技术,支持多个目标平台。rustc是用 Rust 语言开发的,包含在 Rust 语言源码中。rustc对 Rust 源码进行词法语法分析、静态类型检查,最终将代码翻译为 LLVM IR。rustc输出的错误信息非常友好和详尽是开发者的良师益友
核心库
Rust 语法由核心库和标准库共同提供,其中 Rust 核心库是标准库的基础,核心库中定义了 Rust 语言的核心,不依赖与操作系统和网络等相关的库,甚至不知道堆分配也不提供并发和 I/O。
通过在模块顶部引入 #![no std] 来使用核心库,核心库和标准库功能有一些重复,包含如下部分:
- 基础的 trait ,如
Copy、Debug、Display、Option等。 - 基本原始类型,如:
bool、char、i8/u8、i16/u16、i32/u32、i64/u64、isize/usize、f32/f64、str、array、slice、tuple、pointer等。 - 常用功能性数据类型,满足常见的功能性需求,如
String、Vec、HashMap、Rc、Arc、Box等。 - 常用的宏定义,如:
println!、assert!、panic!、vec!等。
在做嵌入式开发时,核心库是必须的。
标准库
Rust 标准库提供应用程序开发所需要的基础平台和跨平台支持。标准库包含的内容大概如下:
- 与核心库一样的基本 trait、原始数据类型、功能数据类型和常用宏等,以及与核心库几乎完全一致的 API。
- 并发、I/O 和运行时。例如线程模块、用于消息传递的通道类型,
Sync、trait等并发模块,文件、TCP、UDP、管道、套接字等常见 I/O - 平台抽象。os 模块提供了许多操作环境交互的功能,包括程序参数、环境变量和目录导航;路径模块封装了处理文件路径的平台特定规则。
- 底层操作接口,如:
std::mem、std::ptr、std:::intrinsics等,操作系统内存、指针、调用编译器固有函数。 - 可选和错误处理类型 Option 和 Result,以及各种迭代器等。
包管理器
把一定规则组织的多个 rs 文件编译后就得到了一个包(creat)。包是 Rust 代码的基本编译单元,也就是共享代码的基本单元。
Rust 社区公开的第三方包都集中在 creates.io 网站上面,它们的文档会被自动发布到 docs.rs 网站上。
Rust 的包管理工具是 Cargo。 Cargo 不仅局限于包管理,它还为 Rust 生态系统提供了标准的工作流。 Cargo 能够管理整个工作流程,从创建项目、运行单元测试和肌醇测试,到构建发布链接库,再到运行可执行文件,等等。Cargo 为开发者提供了极大的方便。
#Rust学习