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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
use RefCell;
/// Small data structure to help extend the lifetime of a slice to a higher
/// scope.
///
/// This is currently used during component translation where translation in
/// general works on a borrowed slice which contains all input modules, but
/// generated adapter modules for components don't live within the original
/// slice but the data structures are much easier if the dynamically generated
/// adapter modules live for the same lifetime as the original input slice. To
/// solve this problem this `ScopeVec` helper is used to move ownership of a
/// `Vec<T>` to a higher scope in the program, then borrowing the slice from
/// that scope.