#assets #async #asset-manager #no-std

no-std goods-dataurl

'data:' URL近似源为'goods'资产管理器

1个不稳定版本

0.1.0 2021年2月1日

#9 in #asset-manager

MIT/Apache

4KB

goods

适用于多种环境的易于使用的资产管理器。

crates docs actions MIT/Apache loc

适用于多种环境的易于使用的资产管理器。

目标

本库编写时考虑以下目标:

  • 内置功能。
    扩展库提供各种有用的数据源,如FileSourceReqwestSource。基于Serde的Formatgoods-jsongoods-yamlgoods-ron提供。

  • 可扩展性。
    可以为任何资产类型实现多个Format特质,包括外部资产类型。
    例如,JsonFormatYamlFormatRonFormat为任何资产类型实现了Format特质,其中中间表示实现了serde::de::DeserializeOwned

  • 支持WebAssembly。
    此库和一些扩展库与WASM兼容,资产加载无需线程即可工作。以Local前缀的类型和特质满足SendSync要求。它们可以用于单线程环境。专为WASM添加,其中!Send!Sync类型很常见。

  • 处理异步数据源。
    原始数据源实现了Source特质。 Source::read方法返回一个由轮询资产句柄驱动的future。

  • 快速编译。
    核心库(goods)在cargo clean后构建大约需要1秒。

非目标

本库并不旨在支持所有可能的功能。以下是一些功能的列表

  • 热重载
    目前没有计划支持热重载。

功能

除了核心特性和类型之外,所有开箱即用的功能都存在于自己的 goods-* 包中。

来源

格式

  • goods-json - 提供 JsonFormat - 将原始字节数据视为 JSON 文档,并通过 serde 反序列化资产表示。
  • goods-yaml - 提供 YamlFormat - 将原始字节数据视为 YAML 文档,并通过 serde 反序列化资产表示。
  • goods-ron - 提供 RonFormat - 将原始字节数据视为 RON 文档,并通过 serde 反序列化资产表示。

示例

提供了一些简单的示例,以学习如何使用此包。

fs 示例

演示如何使用 DataUrlSource 构建注册表并从其中加载简单的资产。

fs 示例

演示如何使用 FileSource 构建注册表并从其中加载简单的资产。

reqwest 示例

异步示例,使用 tokioreqwest 包通过 HTTP 协议加载资产。

fetch 示例

演示如何使用 Fetch API 在浏览器中加载资产。

此示例可以使用 build-wasm32.shbuild-wasm32.batexamples 目录中构建。
wasm-bindgen(兼容版本)必须位于 PATH

cd examples
build-wasm32 fetch
python3 server.py

然后在您最喜欢的浏览器中打开 https://127.0.0.1:8000/fetch.html。加载的资产必须在页面上显示。否则,查看日志中的错误。

许可证

此存储库根据您的选择受以下任何一个许可证的许可:

贡献许可

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,应双授权,无需附加条款或条件。

依赖项

~1.5MB
~22K SLoC