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
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("}");
}