19 个版本 (9 个重大变更)

新版本 0.9.0 2024年8月20日
0.7.1-indev2024年8月8日
0.6.0-indev2024年7月26日

#54 in 模板引擎

Download history 119/week @ 2024-07-12 1107/week @ 2024-07-19 322/week @ 2024-07-26 378/week @ 2024-08-02 83/week @ 2024-08-09 141/week @ 2024-08-16

1,023 每月下载量

Apache-2.0

145KB
3.5K SLoC

KotlinPoet-RS

docs.rs Crates.io Total Downloads Crates.io Total Downloads GitHub top language

Crates.io License GitHub commit activity

开始使用

添加依赖项

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

没有运行时依赖项