本文为第0篇
专栏简介
本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议基础的同学(无基础学Rust也是牛人[手动捂脸])
感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源
本文使用:
- 操作系统macOS Sonoma 14 / Apple M1
- 编译器:Rustc & Cargo
感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^
Rust教程:How to Rust-在开始之前到Hello World
目录
专栏简介
更新记录
前言
锈起来
安装C语言编译器
Cargo
Hello World
运行项目
Cargo check
Cargo.lock and Cargo.toml
结语
本文参考文献
更新记录
2024.03.09 发布文章
前言
带你入门Rust,咋搞Rust?Cargo是什么?写个Hello World?
锈起来
rustup是Rust的安装工具,也是它的版本管理工具,所以建议使用rustup来安装Rust(下述方式不适用于Windows,但网络上有很多成熟的Windows安装方案,你可以参考👉这个)
如果你不想用rustup来安装,那你可以了解一下Rust的其他安装方式
打开终端输入指令
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
它将下载一个脚本,之后就会开始安装rustup工具,此工具将安装Rust的最新稳定版本
后面会有一些选项,按需选择即可
如果你安装成功了,则会提示:
Rust is installed now. Great!
安装C语言编译器
Rust在几乎所有环境都可以无需安装任何依赖直接运行。但是,Rust会依赖libc和链接器linker。所以如果遇到了提示链接器无法执行的错误,你需要再手动安装一个C编译器。当然我相信macOS的开发者们一定有homebrew,那就一定被苹果硬塞了一个Clang,所以该部分就不赘述了
Cargo
Cargo是Rust中的包管理工具,包管理工具的重点是:任何人拿到了了你的源码,就能运行起来。不只各位是否同时用过Node.js和C++的老版本,在编写C++程序的时候无比希望拥有一个NPM一样包管理工具,但确实没有
它不像老版本的Go,所有的包都在GitHub,导致了所有的项目都依赖一套代码,用起来简直是一言难尽(go转rust过来的同学要泪奔了)
Rust采用了多个语言的包管理优点,祭出恐怖如斯的cargo,很合我胃口👍👍👍
总而言之,cargo提供了一系列的工具,从项目的建立、构建到测试、运行到部署。同时,与rustc结合,主打一个全套,可以说用了就离不开了
Hello World
上文我们了解了Cargo,但我们无需再手动安装,之前安装 Rust 的时候,就已经一并安装了
那就开始new起来吧
cargo new hello_world
cd hello_world
面的命令使用cargo new建一个项目,项目名是hello_world,该项目的结构和配置文件都是由cargo生成,也就是着我们的项目被cargo所管理
项目结构如下
.
├── .git
├── .gitignore
├── Cargo.toml
└── src
└── main.rs
连Git都整好了,他真的我哭死
运行项目
运行项目可以分成两种
- cargo run
- 手动编译
先来第一种方式,成功
$ cargo run
Compiling hello_world v0.1.0 (/Users/bayi/code/rust/blog/hello_world)
Finished dev [unoptimized + debuginfo] target(s) in 0.19s
Running `target/debug/hello_world`
Hello, world!
第二种手动编译,也成功
$ cargo build
Compiling hello_world v0.1.0 (/Users/bayi/code/rust/blog/hello_world)
Finished dev [unoptimized + debuginfo] target(s) in 0.20s
$ ./target/debug/hello_world
Hello, world!
你们可能会发现,里面有个debug字段
在debug模式下,编译速度变快,但运行速度变慢,能不能更完美呢?其实改用release模式即可
可以用cargo run --release或者cargo build --release
$ cargo build --release
Compiling hello_world v0.1.0 (/Users/bayi/code/rust/blog/hello_world)
Finished release [optimized] target(s) in 0.57s
$ ./target/release/hello_world
Hello, world!
Cargo check
如何快速检查一下代码问题呢?那就check一下吧
$ cargo check
Checking hello_world v0.1.0 (/Users/bayi/code/rust/blog/hello_world)
Finished dev [unoptimized + debuginfo] target(s) in 0.35s
拿下!
Cargo.lock and Cargo.toml
可能大家已经注意到Cargo.lock和Cargo.toml这两个文件了,不用说大家也知道,这是cargo的核心文件
来自rust圣经的解释:
Cargo.toml
是cargo
特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建Cargo.toml
。- C
argo.lock
文件是cargo
工具根据同一项目的toml
文件生成的项目依赖详细清单,因此我们一般不用修改它,只需要对着Cargo.toml
文件撸就行了。什么情况下该把
Cargo.lock
上传到 git 仓库里?很简单,当你的项目是一个可运行的程序时,就上传Cargo.lock
,如果是一个依赖库项目,那么请把它添加到.gitignore
中。
你可能会好奇Cargo.toml里面有些什么,让我们看看
$ cat Cargo.toml
[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
name是项目名称,version是当前版本,新项目默认是0.1.0,edition是
使用的Rust大版本
结语
如果本文有任何问题欢迎在评论去指出,如果喜欢这篇文章,希望能点赞评论关注
如果你们身边有像你提起过这个领域的,或者希望可以和ta一起进步的,把这篇文章分享给ta吧
本文共2890字
本文参考文献
Rust圣经
Rust 包管理器 Cargo 入门 - 知乎