1 个不稳定版本
0.1.0 | 2023年6月6日 |
---|
在 解析器实现 中排名 2320
每月下载量 35
44KB
939 行
restbl
一个简单的库,用于处理来自《塞尔达传说:王国之泪》的 RSTB/RESTBL(资源大小表)文件。功能
- 快速、零分配解析器
- 可选的
alloc
功能,支持可编辑的表,可以序列化为二进制或(使用yaml
功能)YAML。 no_std
支持(可选std
功能)- 可选的 Serde 支持(
serde
功能) aarch64-nintendo-switch-freestanding
支持(没有std
功能)
示例用法
use restbl::bin::ResTblReader;
let bytes = std::fs::read("test/ResourceSizeTable.Product.110.rsizetable").unwrap();
// Setup the quick, zero-allocation reader
let reader = ResTblReader::new(bytes.as_slice()).unwrap();
// Lookup an RSTB value
assert_eq!(
reader.get("Bake/Scene/MainField_G_26_43.bkres"),
Some(31880)
);
#[cfg(feature = "alloc")]
{
use restbl::ResourceSizeTable;
// Parse RSTB into owned table
let mut table = ResourceSizeTable::from_parser(&reader);
// Set the size for a resource
table.set("TexToGo/Etc_BaseCampWallWood_A_Alb.txtg", 777);
// Check the size
assert_eq!(
table.get("TexToGo/Etc_BaseCampWallWood_A_Alb.txtg"),
Some(777)
);
// Dump to YAML, if `yaml` feature enabled
#[cfg(feature = "yaml")]
{
let json_table = table.to_text();
// From YAML back to RSTB
let new_table = ResourceSizeTable::from_text(&json_table).unwrap();
}
}
为 Switch 编译
要为 Switch 编译,您需要使用 aarch64-nintendo-switch-freestanding
目标。不支持 std
功能,因此您需要使用 --no-default-features
。由于 cargo nx
似乎不支持传递功能标志,您需要自行运行完整命令,如下所示
cargo build -Z build-std=core,compiler_builtins,alloc --target aarch64-nintendo-switch-freestanding --no-default-features
许可证
本软件根据 GNU 通用公共许可证第 3 版或更高版本许可。
许可证:GPL-3.0-or-later
依赖项
~1.3–1.8MB
~40K SLoC