前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Rust] Workspace,Package, Crate 和 Module

[Rust] Workspace,Package, Crate 和 Module

作者头像
绿巨人
发布2021-04-09 14:47:29
1.2K0
发布2021-04-09 14:47:29
举报
文章被收录于专栏:绿巨人专栏绿巨人专栏

package(包)

一个 package 对应一个项目,package 的信息在 Cargo.toml 里面定义。

crate(木箱、箱子)

crate 指的是 package 编译后的输出文件。以 Windows 为例,可能会产生 .exe 文件或者 .rlib 文件。 crate 有两种类型: executable(可执行的) 和 library(库)。 一个 package 可以包含 0 到 n 个 可执行的 crate,和 0 到 1 个 library。 如果,想要在一个 package 里只生成一个可执行的文件,只要写 src/main.rs文件就可以了。 如果,想要在一个 package 里只生成一个库文件,只要写 src/lib.rs文件就可以了。 如果,想要在一个 package 里生成多个可执行的文件和一个库文件,需要在 src/bin目录下放入多个含有main()函数的 rust 文件;和 一个 src/lib.rs文件。这种方法有点儿奇怪,所以建议避免使用这种模式,而使用 workspace 来管理多个编译结果。

module(模块)

一个 rust 文件对应一个 module。module 里可以内嵌多个 module。

workspace(工作空间)

通常,我们期望一个 package 只产生一个 crate(编译结果)。 当需要管理多个项目的时候,workspace 提供了一种更友好的方式。 一个 workspace 是一个目录,含一个 Cargo.toml 文件,并且让包含的 packages 共享一个Cargo.lock,统一了依赖。 所有 packages 的输出都会放到 workspace 的 target 目录里。

一个典型的 workspace 目录结构:

代码语言:javascript
复制
├── Cargo.lock
├── Cargo.toml
├── add-one
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── adder
│   ├── Cargo.toml
│   └── src
│       └── main.rs
└── target

workspace 的定义文件: Cargo.toml

代码语言:javascript
复制
[workspace]

members = [
    "adder",
    "add-one",
]

参照

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • package(包)
  • crate(木箱、箱子)
  • module(模块)
  • workspace(工作空间)
  • 参照
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档