当前位置: 首页 > news >正文

rust-包和箱子

📦 图解 Rust 代码组织层级

包含
分为
可以包含
Package
Crate
二进制 Crate
库 Crate
main.rs
lib.rs
多个二进制 Crate
src/bin/*.rs

1️⃣ 箱子(Crate)——最小的编译单元

  • 类型

    • 🎁 二进制箱子:可执行程序(如命令行工具),必须有 main() 函数。
      • 示例:src/main.rs
    • 📚 库箱子:共享功能(如 rand 库),没有 main()
      • 示例:src/lib.rs
  • 特点

    • 编译器每次处理 一个箱子(即使你直接编译单个文件)。
    • 箱子根(Crate Root)是编译器开始读取的入口文件(如 main.rslib.rs)。

2️⃣ 包(Package)——管理箱子的容器

  • 规则

    • 一个包 必须包含至少一个箱子(二进制或库)。
    • 一个包 最多只能有一个库箱子
    • 一个包可以有 多个二进制箱子(通过 src/bin/*.rs 添加)。
  • 示例

    my-project/
    ├── Cargo.toml  # 包的配置文件
    └── src/├── main.rs    # 二进制箱子(默认与包同名)└── lib.rs     # 库箱子(如果存在)└── bin/       # 额外二进制箱子├── tool1.rs└── tool2.rs
    

🛠️ 创建包时的自动结构

当你运行 cargo new

  • 二进制包

    cargo new my-app
    

    生成:

    my-app/
    ├── Cargo.toml
    └── src/└── main.rs   # 二进制箱子入口
    
  • 库包

    cargo new my-lib --lib
    

    生成:

    my-lib/
    ├── Cargo.toml
    └── src/└── lib.rs    # 库箱子入口
    

🌰 实际案例对比

概念类比示例
箱子单个“代码盒子”main.rslib.rs
装多个盒子的“快递”整个项目目录

常见疑问

  • Q:为什么要有箱子和包的分层?
    A:箱子是编译的最小单元(Rust 的编译优化以箱子为单位),包是方便人类管理的逻辑单元(通过 Cargo.toml 统一配置)。

  • Q:如何共享代码?
    A:将公共代码放在 lib.rs 中,二进制箱子通过 use my-lib; 调用。

http://www.dtcms.com/a/300738.html

相关文章:

  • Gradle#Plugin
  • 【论文阅读】ON THE ROLE OF ATTENTION HEADS IN LARGE LANGUAGE MODEL SAFETY
  • Node.js特训专栏-配置与环境部署:20.PM2进程守护与负载均衡
  • Java面试实战:从基础到架构的全方位技术交锋
  • VUE2 学习笔记9 生命周期
  • 算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ipywidgets’问题
  • 时间长了忘记jupyter的环境是哪个了
  • 07.4-使用 use 关键字引入路径
  • 基于分组规则的Excel数据分组优化系统设计与实现
  • 前端基础班学习路线
  • KNN算法实现图片的识别
  • Python堆栈实现:从基础到高并发系统的核心技术
  • Springboot+Layui英语单词学习系统的设计与实现
  • Python爬虫实战:研究netaddr库相关技术构建IP地址信息采集分析系统
  • Ubuntu服务器安装与运维手册——操作纯享版
  • uinput
  • 安卓打包遇到问题
  • RTSP|RTMP播放器 in Unity:开源不够用?从工程视角重新定义播放器选型
  • 特殊成员函数的生成规则:Effective Modern C++条款17解析
  • 商汤发布具身智能平台,让机器人像人一样和现实世界交互
  • 力扣 hot100 Day57
  • 定点数的表示
  • 批量提取Word中的图片,保存指定文件夹!源码分享
  • 电子电气架构 --- 软件bug的管理模式
  • ADB Shell 命令
  • 配置Dockerhub镜像源使用教程
  • Java生态下的AI开发利器:LangChain4j与Spring AI深度对比与实战
  • Tensorflow实现手写数字识别
  • 使用Python绘制动态樱花