Rust 教程

浏览27884
更新时间2025-08-27

逻辑代码组称为模块。 多个模块被编译成一个名为crate的单元。 Rust 程序可能包含二进制包或库包。 二进制包是一个具有 main() 方法的可执行项目。库 crate 是一组可以在其他项目中重用的组件。 与二进制 crate 不同,库 crate 没有入口点(main() 方法)。 Cargo 工具用于管理 Rust 中的 crate。 例如,network模块包含网络相关功能,graphics模块包含绘图相关功能。模块类似于其他编程语言中的命名空间。 可以使用 crates.io 中的 Cargo 下载第三方 crate。

Sr.No 术语 & 描述
1

crate

是Rust中的编译单元; Crate 被编译为二进制文件或库。

2

cargo

官方的 Rust 包管理工具,用于 crate。

3

module

按逻辑将代码分组到一个 crate 中。

4

crates.io

官方 Rust 包注册表。

语法

// 公共模块
pub mod a_public_module {
   pub fn a_public_function() {
      // 公共函数
   }
   fn a_private_function() {
      //私有函数
   }
}
//私有模块
mod a_private_module {
   fn a_private_function() {
   }
}

模块可以是公共的或私有的。 私有模块中的组件不能被其他模块访问。 Rust 中的模块默认是私有的。 相反,公共模块中的函数可以被其他模块访问。 模块应以 pub 关键字作为前缀以使其公开。 公共模块中的函数也必须公开。

示例:定义模块

该示例定义了一个公共模块 − movies。该模块包含一个函数 play(),它接受参数并打印其值。

pub mod movies {
   pub fn play(name:String) {
      println!("Playing movie {}",name);
   }
}
fn main(){
   movies::play("Herold and Kumar".to_string());
}

输出

Playing movie Herold and Kumar

use 关键字

use 关键字有助于导入公共模块。

语法

use public_module_name::function_name;

示例

pub mod movies {
   pub fn play(name:String) {
      println!("Playing movie {}",name);
   }
}
use movies::play;
fn main(){
   play("Herold and Kumar ".to_string());
}

输出

Playing movie Herold and Kumar

嵌套模块

模块也可以嵌套。 comedy 模块嵌套在 english 模块中,而 english 模块又嵌套在 movies 模块中。下面给出的示例在 movies/english/comedy 模块中定义了一个 play 函数。

pub mod movies {
   pub mod english {
      pub mod comedy {
         pub fn play(name:String) {
            println!("Playing comedy movie {}",name);
         }
      }
   }
}
use movies::english::comedy::play; 
// 导入公共模块

fn main() {
   // 简短路径语法
   play("Herold and Kumar".to_string());
   play("The Hangover".to_string());

   // 完整路径语法
   movies::english::comedy::play("Airplane!".to_string());
}

输出

Playing comedy movie Herold and Kumar
Playing comedy movie The Hangover
Playing comedy movie Airplane!

示例 - 创建 Library Crate 并在二进制 Crate 中使用

让我们创建一个名为 movie_lib 的库包,其中包含一个模块 movies。为了构建 movie_lib 库 crate,我们将使用工具 cargo。

第 1 步 - 创建项目文件夹

创建一个文件夹movie-app,然后创建一个子文件夹movie-lib。创建文件夹和子文件夹后,在此目录中创建一个 src 文件夹和 Cargo.toml 文件。 源代码应位于src 文件夹中。在 src 文件夹中创建文件 lib.rs 和 movie.rs。 Cargo.toml 文件将包含项目的元数据,如版本号、作者姓名等。

项目目录结构如下所示 −

movie-app
   movie-lib/
      -->Cargo.toml
      -->src/
         lib.rs
         movies.rs

第 2 步 - 编辑 Cargo.toml 文件以添加项目元数据

[package]
name = "movies_lib"
version = "0.1.0"
authors = ["Mohtashim"]

第 3 步 - 编辑 lib.rs 文件。

将以下模块定义添加到此文件中。

pub mod movies;

上面的行创建了一个公共模块 − movies。

第 4 步 - 编辑 movie.rs 文件

该文件将定义 movie 模块的所有功能。

pub fn play(name:String){
   println!("Playing movie {} :movies-app",name);
}

上面的代码定义了一个函数play(),它接受一个参数并将其打印到控制台。

第 5 步 - 构建库 crate

使用cargo build命令构建应用程序,以验证库 crate 的结构是否正确。 确保您位于项目的根目录 − movie-app 文件夹。 如果构建成功,终端中将显示以下消息。

D:\Rust\movie-lib> cargo build
   Compiling movies_lib v0.1.0 (file:///D:/Rust/movie-lib)
   Finished dev [unoptimized + debuginfo] target(s) in 0.67s

第 6 步 - 创建测试应用程序

在 movie-app 文件夹中创建另一个文件夹 movie-lib-test,后跟 Cargo.toml 文件和 src 文件夹。 该项目应该有 main 方法,因为这是一个二进制 crate,它将使用之前创建的库 crate。 在 src 文件夹中创建 main.rs 文件。 文件夹结构将如图所示。

movie-app
   movie-lib 
   // already completed

   movie-lib-test/
      -->Cargo.toml
      -->src/
         main.rs

第 7 步 - 在 Cargo.toml 文件中添加以下内容

[package]
name = "test_for_movie_lib"
version = "0.1.0"
authors = ["Mohtashim"]

[dependencies]
movies_lib = { path = "../movie-lib" }

注意 − 库文件夹的路径设置为依赖项。 下图显示了这两个项目的内容。

Cargo Toml 文件

第 8 步 - 将以下内容添加到 main.rs 文件中

extern crate movies_lib;
use movies_lib::movies::play;
fn main() {
   println!("inside main of test ");
   play("Tutorialspoint".to_string())
}

上面的代码导入了一个名为movies_lib的外部包。 检查当前项目的Cargo.toml以验证crate名称。

第9步 - 使用cargo build和cargo run

我们将使用cargo build和cargo run来构建二进制项目并执行它,如下所示 −

cargo run


相关视频

更多

免费

phpStudy极速入门视频教程
初级phpStudy极速入门视频教程

54.6万次学习

收藏

免费

phpStudy V8 视频教程
初级phpStudy V8 视频教程

38.8万次学习

收藏

免费

小皮面板使用视频教程
初级小皮面板使用视频教程

21.6万次学习

收藏

免费

好课诞生记
初级好课诞生记

7.1万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

65.2万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

41.4万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

77万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

64.3万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.5万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

36.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

134万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载