【Rust】——package、crate、定义Module

简介: 【Rust】——package、crate、定义Module

🎯Rust代码组织

  • 代码组织主要包括:

       —哪些细节可以暴露,哪些细节是私有的。

       —作用域内哪些名称有效

       —...


  • 模块系统:

       包(Packages):Cargo 的一个功能,它允许你构建、测试和分享 crate。

       Crates :一个模块的树形结构,它形成了库或二进制项目。

       模块(Modules)和 use:允许你控制作用域和路径的私有性。

       路径(path):一个命名例如结构体、函数或模块等项的方式


🎯package和crate

crate是 Rust 在编译时最小的代码单位。


  • crate类型:

       —binary(二进制)


       —library(库)


  • Crate Root:


       —是源代码文件


       —Rust编译器从这里开始,组成你得Crate的根Moudule


  • 一个package:

       —一个包会包含一个 Cargo.toml 文件,阐述如何去构建这些 crate。


       —只能包含0-1个library crate


       —可以包含任意数量的binary crate


       —但必须至少包含一个crate(library或binary)


🎯Cargo的惯例


src/main.rs 就是一个与包同名的二进制 crate 的 crate 根。


src/lib.rs,包带有与其同名的库 crate,且 src/lib.rs 是 crate 根。


  • 一个包同时含有 src/main.rs 和 src/lib.rs,则它有两个 crate:

       —一个二进制的和一个库的,且名字都与包相同。


  • 一个package可以多个binary crate;

       —文件放在src/bin


       —每个文件是单独的binary crate


🎯Crate的作用

将相关功能组合到一个作用域内,便于在项目进行共享

       —防止冲突

例如rand crate,访问它的功能需要通过它的名字:rand


🎯定义module来控制作用域和私有性

Module:

  • 模块 让我们可以将一个 crate 中的代码进行分组
  • 提高可读性与重用性
  • 利用模块控制项的 私有性

建立module:

—mod关键字

—可嵌套

—在模块内,我们还可以定义其他的模块,定义的其他项,比如结构体、枚举、常量、特性、或者函数。

mod front_of_house {
    mod hosting {
        fn add_to_waitlist() {}
 
        fn seat_at_table() {}
    }
 
    mod serving {
        fn take_order() {}
 
        fn serve_order() {}
 
        fn take_payment() {}
    }
}

 src/main.rssrc/lib.rs 叫做 crate 根。之所以这样叫它们是因为这两个文件的内容都分别在 crate 模块结构的根组成了一个名为 crate 的模块,该结构被称为 模块树module tree)。

crate
 └── front_of_house
     ├── hosting
     │   ├── add_to_waitlist
     │   └── seat_at_table
     └── serving
         ├── take_order
         ├── serve_order
         └── take_payment
 
相关文章
|
1月前
|
存储 Rust 网络协议
【Rust学习】10_定义枚举
在这一章我们学习 枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option,它代表一个值要么是某个值要么什么都不是。然后会讲到在 match 表达式中用模式匹配,针对不同的枚举值编写相应要执行的代码。最后,我们将学习 if let 结构,另一个简洁方便处理代码中枚举的结构。
39 7
|
6月前
|
Rust 编译器
Rust代码组织:Package、Crate、Module
Rust代码组织:Package、Crate、Module
|
6月前
|
存储 Rust 程序员
Rust结构体详解:定义、使用及方法
Rust结构体详解:定义、使用及方法
|
7月前
|
Rust 安全 编译器
Rust宏基础:定义与使用
本文将深入探讨Rust编程语言中的宏(Macros)基础,包括其定义、使用场景以及如何编写自定义宏。我们将从宏的基本概念出发,逐步深入到具体的实现细节,并通过实例展示如何在Rust项目中使用宏来简化代码和提高效率。
|
7月前
|
存储 Rust 安全
Rust中的变量与常量:定义与使用的深入解析
本文将详细探讨Rust编程语言中变量与常量的定义、特性及其使用场景。我们将从基本概念出发,逐步深入到Rust的内存管理、所有权系统和不变性原则,帮助读者更好地理解和应用这两种基础元素。
|
7月前
|
存储 Rust 程序员
rust中的函数:定义、调用与闭包
本文将深入探讨Rust编程语言中函数的定义、调用方式,以及闭包(closures)的概念和应用。我们将从函数的基本语法出发,逐步深入到函数的参数传递、返回值,再进一步介绍闭包及其捕获环境的能力,帮助读者全面理解并熟练运用Rust中的函数与闭包。
|
Rust 编译器 Shell
Rust学习笔记之包、Crate和模块
1. Rust中包和 crate 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️ 2. 模块控制作用域与私有性 推荐阅读指数 ⭐️⭐️⭐️⭐️ 3. 路径用于引用模块树中的项 推荐阅读指数 ⭐️⭐️⭐️⭐️ 4. use 将名称引入作用域 推荐阅读指数 ⭐️⭐️⭐️⭐️ 5. 将模块分割进不同文件 推荐阅读指数 ⭐️⭐️⭐️
176 0
Rust学习笔记之包、Crate和模块
|
JSON Rust JavaScript
【Rust指南】解析struct 结构体的定义、实例化、方法、所有权、关联函数
【Rust指南】解析struct 结构体的定义、实例化、方法、所有权、关联函数
758 0
【Rust指南】解析struct 结构体的定义、实例化、方法、所有权、关联函数
|
存储 Rust
Rust编程语言中的定义类型
Rust编程语言中的定义类型
141 0
|
1月前
|
Rust 安全 Java
探索Rust语言的并发编程模型
探索Rust语言的并发编程模型
下一篇
DataWorks