Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >33.Rust-模块

33.Rust-模块

原创
作者头像
面向加薪学习
修改于 2022-09-04 03:51:31
修改于 2022-09-04 03:51:31
2490
举报
文章被收录于专栏:面向加薪学习面向加薪学习

我们常说 功能模块,就是用于将函数或结构体按照功能分组。也常常把相似的函数或者实现相同功能的或者共同实现一个功能的函数和结构体划分到一个模块中。

Rust 中的模块,类似 C++ 中的命名空间,Java 语言中的包。

在代码组织上,比模块更高级的是 crate ,一个crate 可以存放多个模块,在 Rust 语言中crate 是基本编译单元,分为 可执行二进制文件(包含 main 函数作为程序入口) 或者 一个库

crates.io 是 Rust 官方提供的第三方包的地址。可以使用 cargo install 命令从 crates.io 上下载你所需要的 crate。

定义模块

代码语言:txt
AI代码解释
复制
mod module_name {
   fn function_name() {
      // 具体的函数逻辑
   }
}
  1. module_name 要是一个合法的名称。
  2. Rust 语言中的模块默认是私有的。
  3. 如果一个模块或者模块内的函数需要导出为外部使用,则需要添加 pub 关键字。
  4. 私有的模块不能为外部其它模块或程序所调用。
  5. 私有模块的所有函数都必须是私有的,而公开的模块,则即可以有公开的函数也可以有私有的函数。
代码语言:txt
AI代码解释
复制
//公开的模块
pub mod public_module {
   pub fn public_function() {
      // 公开的方法
   }
   fn private_function() {
      // 私有的方法
   }
}
//私有的模块
mod private_module {

   // 私有的方法
   fn private_function() {
   }
}

use 关键字

代码语言:txt
AI代码解释
复制
use 公开的模块名::函数名;

在根目录下,执行 cargo new --lib mylib,创建类库。

代码语言:txt
AI代码解释
复制
pub mod add_salary {
    pub fn study(name:String) {
        println!("面向加薪学习 {}",name);
    }
}

第一步 进入 mylib目录执行cargo build
第二步 打开根目录 Cargo.toml
[dependencies]
mylib={ path="../module_demo/mylib" }
第三步 在main.rs中修改
use mylib::add_salary::study;

fn main(){
    study("从0到Go语言微服务架构师".to_string());
}

use AddSalary::study;

fn main() {
    study("从0到Go语言微服务架构师".to_string());
}
//输出
面向加薪学习 从0到Go语言微服务架构师

Rust 允许一个模块中嵌套另一个模块,换种说法,就是允许多层级模块。

代码语言:txt
AI代码解释
复制
pub mod mod1 {
   pub mod mod2 {
      pub mod mod3 {
         pub fn 方法名(参数) {
            //代码逻辑
         }
      }
   }
}

调用或使用嵌套模块的方法使用两个冒号 (::) 从左到右拼接从外到内的模块即可

代码语言:txt
AI代码解释
复制
use mod1::mod2::mod3::方法名;

fn main() {
    方法名();
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
rust 模块组织结构
rust有自己的规则和约定用来组织模块,比如一个包最多可以有一个库crate,任意多个二进制crate、导入文件夹内的模块的两种约定方式... 知道这些约定,就可以快速了解rust的模块系统。 先把一些术语说明一下:
lpxxn
2020/09/01
1.6K0
rust 模块组织结构
Rust模块系统
Rust 的模块系统用来管理代码的组织,包括哪些内容可以被公开,哪些内容作为私有部分,以及程序每个作用域中的名字等。模块系统包括:
hotarugali
2022/03/18
4650
rust 代码组织结构
这是 Cargo 的概念,对应一个 Cargo.toml 文件,也就是一个 rust 工程。用于构建、测试、共享 Crate。
jgrass
2024/12/25
810
rust 代码组织结构
rust的package,crate,module
rust提供了非常优秀的包管理器cargo,我们可以使用crate,module,package来组织代码。
zy010101
2023/04/06
6080
21.Rust-结构体
结构体( struct )可以由各种不同类型组成。使用 struct 关键字来创建。struct 是 structure 的缩写。结构体可以作为另一个结构体的字段。结构体是可以嵌套的。
面向加薪学习
2022/06/30
4160
【Rust笔记】Rust与Java交互-JNI模块编写-实践总结
近期工作中有Rust和Java互相调用需求,这篇文章主要介绍如何用Rust通过JNI和Java进行交互,还有记录一下开发过程中遇到的一些坑。
MikeLoveRust
2023/10/18
1.2K0
【Rust笔记】Rust与Java交互-JNI模块编写-实践总结
Rust中使用模块组织代码
自上个世纪 90 年代以来,软件工程的复杂性越来越高,程序渐渐从一个人的独狼开发转为多人团队协作开发。在今天,通过 Github 或中心化的代码分发网站,我们可以轻松的在一个软件工程中同时引入世界各地的开发者开发的代码,我们与同事在同一个工程目录下并行开发不同的程序功能,或者在不拷贝代码的前提下将一个工程中的代码在另一个工程中复用。这一切都是因为模块化编程。
端碗吹水
2022/06/01
5850
Rust 模块化:深入了解 Rust 中的代码组织
本文是一篇Rust基础文章,如果下面的问题对你不是问题,就不要浪费时间阅读这篇文章了,做些更有意义的事情吧。
程序饲养员
2023/12/28
5630
Rust 模块化:深入了解 Rust 中的代码组织
【Rust】007-包管理与模块管理
首先我们新建一个文件夹my_project,然后为这个文件夹初始化一个 Rust 项目吧!
訾博ZiBo
2025/01/06
1010
【Rust】007-包管理与模块管理
Rust学习笔记之包、Crate和模块
今天,我们继续「Rust学习笔记」的探索。我们来谈谈关于「包、Crate和模块」的相关知识点。
前端柒八九
2023/03/23
9670
Rust学习笔记之包、Crate和模块
go 开发者的 rust 入门
即:在任意给定时间,要么 只能有一个可变引用,要么 只能有多个不可变引用。引用必须总是有效的。
王磊-字节跳动
2021/11/27
1.9K0
Rust 赋能前端-开发一款属于你的前端脚手架
大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。
前端柒八九
2024/01/11
6510
Rust 赋能前端-开发一款属于你的前端脚手架
Rust入坑指南:有条不紊
随着我们的坑越来越多,越来越大,我们必须要对各种坑进行管理了。Rust为我们提供了一套坑务管理系统,方便大家有条不紊的寻找、管理、填埋自己的各种坑。
Jackeyzhe
2020/03/11
7760
Rust入坑指南:有条不紊
Rust crate与模块
假设你正在编写一个程序,用来模拟蕨类植物从单个细胞开始的生长过程。你的程序,也像蕨类植物一样,一开始会非常简单,所有的代码也许都在一个文件中——这只是想法的萌芽。随着成长,它将开始分化出内部结构,不同的部分会有不同的用途。然后它将分化成多个文件,可能遍布在各个目录中。随着时间的推移,它可能会成为整个软件生态系统的重要组成部分。对于任何超出几个数据结构或几百行代码的程序,进行适当的组织都是很有必要的。
草帽lufei
2024/05/08
2430
Rust crate与模块
【译】关于Rust模块的清晰解释
在本文中,我将会通过实际的例子来解释模块系统以便于让你清晰地理解它是怎样工作的并且能够快速在自己的项目中应用。
huofo
2022/03/17
3350
Rust API 指南:文档
每个公共模块,特型,结构,枚举,函数,方法,宏和类型定义都应具有一个示例,用于该功能的练习。
袁承兴
2020/12/10
2.1K0
Rust API 指南:文档
Rust 欧洲之声|Rust 和 Cpp 互操作
Slint[1] 曾经的名字叫 SixtyFPS ,是 QtQml 引擎核心开发者和维护者出来创业的项目。Slint 可以有效地为任何显示器开发流畅的图形用户界面:嵌入式设备和桌面应用程序。我们支持多种编程语言,例如 Rust、C++ 和 JavaScript。Slint 也许是 Qt 的替代品。
张汉东
2022/12/08
3.7K0
【Rust学习】16_抽离模块到独立的文件
到目前为止,本章中的所有示例都在一个文件中定义了多个模块。当模块变大时,您可能希望将它们的定义移动到单独的文件中,以便更轻松地浏览代码。
思索
2024/11/21
520
【Rust学习】16_抽离模块到独立的文件
【Rust日报】2021-08-14 reqwest 增加中间件支持
TrueLayer 团队用支持中间件的客户端reqwest-middleware包装 reqwest,并暴露相同的简单 API,在满足弹性和可观察性要求下,使其建立可重复使用的组件。开发人员可以通过导入几个 crate 并在客户端设置代码中添加with_middleware调用来加强与远程 HTTP 的集成,这对任何其他应用的代码都不会造成干扰。
MikeLoveRust
2021/09/08
4530
【Rust日报】 2019-05-08:Rust并发的实践研究
Cloudsmith是Puppet Labs旗下的DevOps平台,目前支持Cargo。你可以把Cloudsmith作为crates.io之外的私人registry。
MikeLoveRust
2019/07/09
1.1K0
相关推荐
rust 模块组织结构
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文