4 个版本
0.1.3 | 2019年5月20日 |
---|---|
0.1.2 | 2019年5月18日 |
0.1.1 | 2019年5月18日 |
0.1.0 | 2019年5月18日 |
#556 in 配置
10KB
75 行
conf-embed
一个实验性的 Rust crate,用于将用户配置(或任何内容)嵌入程序的可执行文件中。
它基本上做了描述中所说的。它允许您获取和更改存储在程序可执行文件中的某些数据,这意味着您不需要使用任何额外的文件来存储用户配置。
注意:此 crate 是半稳定的,但由于其性质,它也是不安全的。请谨慎使用。
例如:要使用此 crate,您首先设置一个配置(这可以是任何字符串切片,但在此情况下我使用 JSON 数据)
conf_embed::new_config("{\"arbitrary_data\": \"arbitrary_value\"").unwrap();
当运行此命令时,将生成一个新的具有与当前相同名称的可执行文件,并将当前的一个重命名为带有 .old
的结尾。
例如,如果上面的代码在 test.exe
上运行,则当前的 test.exe
将重命名为 test.exe.old
,并且 test.exe
将更新为新的配置。
要获取配置,只需使用
println!("Current config: '{}'", conf_embed::get_config().unwrap());
这同样适用于所有平台。
此外,上述两个函数都返回一个 io::Result<()>
,这意味着错误可以像这样传播
use std::io;
use std::process;
fn main() -> io::Result<()> {
println!("Current config: '{}'", conf_embed::get_config()?);
println!("Enter a new config:");
let mut buf = String::new();
io::stdin().read_line(&mut buf)?;
println!("Setting new config...");
conf_embed::new_config(&buf)?;
println!("Config set, exiting.");
process::exit(0);
}
当使用此 crate 时,您应该知道一些限制。
首先,字符串 ----CONFIG-REF-START----
必须不在配置集中。如果是,将返回 Err
。
此外,配置末尾之后的所有 0 序列都将被忽略。例如:如果您的配置是 test test0000000
,则它将解释为 test test
。
最后,配置必须不超过 2024
字节。此限制是为了安全、速度,以及保持二进制文件大小小。