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