Rust教程:How to Rust-从开始之前到Hello World

本文为第0篇

专栏简介

本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议基础的同学(无基础学Rust也是牛人手动捂脸

感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源

本文使用:

  • 操作系统macOS Sonoma 14 / Apple M1
  • 编译器:Rustc & Cargo

感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^

Rust教程:How to Rust-在开始之前到Hello World

更新记录

2024.03.09 发布文章


前言

带你入门Rust,咋搞Rust?Cargo是什么?写个Hello World?


锈起来

rustup是Rust的安装工具,也是它的版本管理工具,所以建议使用rustup来安装Rust(下述方式不适用于Windows,但网络上有很多成熟的Windows安装方案,你可以参考👉这个

如果你不想用rustup来安装,那你可以了解一下Rust的其他安装方式

打开终端输入指令

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

它将下载一个脚本,之后就会开始安装rustup工具,此工具将安装Rust的最新稳定版本

后面会有一些选项,按需选择即可

如果你安装成功了,则会提示:

bush 复制代码
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起来吧

bush 复制代码
cargo new hello_world
cd hello_world

面的命令使用cargo new建一个项目,项目名是hello_world,该项目的结构和配置文件都是由cargo生成,也就是着我们的项目被cargo所管理

项目结构如下

bush 复制代码
.
├── .git
├── .gitignore
├── Cargo.toml
└── src
    └── main.rs

连Git都整好了,他真的我哭死

运行项目

运行项目可以分成两种

  1. cargo run
  2. 手动编译

先来第一种方式,成功

bush 复制代码
$ 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!

​编辑

第二种手动编译,也成功

bush 复制代码
$ 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

bush 复制代码
$ 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一下吧

bush 复制代码
$ 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.tomlcargo 特有的项目数据描述文件 。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 Cargo.toml
  • Cargo.lock 文件是 cargo 工具根据同一项目的 toml 文件生成的项目依赖详细清单 ,因此我们一般不用修改它,只需要对着 Cargo.toml 文件撸就行了。

什么情况下该把 Cargo.lock 上传到 git 仓库里?很简单,当你的项目是一个可运行的程序时,就上传 Cargo.lock,如果是一个依赖库项目,那么请把它添加到 .gitignore 中。

你可能会好奇Cargo.toml里面有些什么,让我们看看

bush 复制代码
$ 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吧

本文共2924字

本文作者与CSDN博主Cat Bayi作者为同一人,CSDN本文链接


本文参考文献

Rust圣经

Rust 包管理器 Cargo 入门 - 知乎

相关推荐
ikoala1 分钟前
Codex 怎么买、怎么充值?先把这两套计费搞清楚
前端·javascript·后端
前端Hardy32 分钟前
一个时代结束了:npm 终于对 install 脚本下手了
前端·javascript·后端
damaoyou33 分钟前
Cog3DRangeImagePlaneEstimatorTool完全指南
后端
Nturmoils1 小时前
分页别写太顺手,LIMIT 背后还有排序和边界
数据库·后端
神奇小汤圆1 小时前
国产版“Codex”初体验,智谱ZCode很强啊!
后端
站大爷IP1 小时前
Python里的“赋值”到底是什么意思?
后端
鹅城剑仙2 小时前
Spring Boot 微服务架构设计与最佳实践
spring boot·后端·微服务
Full Stack Developme2 小时前
Spring Integration 教程
java·后端·spring
爱勇宝3 小时前
AI 时代,前端工程师的话语权正在下降?
前端·后端
kymjs张涛3 小时前
一个月,纯VibeCoding,全平台云笔记APP
前端·javascript·后端