rust-crate

2023-05-16

让我们来看看创建包的时候会发生什么。首先,我们输入命令 cargo new:

$ cargo new my-project
Created binary (application) my-project
$ ls my-project
Cargo.toml
src
$ ls my-project/src
main.rs

当我们输入了这条命令,Cargo 会给我们的包创建一个 Cargo.toml 文件。查看 Cargo.toml 的内容,会发现并没有提到 src/main.rs,因为 Cargo 遵循的一个约定:src/main.rs 就是一个与包同名的二进制 crate 的 crate 根。同样的,Cargo 知道如果包目录中包含 src/lib.rs,则包带有与其同名的库 crate,且 src/lib.rs 是 crate 根。crate 根文件将由 Cargo 传递给 rustc 来实际构建库或者二进制项目。

在此,我们有了一个只包含 src/main.rs 的包,意味着它只含有一个名为 my-project 的二进制 crate。如果一个包同时含有 src/main.rs 和 src/lib.rs,则它有两个 crate:一个库和一个二进制项,且名字都与包相同。通过将文件放在 src/bin 目录下,一个包可以拥有多个二进制 crate:每个 src/bin 下的文件都会被编译成一个独立的二进制 crate。

crate和crate的根是不同的概念,crate本身是一个模块树,其可以包括一个文件,也可以包括多个文件,以程序的组织而定。二进制crate的根是main.rs,库crate的根是lib.rs。

./bin目录下的每个rs文件分别会被编译为一个可执行的独立单元,即二进制crate。

Rust的编译单元是crate。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rust-crate 的相关文章

随机推荐

  • macOS原生支持NTFS读写的方法

    详细流程 xff1a 插上硬盘后 xff0c 查看你的硬盘名称 xff0c 这里假设名称是AngleDisk 打开Applications的Terminal在终端输入sudo nano etc fstab 敲击回车 现在你看到了一个编辑界面
  • Mac M1 安装brew 国内源

    1 command 43 space 打开搜索 2 输入terminal找到终端点击打开 3 拷贝以下代码放置到终端并回车 bin zsh c 34 curl fsSL https gitee com huwei1024 HomebrewC
  • 日语的-自-他动词区分

  • Sophus库安装和使用

    1 前言 Sophus库是一个较好的李群和李代数的C 43 43 库 xff0c 它很好的支持了SO 3 so 3 SE 3 和se 3 Sophus库是基于Eigen基础上开发的 xff0c 继承了Eigen库中的定义的各个类 因此在使用
  • 打开cmd后默认进入conda的base环境的解决办法

    解决方案 xff1a 命令行执行 xff1a xff08 取消默认加载环境 xff09 conda config set auto activate base false 次级解决方案 xff1a 修改 vim xff5e bashrc x
  • 数据库范式的一些理解

    一 假设一个表R 61 X xff0c Y xff0c Z xff0c 其中X Y Z是三个属性组 xff0c X是码 再假设R不符合3NF xff0c 即 xff1a X gt Y xff0c Y gt Z xff0c 其中Y不是码 xf
  • matlab修改默认当前文件夹

    操作步骤 找到 matlabrc m 文件 cd 39 Matalb的安装路径 39 cd toolbox local 编辑 matlabrc m 文件 在文件末尾添加打开时要转到的目录 xff0c 比如 xff1a cd 39 C Use
  • nvm下载各node版本时使用淘宝的镜像

    在nvm安装目录下的settings txt里 xff0c 添加如下两行代码 xff1a node mirror https npm taobao org mirrors node npm mirror https npm taobao o
  • conda清除无用安装包

    conda clean p 删除缓存 conda clean y all 删除pkgs目录下所有的无用安装包及cache
  • Node.js 获取GET、POST提交的数据

    表单提交过来的数据有两种方法 xff0c 一种是GET方式提交 xff0c 这种提交方法会把表单需要传输的数据写在url上 xff0c 一起带过去 xff0c 另一种是POST方式提交 xff0c POST方式提交会把表单数据携带在requ
  • 如何理解 JS 中的异步

    了解异步前 xff0c 先得知道什么是单线程 单线程 只有一个线程 xff0c 只能做一件事 代码示例 console log 1 alert 39 hello 39 console log 2 点击确认后 xff0c 才会打印出 2 JS
  • nodejs的特点(讲解的很清晰)

    1 异步I O 在Node中 xff0c 绝大多数的操作都以异步的方式进行调用 Ryan Dahl排除万难 xff0c 在底层构建了很多异步I O的API xff0c 从文件读取到网络请求等 xff0c 均是如此 这样的意义在于 xff0c
  • 如何优雅地在word中插入代码

    打开这个网址 xff1a https highlightcode com
  • conda install和pip install有什么区别?

    pip pip install xxx 在特定环境里使用pip xff0c 下载的包会存在特定环境的目录里面 xff0c 例如 D Anaconda3 envs nlp Lib site packages fasttext 使用pip un
  • Ubuntu下安装Clion

    前言 CLion 是一款由 JetBrains 开发的 C 43 43 集成开发环境 xff08 IDE xff09 xff0c 它拥有许多强大的功能 xff0c 如代码自动完成 调试器 版本控制等等 CLion本身是收费软件 xff0c
  • 如何查看docker容器里的操作系统

    在linux中 xff0c 我们可以用uname命令来查看当前的操作系统 在docker容器里 xff0c 我们要查看容器操作系统时 正确的方法是 xff1a cat etc issue 错误姿势 xff1a cat process ver
  • win10关于hyper-v除了在主板设置cpu虚拟化VX-T/AMD-V,还需要在CMD执行以下命令

    I managed to resolve the issue but not by uninstalling Hyper V I saw a couple of suggestions but I find this one situabl
  • 人话解读GPLv3

    GPL最新版本为v3 xff0c 在开源软件许可证的采用量上 xff0c 位列前三名或者前四名 其他三位是MIT Apache GPLv2 如果你浸淫软件业已久 xff0c 作为开源界如雷贯耳的许可证 xff0c 无论如何也要了解一下 xf
  • R语言<-和=赋值的区别-实验

    R系统版本 version platform x86 64 pc linux gnu arch x86 64 os linux gnu system x86 64 linux gnu status major
  • rust-crate

    让我们来看看创建包的时候会发生什么 首先 xff0c 我们输入命令 cargo new xff1a cargo new my project Created binary application my project ls my proje