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

参照

[Rust] Workspace,Package, Crate 和 Module的更多相关文章

  1. Rust 学习之旅(7):Package,Crate,Module

    Rust 学习之旅(7):Package,Crate,Module 这是第 7 章的读书笔记,Cargo Workspace 在第 14 章. Packages and Crates As a pro ...

  2. Ext 创建workspace package

    Ext 创建workspace package Package ExtJs Project 1. 创建工作区间文件目录 md wpt 2. 进入目录 cd wpt 3. 创建 创建工作区间 sench ...

  3. can't load package the specified module could not be found

    can't load package the specified module could not be found 用 Dependency Walker 2.2Dependency Walker ...

  4. 关于Python Package下的Module import方式[转]

    2012年有一个目标我没有达成,那就是深入学习和使用Python语言.这个目标被其他学习任务和工作无情的抢占了,当然最主要的原因还是我重视不够^_^. 近期恰逢有一些Python工程的开发工作要做,就 ...

  5. ubuntu下使用python3的有些库时,解决"raise ImportError(str(msg) + ', please install the python3-tk package') ImportError: No module named '_tkinter', please install the python3-tk package"的错误

    问题: 在Ubuntu下使用matplotlib这个库时,运行时出现如下错误: raise ImportError(str(msg) + ', please install the python3-t ...

  6. Cargo, Rust’s Package Manager

    http://doc.crates.io/ Installing The easiest way to get Cargo is to get the current stable release o ...

  7. import 本地Python module或package

    很基础很重要的一课,虽然很简单,但是防止以后忘了,还是记下来 这个笔记里说的都是import本地的,自己创建的,或者复制粘贴的别人的,总之“不是安装到library”的module or packag ...

  8. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  9. Python Module和Package辨析

    Python 基础学习 说明 这不是最基础的新手教程,如需了解Python的数据类型.变量等基础内容,请移步:https://docs.python.org/2/tutorial/index.html ...

  10. perl学习之:package and module

    perl的包(package)和模块(PM) ==================================包package===========================     pac ...

随机推荐

  1. qperf 简要总结 - 延迟与带宽信息

    总结 同一个虚拟机: 延迟: 12us 带宽: 6GB/S 同一个物理机上面的虚拟机: 延迟: 50us-100us 带宽: 1.2GB/S 同一个交换机上面的虚拟机: 延迟: 60us 带宽: 12 ...

  2. 华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力

    本文分享自华为云社区<华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力>,作者: 云容器大未来. 基于eBPF的容器监控的兴起 容器具有极致弹性.标准运行时.易于部署等 ...

  3. NOI2023 游记

    不完全按时间顺序写.记录 NOI 的一些琐事. 从 XDFZ 坐大巴 5 个小时来到成七.第一眼看到的是一个放着 NOI 牌子的台阶,还有一个签名墙.好像在我们之前到的人不太多? 用中英双语签名(冷月 ...

  4. ccs3动画-div向上移动的动画

    <head> <meta charset="UTF-8"> <meta name="viewport" content=" ...

  5. 大模型应用开发:为产品创建一个AI客服/智能助手

    欢迎阅读本系列文章!我将带你一起探索如何使用OpenAI API来开发GPT应用.无论你是编程新手还是资深开发者,都能在这里获得灵感和收获. 本文将继续展示AI助手的开发方式,在OpenAPI中它的名 ...

  6. ChatGPT 火了,一大批开源平替也来了

    ChatGPT 凭一己之力让全球为 AI 沸腾,引发了科技巨头之间的聊天机器人军备竞赛.   众所周知,ChatGPT 的背后技术是 GPT(Generative Pre-trained Transf ...

  7. 进程状态|操作系统|什么是pcb|什么是僵尸进程 |什么是孤儿进程 【超详细的图文解释】【Linux OS】

    说在前面 今天给大家带来操作系统中进程状态的详解. 本篇博主将通过从进程状态的广泛概念,深入到Linux操作系统详细的一些进程状态.在解释进程状态的过程中,博主还会穿插一些操作系统一些重要概念!本篇干 ...

  8. ajax中的同步异步和跨域请求

    ajax中的同步异步和跨域请求 同步异步 demo.html <script> $.ajax({ type: "get", async: false, data: &q ...

  9. 双层nn逻辑回归BP过程的另外一种解释

    双层nn逻辑回归 吴恩达的双层nn逻辑回归的一些符号说明比较复杂导致视频难以理解,这里简单做一个说明 注意:阅读下面内容需要具备基本的矩阵求导知识 下面是手推过程,有空在进行修改

  10. NC16417 [NOIP2017]奶酪

    题目链接 题目 题目描述 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标系, 在坐标系中,奶酪的下表面为 z ...