Rust项目结构

news2024/11/6 9:54:58

文章目录

  • 一、module模块
    • 1.文件内的module
  • 二、模块化项目结构
    • 1.关于module
    • 2.各个模块之间互相引用
  • 三、推荐项目结构
    • 1.实例
  • 参考

一、module模块

1.文件内的module

关键字:mod

引入模块中的方法

  • usemod名字:方法名
  • usemod名字.*
  • 写全路径

二、模块化项目结构

·好处

  • 使源代码管理更加方便
  • 更方便读

1.关于module

默认是private

组成一个module

  • File
  • Directory,需要mod.rs

2.各个模块之间互相引用

crate根目录引入
super相对路径引入

三、推荐项目结构

bin目录

  • 把main.rs放入

somelib

  • 需要修改Cargo.toml
[somelib]
name =“somelib"
path=“src/somelib/mod.rs”I  //文件夹
path=“src/somelib/some.rs” //单个文件

1.实例

创建一个项目

创建一个库mlib

  • 创建单文件translate模块
  • 创建music目录模块
    mp3
    flac
    在flac调用translate模块中的方法
    将flac中的music方法暴露出去

在这里插入图片描述

main.rs

fn main() {
    println!("Hello, world!");

    mlib::translate::func1();

    mlib::music::flac::flac();
    mlib::music::flac::flac_music();

    mlib::test();
    mlib::flac_music();
}

src/mlib/music/flac.rs

pub fn flac() {
    //方法1 调用外层translate.rs里面的方法
    super::super::translate::func1();

    println!("flac");
}

pub fn flac_music() {
    // 方法2
    crate::translate::func1();
    println!("flac_music");
}

src/mlib/music/mod.rs

// 声明出去

pub mod flac;
pub mod mp3;

src/mlib/music/mp3.rs

pub fn mp3() {
    println!("mp3");
}

src/mlib/mod.rs


// 暴露模块
pub mod music;
pub mod translate;

pub fn test() {
    println!("test....");
}

// 暴露模块中的某个函数
pub use music::flac::flac_music;

src/mlib/translate.rs

pub fn func1() {
    println!("Hello,  func1!");
}

Cargo.toml

[package]
name = "demo"
version = "0.1.0"
edition = "2021"


[lib]
name="mlib"
path="src/mlib/mod.rs"


[dependencies]

参考

  • Rust项目结构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HiveSQL 中判断字段是否包含某个值的方法

HiveSQL 中判断字段是否包含某个值的方法 在 HiveSQL 中,有时我们需要判断一个字段是否包含某个特定的值。下面将介绍几种常用的方法来实现这个功能。 一、创建示例表并插入数据 首先,我们创建一个名为employee的表,并插入一些示例数据&am…

408——计算机网络(持续更新)

文章目录 一、计算机网络概述1.1 计算机网络的概念1.2 计算机网络体系结构1.3 总结 二、物理层2.1 物理层的基本概念2.2 物理层的基本通信技术2.3 总结 三、数据链路层3.1 数据链路层基础概论3.2 数据链路层的通信协议 一、计算机网络概述 1.1 计算机网络的概念 计算机网络的定…

正反shell反弹的区分

在shell反弹中我们会根据参照物的不同来区分正反shell反弹。 本次我们需要使用win和kali进行实验: 在shell反弹中我们需要在win上面安装netcat(瑞士军刀)用于可以执行监听指令。 下载指导链接https://blog.csdn.net/qq_40359932/article/d…

CSS的配色

目录 1 十六进制2 CSS中的十六进制2.1 十六进制颜色的基本结构2.2 十六进制颜色的范围2.3 简写形式2.4 透明度 3 CSS的命名颜色4 配色4.1 色轮4.2 互补色4.3 类似色4.4 配色工具 日常在开发小程序中,客户总是希望你的配色是美的,但是美如何定义&#xff…

Java 基于SpringBoot+Vue 的公交智能化系统,附源码、文档

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

qt QFile详解

1、概述 QFile类是Qt框架中用于读取和写入文本和二进制文件资源的I/O工具类。它继承自QFileDevice类,后者又继承自QIODevice类。QFile类提供了一个接口,允许开发者以二进制模式或文本模式对文件进行读写操作。默认情况下,QFile假定文件内容为…

react jsx基本语法,脚手架,父子传参,refs等详解

1,简介 1.1 概念 react是一个渲染html界面的一个js库,类似于vue,但是更加灵活,写法也比较像原生js,之前我们写出一个完成的是分为html,js,css,现在我们使用react库我们把html和js结…

Qt学习笔记第41到50讲

第41讲 UI美化遗留问题解决 如上图所示目前记事本的雏形已现,但是还是有待优化,比如右下角的拖动问题。 解决方法: ①首先修改了Widget类的构造函数。 Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) {ui->s…

Linux(VMware + CentOS )设置固定ip

需求:设置ip为 192.168.88.130 先关闭虚拟机 启动虚拟机 查看当前自动获取的ip 使用 FinalShell 通过 ssh 服务远程登录系统,更换到 root 用户 修改ip配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 重启网卡 systemctl restart network …

CAN总线学习笔记(1、CAN总线定义)

CAN总线学习笔记(1、CAN总线定义) 江协科技CAN总线入门教程视频学习笔记 CAN特性 两根通信线(CAN_H\CAN_L),两根线,无需工地 差分信号,抗干扰能力强 高速CAN(ISO11898)&#xff…

伍光和《自然地理学》电子书(含考研真题、课后习题、章节题库、模拟试题)

《自然地理学》(第4版)由伍光和、王乃昂、胡双熙、田连恕、张建明合著,于2018年11月出版。作为普通高等教育“十一五”国家级规划教材,本书不仅适用于高校地球科学各专业的基础课程,还可供环境、生态等有关科研、教学人…

Idea如何推送项目到gitee

第一步:先在你的gitee创建一个仓库 第二步: 点击推送 点击定义远程,将URL换成你仓库的,填好你的用户名和密码 可以看到已经推送到仓库了

AI笔筒操作说明及应用场景

AI笔筒由来: 在快节奏的现代办公环境中,我们一直在寻找既能提升效率、增添便利,又能融入企业文化、展现个人品味的桌面伙伴。为此,我们特推出专为追求卓越、注重细节的您设计的AI笔筒礼品版,它集高科技与实用性于一身…

【C++】内存管理(二):operator new/delete

大家好,我是苏貝,本篇博客带大家了解C的operator new/delete,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1 new/delete的底层2 new/delete的底层调用顺序3 delete[ ]调用析构函数的次数…

【工具变量】中国制造2025试点城市数据集(2000-2023年)

数据简介:《中国制造2025》是中国ZF于2015年5月8日印发的一项战略规划,旨在加快制造业的转型升级,提升制造业的质量和效益,实现从制造大国向制造强国的转变。该规划是中国实施制造强国战略的第一个十年行动纲领,明确提…

小菜家教平台(一):基于SpringBoot+Vue打造一站式学习管理系统

前言 现在已经学习了很多与Java相关的知识,但是迟迟没有进行一个完整的实践(之前这个项目开发到一半,很多东西没学搁置了,同时原先的项目中也有很多的问题),所以现在准备从零开始做一个基于SpringBootVue的…

算法专题:字符串

目录 1. 最长公共前缀 1.1 算法原理 1.2 算法代码 2. 最长回文子串 2.1 算法原理 2.2 算法代码 3. 二进制求和 3.1 算法原理 3.2 算法代码 4. 字符串相乘 4.1 算法原理 4.2 算法代码 1. 最长公共前缀 . - 力扣(LeetCode) 1.1 算法原理 有以…

非线性数据结构之图

一、有向图(Directed Graph) 1. 定义 有向图是一个由顶点(节点)和有方向的边(弧)组成的图。在有向图中,每条边都有一个起点和一个终点,表示从一个顶点到另一个顶点的关系。 2. 特…

虚拟现实技术课程开发思路

文章目录 组队选题立项分工建模说明:场景说明:交互说明: 结语: 前言:最近学弟学妹们反馈水水老师课程开始上强度了。不仅有翻转课堂,还有理论课实验课都要做东西出来。听说理论课是做什么博物馆什么的&…

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…