# Fire-rs [![](https://img.shields.io/github/workflow/status/fun4wut/fire-rs/Test%20and%20Publish)](https://github.com/fun4wut/fire-rs/actions) [![](https://img.shields.io/badge/crates.io-v0.2.2--alpha.0-orange.svg?longCache=true)](https://crates.io/crates/fire-rs) [![](https://docs.rs/fire-rs/badge.svg?version=0.2.2-alpha.0)](https://docs.rs/fire-rs) 受到 [Python-fire]() 的启发,写了Rust版本。 利用过程宏,在编译期修改 `AST` 来达成。 几个重要的package: 1. syn:用于解析AST 2. quote:将元素转化为 `TokenStream` ## Usage ```rust use fire_rs::fire; #[fire] fn hello(a: i64, b: i64, c: String) { println!("{} is {}", a + b, c) } fn main() { hello_fire();// 利用宏生成出的新函数 } ``` 命令行输入 `cargo run -- 2 4 cool` 或 `cargo run -- --a 2 --b 4 --c cool` 输出 `6 is cool` ## TODO - [x] 支持普通函数 - [x] 支持命名参数 - [x] 文档 - [x] 测试 - [x] 发布至`crates.io` - [x] CI/CD - [ ] &str用作参数 - [ ] 取消`unused`警告 - [ ] 支持默认参数 - [ ] 多函数 - [ ] 错误处理