返回介绍

9.4 工作空间

发布于 2024-10-13 11:25:31 字数 1460 浏览 0 评论 0 收藏 0

包除自己的 Cargo.toml 外,还可通过工作空间(workspace) 共享设置。

$ cd workspace
$ cargo new --lib mylib
$ cargo new my

$ tree
.
├── Cargo.toml
├── my
│   ├── Cargo.toml
│   └── src
│     └── main.rs
└── mylib
  ├── Cargo.toml
  └── src
    └── lib.rs
# workspace/Cargo.toml

[workspace]
members = ["mylib", "my"]

测试代码。

// mylib/src/lib.rs

pub fn hello() {
  println!("hello, world!");
}
// my/src/main.rs

use mylib;

fn main() {
  mylib::hello();
}

在 my 配置里添加依赖。

# my/Cargo.toml

[dependencies]
mylib = { path = "../mylib" }

编译,运行!

  • 相关命令直接在工作空间目录执行。
  • 生成的文件在工作空间 target 目录。
$ cargo clean

$ cargo b
   Compiling mylib v0.1.0
   Compiling my v0.1.0
  Finished dev [unoptimized + debuginfo] target(s) in 7.22s
  
$ cargo r
  Finished dev [unoptimized + debuginfo] target(s) in 0.11s
   Running `target/debug/my`

hello, world!

组织结构示意图

   
  +===========+
  | workspace |  工程管理(多项目)
  +===========+
      |
      |    +=========+
      +----- | package |  项目管理(依赖、构建)
      |    +=========+
      |       |
      +-- ..    |     +=======+
      |       +------ | crate |  项目(文件组织)
      |       |     +=======+
            |       |
            +-- ..    |    +========+
            |       +----- | module |  模块(代码组织)
            |       |    +========+
                  |
                  +-- ..
                  |
                  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文