5 个版本 (2 个稳定版)
1.1.0 | 2020 年 7 月 2 日 |
---|---|
1.0.0 | 2020 年 3 月 17 日 |
0.2.1 | 2019 年 12 月 13 日 |
0.2.0 | 2019 年 12 月 13 日 |
0.1.0 | 2019 年 12 月 12 日 |
#752 在 游戏开发
每月 186 次下载
用于 kayak_ui
25KB
358 行
resources
此包提供 Resources
结构体:一个容器,最多存储每种类型的单个值,并允许安全地、并发地访问任何一个值,同时不违反借用规则。
它旨在用作存储与 ECS(实体组件系统)中任何特定实体不相关联的数据的存储实现,但仍需要系统并发访问。
Cargo 功能
fetch
- 当启用时,公开Resources::fetch()
,允许用一行代码检索最多 16 个资源。
示例
use resources::*;
struct SomeNumber(usize);
struct SomeString(&'static str);
fn main() {
let mut resources = Resources::new();
resources.insert(SomeNumber(4));
resources.insert(SomeString("Hello!"));
let resources = resources; // This shadows the mutable binding with an immutable one.
{
let mut some_number = resources.get_mut::<SomeNumber>().unwrap();
let mut some_string = resources.get_mut::<SomeString>().unwrap();
// Immutably borrowing a resource that's already borrowed mutably is not allowed.
assert!(resources.get::<SomeNumber>().is_err());
some_number.0 = 2;
some_string.0 = "Bye!";
}
// The mutable borrows now went out of scope, so it's okay to borrow again however needed.
assert_eq!(resources.get::<SomeNumber>().unwrap().0, 2);
// Multiple immutable borrows are okay.
let some_string1 = resources.get::<SomeString>().unwrap();
let some_string2 = resources.get::<SomeString>().unwrap();
assert_eq!(some_string1.0, some_string2.0);
}
依赖项
~0.6–1MB
~15K SLoC