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",
    ]
    

    参照

    非常感谢阅读!如有不足之处,请留下您的评价和问题。
    请“推荐”本文!
  • 相关阅读:
    JDK10源码阅读--String
    [java大数据面试] 2018年4月百度面试经过+三面算法题:给定一个数组,求和为定值的所有组合.
    python scrapy爬取知乎问题和收藏夹下所有答案的内容和图片
    读取数据库信息并生成表设计文档Word版本
    怀念那时正规的软件开发流程
    eclipse安装java web插件
    webAPI+angularJS文件上传和下载
    .net整理
    怎么向老板解释你工作的价值?
    JS高级代码
  • 原文地址:https://www.cnblogs.com/steven-yang/p/14570723.html
Copyright © 2011-2022 走看看