gpt4 book ai didi

rust - 如何从 crate/module/functions 派生代码?

转载 作者:行者123 更新时间:2023-11-29 08:25:03 24 4
gpt4 key购买 nike

据我所知,Rust 支持 #[derive] 属性在编译时从数据结构生成代码。我如何为整个 crate、模块或函数生成代码?此处不允许使用 #[derive] 属性。

我想在项目中生成一个涉及多个项目(结构/枚举/函数)的函数。

例如,对于此处给定的示例模块

#[derive(MyAgg)]
mod AAA {
struct BBB {}
struct CCC {}
fn ddd() {}
}

我想制作这个。

fn example1() {
print("{:?}", AAA::BBB {});
print("{:?}", AAA::CCC {});
AAA::ddd()
}

这个例子没有意义,但我认为它说明了问题。

最佳答案

#[derive] 属性不允许在模块上使用,只能在结构、枚举和联合上使用:

error: `derive` may only be applied to structs, enums and unions
--> src/main.rs:1:1
|
1 | #[derive(MyAgg)]
| ^^^^^^^^^^^^^^^^

Playground

关于扩展 #[derive] 宏的更多信息可以在 Procedural Macros (and custom Derive) 中找到。在 Rust 书中。

但是,您可以创建自己的程序宏。您可以咨询RFC理解proc-macros。看看其他 crate 也没什么坏处 SerdeDerivative .

关于rust - 如何从 crate/module/functions 派生代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com