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

🎃个人专栏:

🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客

🐳Java基础:Java基础_IT闫的博客-CSDN博客

🐋c语言:c语言_IT闫的博客-CSDN博客

🐟MySQL:数据结构_IT闫的博客-CSDN博客

🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客

💎C++:C++_IT闫的博客-CSDN博客

🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客

💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​

🥏python:python_IT闫的博客-CSDN博客

🐠离散数学:离散数学_IT闫的博客-CSDN博客

​​​​​​🥽Linux:​​​​Linux_Y小夜的博客-CSDN博客

🚝Rust:Rust_Y小夜的博客-CSDN博客

欢迎收看,希望对大家有用!

目录

🎯Rust代码组织

🎯package和crate

🎯Cargo的惯例

🎯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.rs 和 src/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

​

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y小夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值