写点什么

5 分钟速读之 Rust 权威指南(一)

用户头像
码生笔谈
关注
发布于: 2021 年 05 月 13 日
5分钟速读之Rust权威指南(一)

开始

敝人前端出身,对于底层语言一窍不通,最近经常看到关于 rust 的文章标题:rust 被评为最喜爱的编程语言,rust 是代替 c、c++的编程语言,rust 是安全的编程语言。


本着好奇心看了一下 rust 的官网:https://www.rust-lang.org/zh-CN/ ,页面非常简洁,门上钉着几个大字:rust 是一门赋予每个人构建可靠且高效软件能力的语言。 大概浏览了一遍,看到可以将 rust 编译成 wasm,瞬间感觉 rust 这东西距离前端很近,心想,如今前端卷的这么厉害,何不另辟蹊径,一方面未来 wasm 是趋势的话,懂 rust 自然是对于前端工作者如虎添翼,另一方面,以后做前端没意思了,还可以转向底层开发方向。


rust 的官网有很完整的从入门到精通的教程,《rust 权威指南》就是官方出品的入门教程,如今中文数据也已经出版,不过官网也有免费的电子书,本人读下来用了两个月的时间,为了让你快速了解这门语言,接下来的一系列文章就是通过在阅读时的笔记整理出的这本书的速读版本,也许会引起你的兴趣。另外,由于本人是一位前端工作者,文中可能会使用 JS,TS 概念尝试理解 rust,有可能不是很贴切,您也可以自行翻阅原书来建立自己的理解。

语法尝鲜

  • let 用于声明变量,但是默认变量是不可变的,类似于 JS 中的 const。如果希望变量可变,前边需要加 mut(mutation)


let foo = 5 // 不可变变量foo = 2 // error
let mut bar = 5 // 可变变量bar = 2 // okay
let _bar = 5; // 变量只声明不使用会报错,可以添加_开头来防止编译器报错
复制代码


  • 常量,名字必须全部大写,显式注明类型


const YEAR: u32 = 365;
复制代码


  • 允许多次声明同名的新变量来覆盖(rust 中称之为:隐藏 shadow)旧变量的值


// 一般在类型转换中使用这种操作let foo = String:new("100")let foo: u32 = foo.trim().parse() // 100
复制代码


  • 控制台输出方法:println!()


let foo = 5;let bar = 6;// 第一个参数是模板,用大括号表示占位,从第二个参数起,依次替换模板中的大括号println!("foo = {}, bar = {}", foo, bar);// foo = 5, bar = 6
复制代码

包管理器 cargo

cargo 是 rust 官方的包管理工具,可用于快速初始化一个项目或者贡献自己的包到 rust 包社区:https://crates.io/


官方文档:https://doc.rust-lang.org/cargo/index.html

Cargo.toml

rust 包配置文件,同样使用 semver 版本,在尝试时发现与 npm 的 package.json 有些区别,即使不加^号,也表示取第二版本号,而 package.json 是允许锁死版本号的。

Cargo.lock

同样用于锁定版本号,如果需要更新包版本,可以使用 cargo update 或者手动更改 Cargo.toml 中对应包的版本号

Cargo 常用命令

# 初始化一个包,相当于npm init,前提是需要先手动创建文件夹cargo init 
# 手动创建一个包,并根据命名创建文件夹cargo new [project-name]
# 编译产出结果,或用于安装新依赖包cargo build
# 只检查语法,不进行输出cargo check
# 安装项目依赖,必须加--path参数,建议用cargo build来安装依赖cargo install --path ./
# 运行项目cargo run
复制代码

配置 cargo 安装源

国内使用 rust 官方源,安装速度很慢,可以改成国内源来加速安装


  1. 进入 cargo 文件夹: cd ~/.cargo

  2. 创建 config 文件: touch config

  3. 写入配置


[source.crates-io]registry = "https://github.com/rust-lang/crates.io-index"replace-with = 'ustc'
[source.ustc]registry = "git://mirrors.ustc.edu.cn/crates.io-index"
复制代码

rustc

rustc 命令可以将 rust 文件直接编译成二进制可执行文件,编译后的文件可在 win 和 mac 上直接运行。


官方文档:https://doc.rust-lang.org/rustc/index.html

rustup

rustup 是 rust 核心,用于更新 rust 等,例如 rustup update

rustdoc

rustdoc 命令用于为 Rust 项目生成文档。在基本层面上,Rustdoc 将包的根文件或 Markdown 文件作为一个参数,并生成 HTML、CSS 和 JavaScript。


官方文档:https://doc.rust-lang.org/rustdoc/index.html

一个完整的 Hello World 项目

安装 rust:


curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
复制代码


确认安装完成:


rustc --version# rustc 1.52.1 (9bc8c42bb 2021-05-09)
复制代码


初始化 helloworld 项目:


cargo new helloworld
复制代码


目录结构如下:


helloworld├── Cargo.toml└── src    └── main.rs
复制代码


在 src/main.rs 中编写代码:


fn main() {  let say = "Hello, world!";  println!("{}", say);}
复制代码


运行项目:


cargo run// Hello, world!
复制代码


发布于: 2021 年 05 月 13 日阅读数: 55
用户头像

码生笔谈

关注

欢迎关注「码生笔谈」公众号 2018.09.09 加入

前端、Rust干货分享,一起成为更好的Javascripter & Rustacean

评论

发布
暂无评论
5分钟速读之Rust权威指南(一)