mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-12 08:31:21 +00:00
Improve some doc comments relating to type-safe indexing
This commit is contained in:
@ -174,16 +174,21 @@ pub struct ImportName {
|
||||
pub name_index: NameIndex,
|
||||
}
|
||||
|
||||
/// Kinds of export indexes.
|
||||
/// A wrapper around the [`TypedIndex`]es for Wasm functions, Wasm memories,
|
||||
/// Wasm globals, and Wasm tables.
|
||||
///
|
||||
/// Used in [`ModuleInfo`] to access function signatures ([`SigIndex`]s,
|
||||
/// [`FuncSig`]), [`GlobalInit`]s, [`MemoryDescriptor`]s, and
|
||||
/// [`TableDescriptor`]s.
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum ExportIndex {
|
||||
/// Function export index.
|
||||
/// Function export index. Used to map to things relating to Wasm functions.
|
||||
Func(FuncIndex),
|
||||
/// Memory export index.
|
||||
/// Memory export index. Used to map to things relating to Wasm memories.
|
||||
Memory(MemoryIndex),
|
||||
/// Global export index.
|
||||
/// Global export index. Used to map to things relating to Wasm globals.
|
||||
Global(GlobalIndex),
|
||||
/// Table export index.
|
||||
/// Table export index. Used to map to things relating to Wasm tables.
|
||||
Table(TableIndex),
|
||||
}
|
||||
|
||||
@ -218,7 +223,7 @@ pub struct StringTableBuilder<K: TypedIndex> {
|
||||
}
|
||||
|
||||
impl<K: TypedIndex> StringTableBuilder<K> {
|
||||
/// Creates a new `StringTableBuilder`.
|
||||
/// Creates a new [`StringTableBuilder`].
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
map: IndexMap::new(),
|
||||
@ -250,7 +255,7 @@ impl<K: TypedIndex> StringTableBuilder<K> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Finish building the `StringTable`.
|
||||
/// Finish building the [`StringTable`].
|
||||
pub fn finish(self) -> StringTable<K> {
|
||||
let table = self
|
||||
.map
|
||||
@ -291,7 +296,7 @@ impl<K: TypedIndex> StringTable<K> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Namespace index.
|
||||
/// A type-safe way to get namespaces from a [`StringTable`].
|
||||
#[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct NamespaceIndex(u32);
|
||||
|
||||
@ -307,7 +312,7 @@ impl TypedIndex for NamespaceIndex {
|
||||
}
|
||||
}
|
||||
|
||||
/// Name index.
|
||||
/// A type-safe way to get names from a [`StringTable`].
|
||||
#[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct NameIndex(u32);
|
||||
|
||||
|
@ -7,10 +7,19 @@ pub use self::boxed::BoxedMap;
|
||||
pub use self::map::{Iter, IterMut, Map};
|
||||
pub use self::slice::SliceMap;
|
||||
|
||||
/// Represents a typed index.
|
||||
/// A trait for dealing with type-safe indices into associative data structures
|
||||
/// like [`Map`]s.
|
||||
///
|
||||
/// Through the use of this trait, we get compile time checks that we are not
|
||||
/// using the wrong type of index into our data structures.
|
||||
///
|
||||
/// It acts as a thin wrapper over `usize` and in most usage patterns has no
|
||||
/// runtime overhead.
|
||||
pub trait TypedIndex: Copy + Clone {
|
||||
/// Create a new instance of [`TypedIndex`] from a raw index value
|
||||
#[doc(hidden)]
|
||||
fn new(index: usize) -> Self;
|
||||
/// Get the raw index value from the [`TypedIndex`]
|
||||
#[doc(hidden)]
|
||||
fn index(&self) -> usize;
|
||||
}
|
||||
|
Reference in New Issue
Block a user