不得不说,Rust 的宏给了我耳目一新的感觉。这么强大的宏,鄙人还是第一次见。 受到 commander.js 和 rocket.rs 的启发,我想能不能把 rust 的宏用于开发 CLI 程序,在经过一段时间的思考和行动之后,终于还是成功了。 这对于我而言是个挑战,毕竟 Rust 这门语言我才接触不久。
github 地址: commander-rust 主页:commadner-rust 主页 (主页由于没时间了,没做移动端适配。。。)
大概的构思是这样的,我想开发 cli 可以这样开发:
#![feature(proc_macro_hygiene)] use commander_rust::{option, command, entry, Cli, run}; #[option(-c, --cn, "Chinese")] #[option(-e, --en, "English")] #[option(-j, --jp, "Japanese")] #[command(hello, "Say hello")] fn hello(cli: Cli) { if cli.has("cn") { println!("你好,世界"); } else if cli.has("en") { println!("hello, world!"); } else if cli.has("jp") { println!("こんにちは、世界"); } } #[entry] fn main() { run!(); }
这样的话,我个人觉得逻辑和布局上都比较清楚。 大家有什么好的意见吗?不要脸地求 star。。。
![]() | 1 ArianX 2019-05-02 20:07:47 +08:00 请问大佬进入主页时的那段代码动画是怎么搞出来的喔 |
2 VDimos OP ![]() @ArianX requestAnimationFrame,然后自己定义(抄袭)了一个三次贝塞尔曲线的函数,然後递归调用,代码在 homepage 里面,很简单的 |
3 Skye347 2019-05-02 20:11:56 +08:00 via Android 个人还是喜欢 structopt 的风格,能更好地利用 ide 之类的。大佬看能不能结合一下 |
![]() | 5 HeavenlyChorus 2019-05-02 20:53:53 +08:00 资词一下 |
6 dodo2012 &nsp;2019-05-02 20:58:52 +08:00 rust 写起来, 这个所有权和借用一直搞的很头大, |