3个版本
0.1.2 | 2024年3月13日 |
---|---|
0.1.1 | 2024年3月12日 |
0.1.0 | 2024年3月12日 |
#417 在 过程宏
每月 25次下载
15KB
101 行
Caravel导出使用
cargo new --lib your_caravel_lib
cargo add caravel_export_poc
cargo add anyhow
cargo add serde --features derive
cargo add serde_json
确保你的Cargo.toml在[lib]部分有下面的条目。
crate-type = ["cdylib"]
将以下过程宏放在你想要暴露给Caravel的库中的结构体上。
#[caravel_resource]
#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct File {
pub path: PathBuf,
pub state: FileState,
pub owner: Option<String>,
pub group: Option<String>,
}
然后你必须实现以下签名的validate和apply函数在你的资源上。
impl File {
fn validate(&self) -> Result<()> {
Ok(())
}
fn apply(&self) -> Result<()> {
Ok(())
}
}
当你编译库并使用Caravel时,生成的.so,.dylib,.dll应该与你的资源同名。例如上面的示例库:File.so
然后你可以将其放入Caravel项目的caravel_modules目录中!
依赖项
~275–720KB
~17K SLoC