likes
comments
collection
share

[Rust 入门]Rust 简介与开发环境搭建

作者站长头像
站长
· 阅读数 3

本教程环境

系统:MacOS

Rust 版本:v1.77.2

Rust 语言简介

Rust 起源

Rust 官方网站 Rust 是在 2006 年由 Mozilla 员工 Graydon Hoare 个人发起的一个项目。这个项目的目标是解决一些长期困扰编程社区的问题(比如内存安全),同时提供低级别系统编程的能力。后来,经过的不断的发展,进行了大量的重构和改进,添加了许多创新的特型,例如所有权系统、生命周期、借用检查等。

到了 2015 年 Rust 1.0 正式发布。Rust 语言的聚焦于内存安全和性能,使得它特别适合系统级别的编程。因此,Rust 得到了像 Firefox、Dropbox 安全团队,以及许多其他技术公司的使用。

Rust 特性

  • 高性能: Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务。
  • 可靠性: Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。
  • 生产力: Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具——包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。

Rust 应用

  1. 系统编程:因为 Rust 具有低级别的编程语言的能力,例如直接访问硬件和内存,它非常适合系统编程,包括操作系统,嵌入式系统,设备驱动,系统工具等。
  2. Web 开发:Rust 的异步编程特性,加上其出色的性能和安全性,使其非常适合 Web 开发。
  3. 游戏开发:Rust 的内存管理和高性能让它适用于游戏开发。
  4. 网络编程:Rust 被广泛应用于低延迟,高吞吐量的网络服务和应用中。例如,Tokio 是一个用 Rust 编写的异步 I/O 的运行时库。
  5. 并发与多线程:由于 Rust 的独特的所有权系统,它可以无需过多担忧的使用多线程并发。这使得 Rust 可以有效地用于多核和 GPU 编程。
  6. 工具链:Rust 常用于编写 CLI 工具和编辑器插件,许多流行的工具如 ripgrep、exa、alacritty 都是用 Rust 实现。
  7. WebAssembly:Rust 是目前支持 WebAssembly 最好的语言之一,可以开发高性能的前端应用。

Rust 开发环境

安装

Rust Playground 可以在线测试 Rust 代码,无须本地安装。本地安装的话使用 Rustup 安装工具,它是专门用来管理 Rust 安装和版本管理的工具。就像 Node 中的 NVM。Mac 系统使用如下命令安装:

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

安装成功之后,可以查看安装版本。[Rust 入门]Rust 简介与开发环境搭建

  • cargo 是 Rust 的编译管理器、包管理器和通用工具。可以用来创建、启动、构建和运行新的 Rust 项目,并管理项目的依赖。
  • rustc 是 Rust 编译器。可以直接运行来编译 Rust 代码。如果使用 cargo ,它会替我们调用 rustc 编译器。
  • rustdoc 是 Rust 文档工具。在源代码中使用特定格式的注释编写文档,使用 rustdoc 即可构建格式良好的 HTML 文档。

更新

使用 Rustup 进行 Rust 更新。

rustup update # 更新到最新版本
rustup update <版本号> # 更新到特定版本

查看本地安装的 Rust 版本。其中 default 是默认使用的版本。

rustup toolchain list

切换 Rust 版本。

rustup default <版本号> # 切换到指定的版本

创建第一个 Rust 程序

直接使用 rustc 编译运行

安装完成 Rust 之后,可以开始使用 Rust 编写程序。创建一个 HelloWord01 的 Rust 项目。

cd Desktop && mkdir HelloWorld01
cd HelloWord01 && touch main.rs

使用编辑器打开 main.rs 文件,并编写如下代码。main() 是 Rust 程序的入口。

fn main() {
    println!("Hello World!");
    println!("Hello Rust!");
}

然后使用 rustc 编译 main.rs文件。

rustc main.rs

在项目目录中生成了 main 可执行文件。运行 main 可执行文件,即可得到如下输出。[Rust 入门]Rust 简介与开发环境搭建在 Rust 中程序是需要通过编译之后才能进行运行。

使用 Cargo 创建项目

在实际的开发中,推荐使用 Cargo 来创建项目。它是 Rust 的构建工具和包管理器。了解更多细节可阅读 Cargo 官方手册。Cargo 的常用命令如下:

  • cargo new <项目名> 创建一个 Rust 二进制项目。一般开发的项目都使用这个命令。
  • cargo new --lib <库名> 创建一个 Rust 库项目。
  • cargo build 编译当前项目。如果项目还未被编译过,或者源文件有更改,这个命令将会重新编译项目。
  • cargo run 编译并运行你的项目。先运行 cargo build,然后运行生成的可执行文件。
  • cargo test 运行当前项目的测试。
  • cargo doc 为当前项目生成 HTML 文档。
  • cargo check 检查项目源文件的语法和类型错误,但是不生成可执行文件。该命令比 cargo build 更快,适合在编写代码的过程中频繁运行。
  • cargo update包管理器将根据 Cargo.toml 的定义,试图用最新版本的包来替换当前的包。
  • cargo install 安装一个 Rust 的二进制文件。比如 cargo install ripgrep 将会安装 ripgrep 工具到你的系统中。

下面使用 Cargo 来创建一个官方示例 hello-rust 项目。

cargo new hello-rust

项目结构如下:[Rust 入门]Rust 简介与开发环境搭建

  • Cargo.toml 是项目的清单文件,包含了项目的源数据和依赖库。
  • src/main.rs 是项目的入口文件。其中 main() 函数是项目的入口函数。项目的代码编写在 src 目录下。
  • Cargo.lock 是 Cargo 自动生成的文件,指定了项目依赖库的版本。
  • target 目录中存放了 Cargo 构建的二进制文件,以及构建过程中产生的临时文件。cargo build 过程中的文件存放在 target/debug 目录。cargo build --release 构建的优化后的版本文件存放在 target/release 目录。

使用 cargo run 编译并运行项目。[Rust 入门]Rust 简介与开发环境搭建可以看到 target/debug 目录下有一个可执行文件 hello-rust。这个文件就是项目打包之后的二进制文件。可以直接运行。[Rust 入门]Rust 简介与开发环境搭建接下来添加依赖。在 Rust 中通常把包称为 crates。可以在 crates.io 网站搜索需要的依赖包。这里,我们在 Cargo.toml 中添加 [ferris-says](https://crates.io/crates/ferris-says) 库。

[dependencies]
ferris-says = "0.3"

然后运行 cargo build 来下载编译依赖库。[Rust 入门]Rust 简介与开发环境搭建接下来,在 main.rs 中使用这个依赖库。

use ferris_says::say;
use std::io::{stdout, BufWriter};

fn main() {
    let stdout = stdout();
    let message = String::from("hello fellow Rustaceans!");
    let width = message.chars().count();

    let mut writer = BufWriter::new(stdout.lock());
    say(&message, width, &mut writer).unwrap();
}

通过 cargo run 运行。[Rust 入门]Rust 简介与开发环境搭建

编辑器推荐

Rust 支持多种编辑器:[Rust 入门]Rust 简介与开发环境搭建推荐使用 VS CODE。可以安装如下插件,提高编程体验:

  • rust-analyzer **必须安装,**Rust 语言的源码分析工具,提供了代码自动补全、即时诊断、类型信息提示、跳转到定义等特性。
  • CodeLLDB 一个由LLDB提供支持的本地调试器。调试 C++, Rust 等编译语言。
  • crates 帮助 Rust 开发人员管理 Cargo.toml 的依赖关系。
  • Even Better TOML Toml 语言支持。

本节教程源码地址:github.com/zcfsmile/Ru…

参考链接:

🌟🌟 🙏🙏 感谢您的阅读,如果对您有帮助,请帮忙点个赞👍🌟🌟 🤔️ 欢迎评论区相互沟通交流