| Crates.io | rust-zw3d-macros |
| lib.rs | rust-zw3d-macros |
| version | 0.1.0-alpha.12 |
| created_at | 2025-10-12 11:54:14.985383+00 |
| updated_at | 2025-12-11 03:03:56.191425+00 |
| description | 为 rust-zw3d 提供的过程宏:#[cmd], #[callback] |
| homepage | https://gitee.com/rust-cad/rust-zw3d |
| repository | https://gitee.com/rust-cad/rust-zw3d |
| max_upload_size | |
| id | 1879201 |
| size | 18,615 |
当前版本: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 rust_zw3d::*;
// 不同参数组合示例
#[cmd]
fn cmd_no_params() -> i32 { 0 }
#[cmd]
fn cmd_one_i32(code: i32) -> i32 { code }
#[cmd]
fn cmd_two_i32(a: i32, b: i32) -> i32 { a + b }
#[cmd]
fn cmd_with_name(name: &str) -> i32 {
cvxMsgDisp(name);
0
}
#[cmd]
fn cmd_full(name: &str, a: i32, b: i32) -> i32 {
cvxMsgDisp(&format!("{}: {} + {}", name, a, b));
a + b
}
// 无返回值示例
#[cmd]
fn cmd_void(code: i32) {
cvxMsgDisp(&format!("Code: {}", code));
}
// 自定义名称和 code
#[cmd(name = "HELLO", code = 100.0)]
fn hello() {
cvxMsgDisp("Hello ZW3D!");
}
// 回调示例
#[callback("OnEvent")]
fn on_event(name: &str, a: i32, b: i32) -> i32 { 0 }
更多示例请参考 samples/hello/src/lib.rs。
inventory 收集命令/回调条目,在运行时由 register_* 宏统一注册cmd 和 callback 都会生成统一的 extern "C" 包装函数用于与 SDK 对接() 的函数会自动返回 0