使用rust的好处
- rust 是一种令人兴奋的新编程语言,它可以让每个人编写可靠且高效的软件。
- 它可以用来替换C/C++,Rust 和它们具有同样的性能,但是很多常见的bug在编译时就可以被消灭。
- rust是一种通用的编程语言、优势
- 运行速度更快
- 内存更安全
- 更好得用多处理器
- 与其它语言比较
- C/C++ 性能非常好,但类型系统和内存都不太安全
- Java/C#, 拥有GC,能保证内存安全,也有很多优秀特性,但是性能不行
- Rust
- 安全
- 无需GC
- 易于维护、调试、代码安全高效
- 擅长的领域
- 高性能 web service
- webassembly
- 命令行工具
- 网络编程
- 嵌入式设备
- 系统编程
Rust 与 Firefox
- Rust 最初是一Mozilla公司的一个研究性项目。FireFox是Rust产品应用的一个重要的例子。
- Mozilla 一直以来都在用Rust创建一个名为Servo的实验性浏览器引擎,其中的所有内容都是并行执行的。
- 目前servo的部分功能已经被集成到firefox
- Rust 使得firefox 在这方面得到了巨大的性能改进
Rust的用户和案例
- Google: 新操作系统fuschia,其中Rust代码量大约占30%;
- Amazon: 基于Linux开发的直接可以在裸机、虚机上运行容器的操作系统
- System76: 纯Rust开发了下一代安全操作系统Redox
- 蚂蚁金服:库操作系统 Occlum
- 斯坦福和密歇根大学:嵌入式实时操作系统,应用于Google的加密产品
- 微软: 正在使用Rust重写windwos系统中的一些低级组件
- 微软: WinRT/Rust项目
安装rust
www.rust-lang.org/tools/insta… l
doc.rust-lang.org/book/ch01-0…
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
Updating and Uninstalling
$ rustup self uninstall
Troubleshooting
$ rustc --version
rustc x.y.z (abcabcabc yyyy-mm-dd)
rustc 1.61.0 (fe5b13d68 2022-05-18)
help
open local doc: rustup doc 可离线打开本地帮助文档
#develop tool vscode rust插件
#first demo
程序文件后缀名:ts 文件命名规范: hello_workd.rs
fn main() {
println!("Hello, world!");
}
$ rustc main.rs
$ ./main
Hello, world!
main函数,每个rust可执行程序的入口执行程代码。
Rust的缩近是4个空格而不是tab
编译和运行
运行Rust程序之前必须先编译
- rustc 源文件名 (rustc main.rs)
- 编译成功后,会生成一个二进制文件(在windows上还会生成一个.pdb文件,里面包含调试信息)
- Rust 是ahead-of-time编译的语言
- RUSTC 不适用于复杂项目
Cargo
Cargo 是 Rust的构建系统和包管理工具
安装Rust的时候会安装Cargo
- cargo --version
- cargo new hello_cargo
- hello_cargo 项目
- cargo.toml(tom's obvious, minimal language)格式,是cargo的配置格式。
[package] name = "hello_cargo" version = "0.1.0" edition = "2021" [dependencies] - cargo.lock(负责追踪项目依赖的精确版本)
- src
- main.rs
- cargo.toml(tom's obvious, minimal language)格式,是cargo的配置格式。
- cargo build
$ cargo build
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 2.85 secs
- 运行
$ ./target/debug/hello_cargo # or .\target\debug\hello_cargo.exe on Windows Hello, world!``
- cargo run
- 编译
- 执行 (如果之前编译成功过,并且源码未更新,直接运行二进制文件)
- cargo check
检查代码,不产生执行文件
cargo check 比 cargo build快得多
- 编写代码可以反复调用cargo check 来确保可以正确完成编译
- 发布时构建
- cargo build --release
- 在构建时会进行优化,便是时间会更长
- target/release 正式发布用的
- target/debug 日常开发使用
- cargo build --release