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

no-std goods-fetch

用于 'goods' 资产管理器的 Fetch-API 源

1 个不稳定版本

0.1.0 2021年2月1日

#12#asset-manager

MIT/Apache

6KB
92 行代码(不含注释)

goods

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

crates docs actions MIT/Apache loc

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

目标

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

  • 包含电池。
    扩展库提供各种有用的数据源,如 FileSourceReqwestSource。基于 Serde 的 Formatgoods-jsongoods-yamlgoods-ron 提供。

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

  • 支持 WebAssembly。
    此库和某些扩展库是 WASM 兼容的,并且不需要线程即可加载资产。前缀为 Local 的类型和特性满足 SendSync 的要求。它们可以用于单线程环境。特别添加以支持 WASM,其中常见的类型是 !Send!Sync

  • 处理异步数据源。
    原始数据源实现 Source 特性。 Source::read 方法返回一个未来,它将通过轮询资产句柄来驱动完成。

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

非目标

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

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

功能

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

来源

格式

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

示例

提供了一些简单的示例,以学习如何使用这个crate。

fs 示例

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

fs 示例

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

reqwest 示例

异步示例,使用 tokioreqwest crate通过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许可证定义,您有意提交的任何贡献,均应按照上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~12MB
~228K SLoC