7个版本 (重大更新)
0.7.0 | 2023年7月22日 |
---|---|
0.6.0 | 2023年7月18日 |
0.5.0 | 2023年3月28日 |
0.4.0 | 2023年2月27日 |
0.1.1 | 2021年3月2日 |
#289 in FFI
每月163次 下载
40KB
478 行
Camo
Camo是一个库,用于将Rust类型定义转换为其他语言对应的定义。
-
抽象语法树 - Camo提供了一系列数据结构来描述Rust语法的子集。语法树以
core::Container
为根,该类型通过core::Camo
特质提供。 -
派生宏 -
derive::Camo
派生宏自动创建类型对应的语法树。该宏考虑了serde
属性,确保生成的类型准确描述serde
将生成的值。 -
TypeScript后端 -
typescript
模块提供了一个现成的TypeScript后端。将core::Container
转换为typescript::Definition
,并将其写入文件。
入门
将Camo添加为依赖项
# `derive` is included by default
cargo add camo
# optionally add the typescript backend
cargo add camo --features typescript
将Camo
派生宏添加到您的类型中
use camo::Camo;
#[derive(Camo)]
struct Book {
title: String,
author: String,
page_count: usize,
chapters: Vec<String>,
}
使用生成的 Camo::camo()
实现
fn main() {
let book = Book::camo();
println!("{:?}", book);
}
启用 typescript
功能,创建 TypeScript 定义
use camo::{
/* ... */
typescript::Definition,
};
/* ... */
fn main() {
/* ... */
let ty: Definition = book.into();
println!("{}", ty);
// interface Book {
// title: string;
// author: string;
// page_count: number;
// chapters: string[];
// }
}
更多示例请参阅 这里。
功能
功能 | 默认 | 描述 |
---|---|---|
derive |
是 | 启用 derive::Camo derive 宏。 |
typescript |
否 | 启用 TypeScript 后端,基于 typescript::Definition 。 |
软件包
本项目由多个软件包组成,以便组织功能。
请注意,只有 camo
是针对通用用途的。
软件包 | 描述 |
---|---|
camo |
此软件包整合了子软件包,是唯一针对通用用途的软件包。它公开了 camo-core ,并且可以通过功能开关可选地公开 camo-derive 和 camo-typescript 。 |
camo-core |
此软件包定义了 camo 核心的 AST,因此是其他软件包构建的基础。 |
camo-derive |
此软件包定义了 derive 宏 Camo 。 |
camo-typescript |
此软件包实现了从 Camo AST 到 TypeScript 定义的转换层,可以直接写入,例如文件。 |
许可证
camo
在 MIT 许可证的条款下分发。有关详细信息,请参阅 LICENSE。
依赖项
~110KB