rust-zw3d-macros
当前版本:Alpha(框架阶段)。API 仍可能调整,欢迎 Issue/PR(https://gitee.com/rust-cad/rust-zw3d)。
为 rust-zw3d 提供的过程宏。
导出的属性宏
#[cmd]
将函数注册为 ZW3D 命令。支持 (&str, i32, i32) 参数的任意子集组合,以及返回 i32 或 () 的函数。
支持的函数签名:
fn() -> i32/fn()fn(i32) -> i32/fn(i32)fn(i32, i32) -> i32/fn(i32, i32)fn(&str) -> i32/fn(&str)fn(&str, i32) -> i32/fn(&str, i32)fn(&str, i32, i32) -> i32/fn(&str, i32, i32)
宏参数形态:
#[cmd]:使用函数名作为命令名,默认 code#[cmd("Alias")]:指定命令名#[cmd(name = "Alias", code = expr)]:完整配置
#[callback]
将函数注册为 ZW3D 回调,固定签名 fn(&str, i32, i32) -> i32。
宏参数形态:
#[callback]:使用函数名作为回调名#[callback("Name")]:指定回调名
用法示例
use *;
// 不同参数组合示例
// 无返回值示例
// 自定义名称和 code
// 回调示例
更多示例请参考 samples/hello/src/lib.rs。
实现要点
- 基于
inventory收集命令/回调条目,在运行时由register_*宏统一注册 cmd和callback都会生成统一的extern "C"包装函数用于与 SDK 对接- 宏会自动分析函数签名,提取需要的参数,并处理类型转换
- 返回
()的函数会自动返回0