zoukankan      html  css  js  c++  java
  • [Rust] Workspace,Package, Crate 和 Module

    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 目录结构:

    ├── Cargo.lock
    ├── Cargo.toml
    ├── add-one
    │   ├── Cargo.toml
    │   └── src
    │       └── lib.rs
    ├── adder
    │   ├── Cargo.toml
    │   └── src
    │       └── main.rs
    └── target
    

    workspace 的定义文件: Cargo.toml

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

    参照

    非常感谢阅读!如有不足之处,请留下您的评价和问题。
    请“推荐”本文!
  • 相关阅读:
    input 特殊字符限制
    angular $http服务
    angular $resouse服务
    ng-model-options 时延
    Pytorch之数据处理
    python 小顶堆
    刷题套路总结
    数组分成和尽可能相等的子数组
    python3.7 sorted 自定义排序
    Leetcode 二维数组周游 54
  • 原文地址:https://www.cnblogs.com/steven-yang/p/14570723.html
Copyright © 2011-2022 走看看