[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",
]
参照
[Rust] Workspace,Package, Crate 和 Module的更多相关文章
- Rust 学习之旅(7):Package,Crate,Module
Rust 学习之旅(7):Package,Crate,Module 这是第 7 章的读书笔记,Cargo Workspace 在第 14 章. Packages and Crates As a pro ...
- Ext 创建workspace package
Ext 创建workspace package Package ExtJs Project 1. 创建工作区间文件目录 md wpt 2. 进入目录 cd wpt 3. 创建 创建工作区间 sench ...
- 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 ...
- 关于Python Package下的Module import方式[转]
2012年有一个目标我没有达成,那就是深入学习和使用Python语言.这个目标被其他学习任务和工作无情的抢占了,当然最主要的原因还是我重视不够^_^. 近期恰逢有一些Python工程的开发工作要做,就 ...
- 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 ...
- Cargo, Rust’s Package Manager
http://doc.crates.io/ Installing The easiest way to get Cargo is to get the current stable release o ...
- import 本地Python module或package
很基础很重要的一课,虽然很简单,但是防止以后忘了,还是记下来 这个笔记里说的都是import本地的,自己创建的,或者复制粘贴的别人的,总之“不是安装到library”的module or packag ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- Python Module和Package辨析
Python 基础学习 说明 这不是最基础的新手教程,如需了解Python的数据类型.变量等基础内容,请移步:https://docs.python.org/2/tutorial/index.html ...
- perl学习之:package and module
perl的包(package)和模块(PM) ==================================包package=========================== pac ...
随机推荐
- 使用systemd管理多nginx服务以及单nginx服务实现多vhost访问的操作步骤
背景 nginx是开源的web服务器, 性能与可配置性和插件做的非常完善. 可以使用简单的命令拉起来nginx进行服务提供,但是有时候需要使用keepalive等软件实现保活,以及实现开启启动等,比较 ...
- 基于eBPF的微服务网络安全(Cilium 1)
基于eBPF的微服务网络安全 翻译自:Network security for microservices with eBPF 一些开源的kubernetes工具已经开始使用eBPF,这些工具大多数与 ...
- 策略模式学习,使用go实现策略模式
策略模式 定义 优点 缺点 使用场景 代码实现 策略模式和工厂模式的区别 参考 策略模式 定义 策略模式定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到客户端的使用 ...
- 轻薄本杀入3000元档!真我笔记本Air评测:轻松实现12小时超长续航
一.前言:真我笔记本Air带轻薄本杀入3K档位 拓宽产品线是如今各大数码品牌的核心策略之一,尤其是跨界,比如手机厂商,就不断在平板.智能穿戴.PC笔记本等领域延伸,甚至是新能源汽车. 现在,realm ...
- C++小项目|2022期末大作业
前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014. ...
- 【求助】navicat导入monogdb数据报错
navicat在进行mongodb数据导入时报错 Navicat Premium 版本 16.1.3 (64-bit) Windows 11 Unknown Internal Error (A7052 ...
- mybatis批量插入支持默认值和自定义id生成策略的免写sql插件
最近做项目时用了免写sql的插件但是发现批量操作不满足现有需求.所以,在原有基础之上扩展了批量的操作支持[支持插入默认值和自定义id生成策略].使用方法如下: 一:在pom文件中引入jar配置 < ...
- [FATAL] [DBT-06103] 端口 (1,521) 已在使用
今天参考之前文章 Oracle 19c快速安装部署 在一个新的环境进行安装时,发现配置数据库时报错1521端口被占用: [root@OEL7 media]# /etc/init.d/oracledb_ ...
- 【Flink入门修炼】1-2 Mac 搭建 Flink 源码阅读环境
在后面学习 Flink 相关知识时,会深入源码探究其实现机制.因此,需要现在本地配置好源码阅读环境. 本文搭建环境: Mac M1(Apple Silicon) Java 8 IDEA Flink 官 ...
- Qt processEvents - 解决线程中事件阻塞(如槽函数被阻塞)
百度了一会,发现没太有文字讲这件事情,因此整理成文字记录一下. processEvents介绍 长时间运行的操作可以调用processEvents() 保持应用程序响应能力. void QCoreAp ...