19 个版本 (9 个重大变更)
新版本 0.9.0 | 2024年8月20日 |
---|---|
0.7.1-indev | 2024年8月8日 |
0.6.0-indev | 2024年7月26日 |
#54 in 模板引擎
1,023 每月下载量
145KB
3.5K SLoC
KotlinPoet-RS
开始使用
添加依赖项
cargo add kotlin-poet-rs
阅读文档
开始编写诗篇
具有初始化器的常量属性
use kotlin_poet_rs::spec::{CodeBlock, Name, Property, Type};
use kotlin_poet_rs::io::RenderKotlin;
let property = Property::new(Name::from("name"), Type::string())
.constant(true)
.initializer(CodeBlock::atom("\"Alex\""));
println!("{}", property.render_string());
将会打印
public final const val name: kotlin.String = "Alex"
支持的功能
要查看当前支持的功能以及未来计划的功能,请查看路线图。
哲学
显式优于隐式
RustPoet 不会生成你没有请求它生成的代码。没有魔法导入解析,没有魔法类型推断,没有魔法任何东西。
例如,正如你在“开始使用”部分看到的示例中,生成的代码将为“name”属性具有显式的完全限定类型名称。同样的原则也适用于“public”和“final”关键字。
编写者而非读者
RustPoet 是设计给人使用的,以生成人类可以阅读的代码。它不是用来以某种抽象方式描述 Kotlin 代码的。这个库是只写模式,不要用它来表示和操作 Kotlin 代码。
KotlinPoet / JavaPoet 存在问题
本项目承认原始的 KotlinPoet 和 JavaPoet 存在一些问题。它的目标是修复这些问题,并提供更好的 API 来生成 Kotlin 代码。我们不追求提供完全相同的 API。
没有内置的 IO
Rust IO 非常灵活,有多种形式。因此,此项目不提供任何 IO 实现。
没有依赖项
此库致力于尽可能小。它不依赖于任何其他库,除了 std
。