【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
 
相关文章
|
5月前
|
Rust 编译器
Rust代码组织:Package、Crate、Module
Rust代码组织:Package、Crate、Module
|
5月前
|
存储 Rust 程序员
Rust结构体详解:定义、使用及方法
Rust结构体详解:定义、使用及方法
|
6月前
|
Rust 安全 编译器
Rust宏基础:定义与使用
本文将深入探讨Rust编程语言中的宏(Macros)基础,包括其定义、使用场景以及如何编写自定义宏。我们将从宏的基本概念出发,逐步深入到具体的实现细节,并通过实例展示如何在Rust项目中使用宏来简化代码和提高效率。
|
6月前
|
存储 Rust 安全
Rust中的变量与常量:定义与使用的深入解析
本文将详细探讨Rust编程语言中变量与常量的定义、特性及其使用场景。我们将从基本概念出发,逐步深入到Rust的内存管理、所有权系统和不变性原则,帮助读者更好地理解和应用这两种基础元素。
|
6月前
|
存储 Rust 程序员
rust中的函数:定义、调用与闭包
本文将深入探讨Rust编程语言中函数的定义、调用方式,以及闭包(closures)的概念和应用。我们将从函数的基本语法出发,逐步深入到函数的参数传递、返回值,再进一步介绍闭包及其捕获环境的能力,帮助读者全面理解并熟练运用Rust中的函数与闭包。
|
Rust 编译器 Shell
Rust学习笔记之包、Crate和模块
1. Rust中包和 crate 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️ 2. 模块控制作用域与私有性 推荐阅读指数 ⭐️⭐️⭐️⭐️ 3. 路径用于引用模块树中的项 推荐阅读指数 ⭐️⭐️⭐️⭐️ 4. use 将名称引入作用域 推荐阅读指数 ⭐️⭐️⭐️⭐️ 5. 将模块分割进不同文件 推荐阅读指数 ⭐️⭐️⭐️
160 0
Rust学习笔记之包、Crate和模块
|
JSON Rust JavaScript
【Rust指南】解析struct 结构体的定义、实例化、方法、所有权、关联函数
【Rust指南】解析struct 结构体的定义、实例化、方法、所有权、关联函数
678 0
【Rust指南】解析struct 结构体的定义、实例化、方法、所有权、关联函数
|
存储 Rust
Rust编程语言中的定义类型
Rust编程语言中的定义类型
129 0
|
3月前
|
Rust 安全 Go
揭秘Rust语言:为何它能让你在编程江湖中,既安全驰骋又高效超车,颠覆你的编程世界观!
【8月更文挑战第31天】Rust 是一门新兴的系统级编程语言,以其卓越的安全性、高性能和强大的并发能力著称。它通过独特的所有权和借用检查机制解决了内存安全问题,使开发者既能享受 C/C++ 的性能,又能避免常见的内存错误。Rust 支持零成本抽象,确保高级抽象不牺牲性能,同时提供模块化和并发编程支持,适用于系统应用、嵌入式设备及网络服务等多种场景。从简单的 “Hello World” 程序到复杂的系统开发,Rust 正逐渐成为现代软件开发的热门选择。
61 1
|
1天前
|
Rust 安全 云计算
Rust语言入门:安全性与并发性的完美结合
【10月更文挑战第25天】Rust 是一种系统级编程语言,以其独特的安全性和并发性保障而著称。它提供了与 C 和 C++ 相当的性能,同时确保内存安全,避免了常见的安全问题。Rust 的所有权系统通过编译时检查保证内存安全,其零成本抽象设计使得抽象不会带来额外的性能开销。Rust 还提供了强大的并发编程工具,如线程、消息传递和原子操作,确保了数据竞争的编译时检测。这些特性使 Rust 成为编写高效、安全并发代码的理想选择。
7 0