首页 > 其他分享 >rust 项目的文件结构

rust 项目的文件结构

时间:2023-03-28 17:44:08浏览次数:45  
标签:Cargo 文件 main rs 项目 文件夹 src rust mod

发文原因

很多初学者都使用 cargo new [project_name] 来创建项目,并直接在 main.rs 文件中实现所有功能。

这样是不合理的,并不符合我们 cargo 的开发规范。

下面将简单的介绍一下 rust project 中的文件结构。

cargo new [project_name ] --[bin/lib] 命令可以在项目名称后指定一个参数,来告诉cargo我们创建的是什么类型的项目,bin 代表二进制项目,也就是我们常说的可执行文件。 lib 代表库项目,无法直接执行。 默认参数为 bin。

cargo new [project_name] --bin 创建的默认结构

·
├── Cargo.lock
├── Cargo.toml
├── src/
│   ├── main.rs
├── target/
  • ·
    根目录
  • Cargo.lock 文件
    由 cargo 维护的项目相关依赖的具体信息,不需要我们手动编辑。
  • Cargo.toml 文件
    由我们编辑的项目名称、项目版本、项目作者等。以及项目所需相关依赖。
  • src/ 文件夹
    存放我们的源代码
  • src/main.rs
    程序入口
  • target/文件夹
    用来存放 debug/ release 时的文件,通常不需要我们手动编辑。

下面只说上面没说过的文件/文件夹

cargo new [project-name] --lib 创建的默认结构

·
├── Cargo.lock
├── Cargo.toml
├── src/
│   ├── lib.rs
├── target/
  • lib.rs
    库的默认输出口

下面是相对来说比较完整的目录

·
├── Cargo.lock
├── Cargo.toml
├── src/
│   ├── main.rs
│   └── another_mod/
│       ├── A.rs
│       ├── b.rs
│       └── mod.rs
├── benches/
│   ├── large-input.rs
│   └── multi-file-bench/
│       ├── main.rs
│       └── bench_module.rs
├── examples/
│   ├── simple.rs
│   └── multi-file-example/
│       ├── main.rs
│       └── ex_module.rs
└── tests/
    ├── some-integration-tests.rs
    └── multi-file-test/
        ├── main.rs
        └── test_module.rs
  • src/another_mod
    为我们自定义模块创建的文件夹。
  • src/another_mod/A.rs
    我们自定义模块中的的A mod。
  • src/another_mod/B.rs
    我们自定义模块中的B mod。
  • src/another_mod/mod.rs
    我们自定义模块的 默认导出,任何一个自定义mod 文件夹都应该包含一个 mod.rs文件。
  • benches
    基准测试文件夹,用来进行性能测试。
  • examples
    示例文件夹,用来存放crate的调用示例代码。
  • tests
    集成测试文件夹,mod 之间的嵌套测试。

Rust官网
Rust 中文社区

标签:Cargo,文件,main,rs,项目,文件夹,src,rust,mod
From: https://www.cnblogs.com/SantiagoZhang/p/17266120.html

相关文章

  • Web 大文件上传解决方案(500M以上)
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传......
  • 总体设计(软件项目)
    这份报告是机票预订系统的总体设计,老师评分90分,应该是图画的好。1.引言1.1编写目的由前面的需求分析,得出了系统的基本需求,要实现整个系统,需要对用户的需求进行设计,概要......
  • SpringBoot+RocketMq+Mybatis项目整合demo
    转载自:https://blog.csdn.net/mikewuhao/article/details/106666109 ============= Demo实现的功能项目启动生产者和消费者2个服务后,生产者端执行用户查询,从数据......
  • 下载文件带进度条
    <template><el-dialogtitle="批量下载":visible.sync="isShow"width="1000":before-close="handleClose"><divclass="downBox"><divclass="downTop">......
  • B/S 大文件上传解决方案(500M以上)
    ​ 最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......
  • 基于HTML5的移动Web应用——文件操作
     过去Web程序不能替代桌面程序的一个重要原因就在于浏览器对于文件操作API的缺失。照片处理中的裁剪、滤镜,二维码的读取与识别,文档的查看和编辑等,这些操作无一不依赖文件......
  • Python实践(2):文件批量重命名
    最近的工作中遇到了这样的问题:某一批文件以"XXX_1.xxx","XXX_2.xxx"..."XXX_11.xxx","XXX_12.xxx"...命名,在我的电脑上它是以数字从小到大的方式排序的,但在另一台设备上......
  • V3.0(R2_2302) 前端上下文改造, 定位修改文件
    --iuap_yonbuilder_service库--查询包含'AppContext'关键字的函数文件SELECTe.description,e.source_flag,e.file_name,c.file_content,LOC......
  • SMT轨迹导入程序C#导入CAD的DXF文件生成G代码源码
    SMT轨迹导入程序C#导入CAD的DXF文件生成G代码源码YID:9212643822624356......
  • 第三章 工程化 - 基于 webpack 从零构建 vue3.x 项目基本流程二
    bable概述1、babel是什么babel是把最新特性、浏览器无法兼容的代码,编译成浏览器可识别的代码(低版本浏览器对新特性的支持不友好),就比如箭头函数,经过babel的转化......