Rust (一)

268 阅读3分钟

使用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

image.png

Updating and Uninstalling

rustupupdate<br>rustup update<br> $ 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 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 日常开发使用