2 个版本
0.1.1 | 2021 年 5 月 12 日 |
---|---|
0.1.0 | 2021 年 5 月 12 日 |
在 配置 中排名 #612
13KB
158 行代码(不包括注释)
elfredo
任何使用 elfredo 的项目都有两个主要组件
- 自定义你的嵌入编辑器以匹配你的数据类型(步骤 1)
- 通过调用
get_embedded_data
方法来检索嵌入数据(步骤 2)
实现这两个步骤后,你将得到两个二进制文件
- [应用程序可执行文件].elf - 可编辑的应用程序
- [嵌入编辑器可执行文件].elf - 你用于更改嵌入数据的二进制文件
集成步骤(请参阅 ./example
)
- 在嵌入编辑器二进制文件中编写你的可配置数据结构
// my_embeditor.rs
use elfredo::embeditor::run_embeditor;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Person {
name: String,
id: u32,
}
fn main() {
// This will print the embedded data if exists
if let Err(err) = run_embeditor::<Person>() {
panic!("{}", err);
}
}
- 通过使用 elfredo 的 API 读取配置
// main.rs
use elfredo::get_embedded_data;
mod my_embeditor;
use my_embeditor::Person;
fn main() -> Result<(), failure::Error> {
let person = get_embedded_data::<Person>().unwrap();
println!("{:?}", person);
Ok(())
}
- 将新数据嵌入到 elf 中
john@ubuntu:/mnt/hgfs/elfredo/example$ cat person.json
{
"name": "Ronald",
"id": 5
}
john@ubuntu:/mnt/hgfs/elfredo/example$ cargo run --bin embeditor ../target/debug/example person.json
Compiling elfredo v0.1.0 (/mnt/hgfs/elfredo)
Compiling example v0.1.0 (/mnt/hgfs/elfredo/example)
Finished dev [unoptimized + debuginfo] target(s) in 24.99s
Running `/mnt/hgfs/elfredo/target/debug/embeditor ../target/debug/example person.json`
"/tmp/.tmpXh5QHg"
john@ubuntu:/mnt/hgfs/elfredo/example$ ../target/debug/example
Person { name: "Ronald", id: 5 }
依赖关系
~8–18MB
~253K SLoC