在rust里使用std::include!宏来包含其他文件

Rust模块系统管理 Rust referred to as the module system, include: Packages: A Cargo feature that lets you build, test, and share crates Crates: A tree of modules that produces a library or executable Modules and use: Let you control the organization, scope, and... 阅读详情

main.rs 里使用include!宏包含了另一个文件foo.rs,这样另一个文件就会被直接包含进来,这个在实现一个很大的impl的时候比较有用,比如这个例子里struct Foo的impl被放在了main.rs和foo.rs里

#[macro_use]
use std::*;
include!("foo.rs");

fn main() {
    let f = Foo;
    f.print1();
    f.print2();
}


struct Foo;

impl Foo {
    fn print1(&self){
        println!("print1");
    }
}

foo.rs

impl Foo {
    fn print2(&self){
        println!("print2");
    }
}

运行结果:

print1
print2

注:foo.rs名字随便取的,只要与include!后面的名字一样就可以了。另外foo.rs并不一定要在同一个目录,只要路径完整即可

另外提示下,同一个type的impl可以分开写,但要放在同一个文件里,否则就要用上面的include!宏了

比如这个就把impl分开写

fn main(){
    let f = Foo;
    f.print1();
    f.print2();
}

struct Foo;

impl Foo{
    fn print1(&self){
        println!("print1");
    }
}


impl Foo{
    fn print2(&self){
        println!("print2");
    }
}
rust-i18n:基于宏与YAML的Rust国际化方案实战指南 国际化(i18n)是现代软件开发中绕不开的一环,Rust生态中也涌现了多种方案。基于属性宏与YAML文件的rust-i18n库,将翻译键直接写在代码中,通过编译期生成查找表,运行时以零成本方式切换语言。它解耦了业务逻辑与文案维护,让非开发人员也能通过简单的YAML配置管理多语言资源。同时,宏的编译期检查可在CI阶段借助-warnings捕获缺失键,有效避免运行时异常。无论是Actix Web服务、Tauri桌面应用还是CLI工具,都能通过简洁的API快速集成。本文基于实战经验,深入分析rust-i18n的语 阅读详情

相关推荐

PowerBI参数化实战:3分钟搞定动态数据源切换(附常见错误排查)

本文详细介绍了PowerBI参数化实战技巧,教你3分钟实现动态数据源切换。通过创建参数、改造查询和测试切换三步,轻松应对多环境部署与团队协作中的路径问题,并附上常见错误排查指南,有效提升报表的可维护性和工作效率。

p1q2r的博客 585

【Rust】使用include!来引入其它rs文件中的方法

【Rust】使用include!来引入其它rs文件中的方法 代码 main.rs include!("guess_what_game.rs"); fn main() { //猜猜看游戏,Rust 基础练习 guess_what_game(); } guess_what_game.rs fn guess_what_game() { println!("Hello, wor...

橘子派 5022

HDMI采集芯片 ADV7611采集PC数据调试总结

开发环境:TI DM365 平台, ADV7611采集板, CCS5.5 第一步:I2C调通 这张是 ADV7611 读写的时序图,可以看出在写和读的时候发送地址数据的时候的停止位信息是不同的,在写的时候是不需要停止位的,但是读的时候是要停止位的。如果I2C在硬件没问题的时候可以考虑是不是这方面的问题。 第二步:map 配置: 根据官方推荐配置进行配置:   0x98,

带头奋青的博客 1万+

宝塔Mysql无法启动

【代码】宝塔Mysql无法启动。

m0_52796585的博客 1047

SBP依赖计算中的蝴蝶效应:一个Prefab修改如何触发全量重建?

本文深入探讨了Unity中SBP(Scriptable Build Pipeline)依赖计算的蝴蝶效应,解析了Prefab修改如何触发全量重建的机制。通过分析Asset与Object的层级关系、依赖计算的三种维度及CacheEntry系统,揭示了全量重建的根本原因,并提供了依赖可视化工具开发、优化策略与最佳实践,帮助开发者提升构建效率。

weixin_29015051的博客 444

华为2288H V5服务器断电后‘趴窝’?别慌,手把手教你用SmartKit+BMC修复工具搞定

本文详细介绍了华为2288H V5服务器在断电后无法启动的修复方法,通过SmartKit和BMC修复工具进行故障诊断与修复。文章提供了从工具获取、安装到具体修复流程的完整指南,帮助运维人员快速恢复服务器运行,并给出了后续加固与预防措施,确保服务器稳定运行。

weixin_30575517的博客 296

【Rust 基础篇】Rust类函数宏:代码生成的魔法

在Rust中,类函数宏是一种特殊的宏,它允许开发者创建类似函数调用的宏,并在编译期间对代码进行生成和转换。类函数宏使用proc_macro模块中的类型来处理输入和输出。// 宏的处理逻辑 // ... }在上述例子中,我们使用proc_macro模块中的类型定义了一个名为的类函数宏。宏接受一个参数input,表示宏调用的输入。在宏的处理逻辑中,我们可以根据input对代码进行生成和转换,并返回一个作为输出。类函数宏可以用于定制化地生成自定义数据结构。

繁依Fanyi的博客 2061

SPI模式下的SD卡读写,为什么你的数据总出错?详解时序与状态机避坑指南

本文深入探讨SPI模式下SD卡读写数据出错的根本原因,提供时序优化与状态机设计的实战指南。针对时钟周期计数、状态机跳转和忙检测等核心问题,详解命令时序细节、状态机同步策略及高级避坑技巧,帮助开发者提升SD卡在SPI模式下的稳定性和性能。

weixin_30514745的博客 261

rust-gpu 过程宏揭秘:深入解析 `spirv-std-macros` 与 `[spirv(..)]` 属性宏

> **导读**:`spirv-std-macros` 是 rust-gpu 项目中为 GPU 着色器标准库 `spirv-std` 提供过程宏(proc-macro)支撑的核心 crate。本篇文章将以 [crates/spirv-std/macros/README.md](https://link.gitcode.com/i/89d8972e887608f69a16c3bffa5c7d7b)

gitblog_00010的博客 1147

如何使用3D高斯分布进行环境建模

使用3D高斯分布来进行建模,关键在于通过引入不确定性描述来提高建图的鲁棒性和精度。与传统点云表示相比,3D高斯分布提供了一种更为灵活和有效的方式来处理空间数据,能够通过协方差矩阵表示点的空间不确定性,帮助优化SLAM过程中的定位和地图更新。

JaydenQ的博客 2355

【Cadence】stb仿真和ac仿真——以一个简单的全差分反相放大器仿真为例

最近在补一些仿真方法学的问题,以及一些一直以来都有点模糊的概念,简单记录一下。搭建一个以两个CMOS反相器构成的全差分放大器(28nm工艺,PMOS和NMOS尺寸一致)激励的设置方便共模和差模仿真用同一个TB(这里有一个问题:这个放大器需要在开环下仿真还是闭环下?哪些放大器应用在开环,哪些闭环?这种应用场景不同会导致需要仿真得到开环还是闭环增益,或者环路增益?(我知道放大器在设计的时候肯定都是闭环应用的多,但是什么时候没必要闭环应用?光验证ac和stb仿真是否一样的话有必要有回路吗?

weixin_44951108的博客 5万+

macOS Office 安装与激活完整指南:走对路径,装好跑顺

如果你想在 macOS 上完成 Office 安装与激活,却总在激活环节卡住,这个开源项目 [Microsoft-Office-For-MacOS](https://link.gitcode.com/i/48e1ecec51c5d33d0369702daecff81c) 值得放进工具箱。它把各版本 Office 的序列化器(Serializer)、许可证工具和优化脚本放在同一个仓库里,按 macO

gitblog_00940的博客 295

Winform从入门到精通(2)——Button(史上最全)

本文介绍winform中Button控件的详细用法,包括所有属性和事件

qq_34059233的博客 1万+

快速上手Autocxx:10分钟构建你的第一个Rust调用C++项目

Autocxx是一款强大的工具,能够帮助开发者实现Rust与C++之间安全且符合人体工程学的互操作,特别适合从现有的C++头文件驱动开发。本文将带你快速入门,在短短10分钟内完成你的第一个Rust调用C++项目。 ## 准备工作:搭建开发环境 在开始之前,确保你的系统满足以下要求: - 安装LLVM环境(可参考[LLVM安装指南](https://rust-lang.github.io/rus

gitblog_00445的博客 753

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

如何5分钟上手NextCoWork:从下载到跑通第一个Agent任务的完整教程

NextCoWork 是一款开源的编码型 Agent 桌面工作台,支持 Windows、macOS 和 Linux。它把 Agent 驱动的开发带到桌面端:多工作区并排打开、内置编辑器/终端/Git/浏览器工作台,以及一个带逐次审批链、权限可信的 Agent 内核。本教程带你从下载安装到跑通第一个 Agent 任务,全程约 5 分钟。 ## 一、NextCoWork 是什么?为什么值得装 如果

gitblog_00450的博客 817

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

RIOT 的 Rust 支持最小可运行验证:深入剖析 rust_minimal 测试

`tests/rust_minimal` 是 RIOT 操作系统中用于验证 **Rust 编写的代码能够在 RIOT 上真正运行**的最小测试用例:它通过一个只打印 `SUCCESS` 的极简 Rust 程序,验证从 Rust 源码到 RIOT 固件的整条工具链是否打通。本文以该测试为主线,结合仓库内的 Rust 源码、Cargo 配置、Makefile 构建规则与自动化测试脚本,讲解在 RIOT

gitblog_00342的博客 198

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深入理解 CXX 中的 std::vector<T> 绑定:从 CxxVector 的 Rust API 到 C++ 侧的安全互操作

**导读**:`std::vector<T>` 是 C++ 中最常用的动态数组容器,而在 CXX 安全互操作框架中,它的 Rust 侧绑定就是 `CxxVector<T>`。本文基于 cxx 仓库的官方文档、源码与测试,完整讲解 `CxxVector<T>` 的使用限制、Rust 侧完整 API、C++ 侧生成的桥接 shim 以及「C++ 向量 ↔ Rust 集合」双向转换的实战模式,并澄清 `

gitblog_01081的博客 94

Rust 外部文档属性:解读 RFC 1990 的 `[doc(include)]` 与 rustdoc 外部文档导入设计

Rust 长期以来通过文档注释(doc comments)配合 `rustdoc` 生成高质量 API 文档,但始终缺少一种机制:将文档内容从**外部文件**导入到源码中。RFC 1990(`external_doc`)正是针对这一缺口提出的语言级设计方案——通过 `#[doc(include = "路径")]` 属性,把 Markdown 文件在编译期展开为文档注释。本文将完整解析该 RFC 的

gitblog_00431的博客 794

RustTraining 宏编程实战:从 C/C++ 预处理器到 Rust 声明式宏、派生宏与过程宏的完整迁移指南

> 本文是 RustTraining 仓库中《Rust for C/C++ Programmers》课程([c-cpp-book](https://link.gitcode.com/i/0e93e3aea50b671c21390d398205c1cd))第 19 章的系统化展开。核心主题是:Rust 宏体系(`macro_rules!` 声明式宏、`#[derive]` 派生宏、属性宏、过程宏)如

gitblog_00403的博客 416

QuestDB 中的 sqllogictest:Rust 实现的 SQL 数据库正确性测试框架解析

本文围绕 QuestDB 仓库中 `core/rust/qdb-sqllogictest/sqllogictest` 这个 Rust crate 展开,讲解 sqllogictest 这一经典 SQL 逻辑测试框架的格式规范、解析器与运行器实现原理,并说明 QuestDB 如何通过 JNI 绑定将它用作 Java 单元测试的底层驱动。读完本文,你将掌握 `.slt` 测试文件的完整语法(state

gitblog_00202的博客 646

深入解析 anyhow:PRAXIST 火箭回收示例中基于 `std::error::Error` 的 Rust 应用级错误处理实战

本文以 PRAXIST 仓库中 vendor 的 [anyhow 1.0.104 README](https://link.gitcode.com/i/311535cc3519abe3c56e90360cffa799) 为核心依据,系统讲解 `anyhow::Error` 这一基于 trait object 的错误类型在 Rust 应用中的惯用姿势,并以其在 [rocket_booster_rec

gitblog_00231的博客 358

flipperzero-rs应用骨架解密:manifest清单、入口点与main函数完整指南

想用 Rust 在 Flipper Zero 上开发应用?flipperzero-rs 是目前最成熟的 Rust 绑定方案,但新手往往卡在第一步:为什么每个示例都要写 `manifest!` 和 `entry!`?应用到底是怎么启动的?本文将用通俗易懂的方式,拆解 flipperzero-rs 应用骨架的三大核心:**manifest 清单、入口点与 main 函数**,带你从零看懂一个 FAP(

gitblog_00854的博客 924

深入解析 rust-gpu 的 `spirv-std`:用 Rust 标准库思维编写 SPIR-V 着色器

`spirv-std` 是 [rust-gpu](https://link.gitcode.com/i/a59a05280c87a80f91c0d651c23df8cc) 项目中面向 SPIR-V 目标的“标准库”crate,它为着色器代码提供 `#![spirv(..)]` 入口属性、纹理与缓冲等 GPU 资源的访问 API,以及标量/向量/浮点/整数等抽象 trait。本文将以 [crates

gitblog_00409的博客 799

CXX 桥接中的 C++ 异常处理:Comprehensive Rust 课程 Android 互操作实战指南

在 Google Android 团队的 Rust 课程(Comprehensive Rust,本仓库)中,Android 互操作章节专门讲解了如何借助 [CXX crate](https://link.gitcode.com/i/116ca8f2708096abcb3904c22b6c53a0) 在 Rust 与 C++ 之间安全互操作。本指南聚焦其中 [C++ Error Handling](

gitblog_00008的博客 1007

rust-bindgen 实战指南:从 C/C++ 头文件自动生成 Rust FFI 绑定

`rust-bindgen` 是一款自动为 C(及部分 C++)库生成 Rust FFI 绑定的代码生成工具:你提供一个 C/C++ 头文件,它输出可直接编译调用的 Rust 代码,类型布局、函数签名、宏常量均由工具从 `libclang` 解析结果中推导,无需手写 `extern "C"` 与 `#[repr(C)]`。本文基于当前仓库(`bindgen` 0.73.1 / `bindgen-c

gitblog_01187的博客 616
上一篇: rust raw pointer使用方法(2)
下一篇: 用泛型实现rust返回类型自动推导
varding
博客等级 码龄17年 115粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值