#asset-manager #assets #http-request #async #source #goods #fetch

goods-reqwest

基于'reqwest'的'goods'资源管理器源码

1个不稳定版本

0.1.0 2021年2月1日

#6#asset-manager

MIT/Apache

4KB
70

goods

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

crates docs actions MIT/Apache loc

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

目标

本库编写时考虑以下目标

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

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

  • 支持WebAssembly。
    本库和一些扩展库与WASM兼容,并且不需要线程来加载资产。带有Local前缀的类型和特质满足SendSync要求。它们可以在单线程环境中使用。专门为WASM添加,其中!Send!Sync类型很常见。

  • 与异步数据源一起工作。
    原始数据源实现了 Source 特性。 Source::read 方法返回一个future,它将通过轮询处理资源来驱动完成。

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

非目标

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

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

功能

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

来源

格式

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

示例

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

fs 示例

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

fs 示例

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

reqwest 示例

异步示例,使用HTTP协议和 tokio 以及 reqwest crate加载资产。

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许可证定义,您有意提交给工作内容并由您定义的贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~4–18MB
~234K SLoC