【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
 
目录
相关文章
|
Rust 编译器 Shell
Rust学习笔记之包、Crate和模块
1. Rust中包和 crate 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️ 2. 模块控制作用域与私有性 推荐阅读指数 ⭐️⭐️⭐️⭐️ 3. 路径用于引用模块树中的项 推荐阅读指数 ⭐️⭐️⭐️⭐️ 4. use 将名称引入作用域 推荐阅读指数 ⭐️⭐️⭐️⭐️ 5. 将模块分割进不同文件 推荐阅读指数 ⭐️⭐️⭐️
115 0
Rust学习笔记之包、Crate和模块
|
18天前
|
Rust 安全 网络协议
Rust 笔记:Rust 语言中的枚举 与 模式匹配
Rust 笔记:Rust 语言中的枚举 与 模式匹配
49 0
|
5天前
|
Rust 并行计算 安全
探索Rust语言在并发编程中的应用
探索Rust语言在并发编程中的应用
18 1
|
18天前
|
存储 Rust 安全
Rust 笔记:Rust 语言中的 所有权 与 生命周期
Rust 笔记:Rust 语言中的 所有权 与 生命周期
140 0
|
18天前
|
Rust 安全 程序员
开发语言漫谈-rust
if(){}else{}就是C家族的
|
18天前
|
Rust 监控 数据安全/隐私保护
Rust语言在员工屏幕监控系统中的应用指南
员工屏幕监控系统在现代企业管理中扮演着重要角色。它们能够帮助企业监控员工的活动,确保他们的工作效率和数据安全。在这篇文章中,我们将探讨如何使用Rust语言构建一个简单而高效的员工屏幕监控系统,并提供一些代码示例以帮助你入门。
145 0
|
18天前
|
Rust 监控 JavaScript
抖音技术分享:飞鸽IM桌面端基于Rust语言进行重构的技术选型和实践总结
本文将介绍飞鸽IM前端团队如何结合Rust对飞鸽客户端接待能力进行的技术提升,一步步从概念验证、路径分解到分工开发,再到最后上线收益论证,并分享了其中遇到的技术挑战与经验总结等。
73 1
|
18天前
|
Rust 安全 前端开发
Rust还是其他语言:考量因素与案例分析
【2月更文挑战第1天】本文将探讨在选择编程语言时,为什么Rust可能会成为理想的选择。我们将分析Rust的主要优势,如内存安全、性能、并发编程和所有权系统,并将其与其他流行的编程语言进行比较。此外,我们还将通过具体的案例分析,展示Rust在实际应用中的优势和应用场景。
|
18天前
|
Rust 安全 Java
Rust 语言的类型系统
假如让你设计编程语言的类型,你会怎么做? 要定义哪些类型? 类型之间如何交互? 是否需要类型推断? 类型系统是编程语言中用于定义和控制类型的一组规则。
Rust 语言的类型系统