Rust 版本的 commander.js,了解一下?

2019-05-02 19:55:38 +08:00
 VDimos

不得不说,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。。。

2390 次点击
所在节点    分享创造
6 条回复
ArianX
2019-05-02 20:07:47 +08:00
请问大佬进入主页时的那段代码动画是怎么搞出来的喔
VDimos
2019-05-02 20:10:49 +08:00
@ArianX requestAnimationFrame,然后自己定义(抄袭)了一个三次贝塞尔曲线的函数,然後递归调用,代码在 homepage 里面,很简单的
Skye347
2019-05-02 20:11:56 +08:00
个人还是喜欢 structopt 的风格,能更好地利用 ide 之类的。大佬看能不能结合一下
VDimos
2019-05-02 20:17:41 +08:00
@Skye347 好主意,我当时也有这个想法
HeavenlyChorus
2019-05-02 20:53:53 +08:00
资词一下
dodo2012
2019-05-02 20:58:52 +08:00
rust 写起来, 这个所有权和借用一直搞的很头大,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/560576

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX