5个版本 (3个破坏性变更)
0.5.0 | 2020年6月18日 |
---|---|
0.4.0 | 2020年1月14日 |
0.3.0 | 2019年10月20日 |
0.2.1 | 2018年8月6日 |
0.2.0 | 2018年8月2日 |
#391 在 文件系统
每月3,231次下载
在 12 个Crates中使用 (9直接使用)
28KB
572 行
resource
“resource”Crates包含用于在发布模式下静态包含资源,但在调试模式下动态加载它们的宏。
这主要用于游戏,允许您在发布构建中避免文件I/O,同时在调试模式下动态重新加载资源。
您可以通过使用force-static
和force-dynamic
特性来更改默认行为,无论是调试模式还是发布模式。
当资源被静态包含时,它们在内存中是常量,并包含在最终的二进制可执行文件中。这允许您避免将单个文件与发布应用程序一起打包。
当资源被动态包含时,它们在运行时从文件中加载,因此可以在应用程序运行时切换和更新。
用法
[dependencies]
resource = "~0.4.0"
基本用法
use resource::{resource, resource_str};
let text = resource_str!("assets/text_asset.txt");
println!("Text is: {}", text);
let bytes = resource!("assets/binary_asset.bin");
println!("Binary data is: {:?}", bytes);
let (a, b, c) = resource_str!(("a.txt", "b.txt", "c.txt"));
println!("Contents of the three files are: `{}`, `{}`, `{}`");
let decoded_images = resource!(["a.png", "b.png", "c.png"], |image: &[u8]| decode(image));
重新加载
use resource::resource_str;
let mut message = resource_str!("message.txt");
loop {
println!("Hello: {}", message.as_ref());
// Wait one second
std::thread::sleep(std::time::Duration::from_secs(5));
// You can edit the contents of message.txt
// Reload the message so the new version is printed next iteration
message.reload_if_changed();
}
依赖项
~14KB