5 个版本

使用旧的 Rust 2015

0.1.4 2022 年 5 月 4 日
0.1.3 2022 年 4 月 19 日
0.1.2 2022 年 4 月 4 日
0.1.1 2022 年 3 月 27 日
0.1.0 2022 年 3 月 8 日

#1 in #reproto

每月 39 次下载
用于 rsbind

MIT/Apache

205KB
6K SLoC

由于原始仓库已完全更改,我将其重命名。其原始名称是 GenCo

RsGen 是一个更简单的 Rust 代码生成器,专门为在 reproto 中使用而编写。

它不处理语言特定的语法,而是可以通过专用化执行一些基本需求。

  • 如有需要,处理导入。
  • 根据语言约定引用字符串。

示例

这是一个构建一些 JavaScript 的示例

#[macro_use]
extern crate rsgen;

use rsgen::Quoted;

fn main() {
    let mut file: Tokens<JavaScript> = Tokens::new();

    file.push("function foo(v) {");
    file.nested(toks!("return v + ", ", World".quoted(), ";"));
    file.push("}");

    file.push(toks!("foo(", "Hello".quoted(), ");"));

    println!("{}", file.to_string().unwrap());
}

运行此示例将打印

function foo(v) {
  return v + ", World";
}
foo("Hello");

语言支持

本节包含了一些受支持语言的示例代码。

有关更多信息,请参阅 docs.rs/genco

Dart

支持导入名称的简单功能。

#[macro_use]
extern crate rsgen;

fn main() {
    use rsgen::dart::imported;

    let m = imported("dart:math").alias("m");
    let sqrt = m.name("sqrt");

    let mut t = toks!();
    t.push("void main() {");
    t.nested({
        let mut body = toks!();
        body.push(toks!("print(", "The Square Root Is:".quoted(), " + ", sqrt, "(42));"));
        body
    });
    t.push("}");
}

无运行时依赖