当前位置: 首页 > 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.lryc.cn/news/601527.html

相关文章:

  • 主要分布于内侧内嗅皮层的层Ⅲ的边界向量细胞(BVCs)对NLP中的深层语义分析的积极影响和启示
  • day062-监控告警方式与Grafana优雅展示
  • 【Oracle】套接字异常(SocketException)背后隐藏的Oracle问题:ORA-03137深度排查与解决之道
  • EasyExcel使用(二:写出)
  • MySQL 8.0.42创建MGR集群
  • vue3报错:this.$refs.** undefined
  • nacos连接失败,启动失败常见问题
  • Vue 框架 学习笔记
  • 【笔记】Einstein关系式 D = ukBT 的推导与应用研究
  • GAN/cGAN中到底要不要注入噪声
  • 计算机网络:(十二)传输层(上)运输层协议概述
  • FPGA IP升级
  • Linux文件理解,基础IO理解
  • SCUDATA esProc SPL Enterprise Edition(大数据计算引擎) v20250605 中文免费版
  • Keepalive高可用集群的实验项目
  • 【Java系统接口幂等性解决实操】
  • DeepSeek实战--无头浏览器抓取技术
  • Java常用日志框架介绍
  • 五度标调法调域统计分析工具
  • 设计模式(五)创建型:原型模式详解
  • [spring6: Mvc-异步请求]-源码分析
  • 设计模式(三)创建型:抽象工厂模式详解
  • 微服务架构面试题
  • Flutter开发实战之测试驱动开发
  • linux根据pid获取服务目录
  • Gradio.NET 中文快速入门与用法说明
  • IIS发布.NET9 API 常见报错汇总
  • 从 .NET Framework 到 .NET 8:跨平台融合史诗与生态演进全景
  • 9-大语言模型—Transformer 核心:多头注意力的 10 步拆解与可视化理解
  • 电商项目_核心业务_数据归档