返回介绍

9.2 箱

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

箱子 (crate)是一个编译单元,分为可执行(binary)和库(library)两类。

  • 以根文件(如 main.rslib.rs )为起点。
  • 同时有上述两个根文件,则代表两个共享源文件的箱子。
  • 其余可执行根文件,放在 src/bin 目录下。

示例:

$ tree my

my
├── Cargo.lock
├── Cargo.toml
└── src
  ├── bin
  │   ├── abc.rs
  │   └── demo.rs
  ├── lib.rs
  └── main.rs
# Cargo.toml

[package]
name = "my"
version = "0.1.0"
authors = []
edition = "2018"
default-run = "my"

[dependencies]

两个根文件,分别表示 binary 和 library 箱子。

// lib.rs

pub fn hello() {
  println!("hello, world!");
}

pub fn test(s: &str) {
  println!("lib: {:?}", s);
}
// main.rs

use my::hello;

fn main() {
  hello();
}

注意, src/bin 目录下每个源文件都代表一个独立 binary 箱子。

// bin/demo.rs

use my::test;

fn main() {
  test("src/bin/demo");
}
// bin/abc.rs

use my::test;

fn main() {
  test("src/bin/abc");
}

编译。

$ cargo clean
$ cargo b -v

   Compiling my v0.1.0 (/root/.mac/rs/my)
   Running `rustc --crate-name my   src/lib.rs    --crate-type lib
   Running `rustc --crate-name abc  src/bin/abc.rs  --crate-type bin
   Running `rustc --crate-name demo src/bin/demo.rs --crate-type bin
   Running `rustc --crate-name my   src/main.rs   --crate-type bin

  Finished dev [unoptimized + debuginfo] target(s) in 17.61s

Cargo Targets

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

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

发布评论

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