Rust模块(Modules)
逻辑代码组称为模块,如, network 模块包含与网络相关的函数,而 graphics 模块包含与绘图相关的函数,模块类似于其他编程语言中的名称空间,可以使用 crates.io 第三模块。
| Sr.No | Term & Remark |
|---|---|
| 1 | |
| 2 | cargo 用于包装箱的官方Rust软件包管理工具。 |
| 3 | moule 从逻辑上将代码分组到一个条板箱中。 |
| 4 | 官方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;
use示例
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 模块中,该模块进一步嵌套在 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()); //full path syntax movies::english::comedy::play("Airplane!".to_string()); }
Playing comedy movie Herold and Kumar Playing comedy movie The Hangover Playing comedy movie Airplane!
创建第三方库
让我们创建一个名为movie_lib的库条板箱,其中包含Movies模块,要构建movie_lib库箱,我们将使用工具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文件
该文件将定义电影模块的所有函数。
pub fn play(name:String){ println!("Playing movie {} :movies-app",name); }
上面的代码定义了一个函数 play(),该函数接受一个参数并将其打印到控制台。
步骤5 - 创建库
使用 cargo build 命令构建应用,以验证库的结构是否正确,确保您位于项目的根目录-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方法,在src文件夹中创建一个main.rs文件,文件夹结构如下所示。
movie-app movie-lib //已经完成 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" }
注意-将库文件夹的路径设置为依赖项。下图显示了两个项目的内容。

步骤8 - 编辑main.rs文件
extern crate movies_lib; use movies_lib::movies::play; fn main() { println!("inside main of test "); play("Learnfk".to_string()) }
上面的代码导入了一个名为movie_lib的外部软件包,检查当前项目的Cargo.toml以验证包名称。
步骤9 - Cargo build 和 cargo run
我们将使用cargo build 和cargo run 来建造二进制项目并执行,如下所示-
祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)
精选教程推荐
👇 以下精选教程可能对您有帮助,拓展您的技术视野
暂无学习笔记,成为第一个分享的人吧!
您的笔记将帮助成千上万的学习者