1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use ;
/// Tracks which resources are *provided* by plugins, so that a system
/// requiring one of them can be told apart from a system requiring a
/// resource nothing was ever going to insert.
///
/// Plugins call [`provides`](Self::provides) for each resource they
/// (eventually) insert. [`App::build`](crate::app::App::build) then walks
/// every registered system's [`System::requires`](crate::ecs::system::System::requires)
/// against this table — see [`App::validate_requirements`](crate::app::App::validate_requirements)
/// — panicking up front if any requirement has no provider, instead of
/// leaving it to surface as a runtime panic the first time that system's
/// stage runs.
pub