#ast #json #exporter #rust

ronky

将 Rust AST 的部分导出为 JSON

7 个版本

0.0.6-a2024年8月19日
0.0.5-a2024年8月19日
0.0.1-a2024年7月30日

#898开发工具

Download history 93/week @ 2024-07-10 75/week @ 2024-07-24 46/week @ 2024-07-31 121/week @ 2024-08-07 377/week @ 2024-08-14

每月 619 次下载

GPL-3.0 或更高版本

18KB

Ronky - 将 Rust 定义导出到其他语言的简单方法

示例

还有很多工作要做,但以下是一个简单示例,说明我的想法。

以下代码及其输出

#[derive(Export)]
struct Human {
    name: String,
    age: u32,
    friends: Vec<Human>,
    pets: Vec<Pet>,
}

#[derive(Export)]
struct Pet {
    name: String,
    species: String,
}

结果如下 JSON

{
  "types": [
    {
      "name": "Human",
      "fields": [
        {
          "name": "name",
          "type": "String"
        },
        {
          "name": "age",
          "type": "u32"
        },
        {
          "name": "friends",
          "type": "list"
          "of": ["Human"],
        },
        {
          "name": "pets",
          "type": "list"
          "of": ["Pet"],
        }
      ]
    },
    {
      "name": "Pet",
      "fields": [
        {
          "name": "name",
          "type": "String"
        },
        {
          "name": "species",
          "type": "String"
        }
      ]
    }
  ]
}

然后可以转换为以下 TypeScript(或任何支持的语言)

interface Human {
  name: string;
  age: number;
  friends: Human[];
  pets: Pet[];
}

interface Pet {
  name: string;
  species: string;
}

依赖项

~0.8–1.6MB
~36K SLoC