1 use crate::runtime::vm::{SharedMemory, VMMemoryImport};
2 
3 /// The value of an export passed from one instance to another.
4 pub enum Export {
5     /// A function export value.
6     Function(crate::Func),
7 
8     /// A table export value.
9     Table(crate::Table),
10 
11     /// An unshared memory export value.
12     Memory(crate::Memory),
13 
14     /// A shared memory export value.
15     SharedMemory(SharedMemory, VMMemoryImport),
16 
17     /// A global export value.
18     Global(crate::Global),
19 
20     /// A tag export value.
21     Tag(crate::Tag),
22 }
23 
24 pub enum ExportMemory {
25     Unshared(crate::Memory),
26     Shared(SharedMemory, VMMemoryImport),
27 }
28 
29 impl ExportMemory {
unshared(self) -> Option<crate::Memory>30     pub fn unshared(self) -> Option<crate::Memory> {
31         match self {
32             ExportMemory::Unshared(m) => Some(m),
33             ExportMemory::Shared(..) => None,
34         }
35     }
shared(self) -> Option<SharedMemory>36     pub fn shared(self) -> Option<SharedMemory> {
37         match self {
38             ExportMemory::Unshared(_) => None,
39             ExportMemory::Shared(m, _) => Some(m),
40         }
41     }
42 }
43