/rust/registry/src/index.crates.io-6f17d22bba15001f/ptr_meta-0.1.4/src/lib.rs
| Line | Count | Source (jump to first uncovered line) | 
| 1 |  | //! A radioactive stabilization of the [`ptr_meta` RFC][rfc]. | 
| 2 |  | //! | 
| 3 |  | //! [rfc]: https://rust-lang.github.io/rfcs/2580-ptr-meta.html | 
| 4 |  | //! | 
| 5 |  | //! ## Usage | 
| 6 |  | //! | 
| 7 |  | //! ### Sized types | 
| 8 |  | //! | 
| 9 |  | //! Sized types already have `Pointee` implemented for them, so most of the time you won't have to worry | 
| 10 |  | //! about them. However, trying to derive `Pointee` for a struct that may or may not have a DST as its | 
| 11 |  | //! last field will cause an implementation conflict with the automatic sized implementation. | 
| 12 |  | //! | 
| 13 |  | //! ### `slice`s and `str`s | 
| 14 |  | //! | 
| 15 |  | //! These core types have implementations built in. | 
| 16 |  | //! | 
| 17 |  | //! ### Structs with a DST as its last field | 
| 18 |  | //! | 
| 19 |  | //! You can derive `Pointee` for last-field DSTs: | 
| 20 |  | //! | 
| 21 |  | //! ``` | 
| 22 |  | //! use ptr_meta::Pointee; | 
| 23 |  | //! | 
| 24 |  | //! #[derive(Pointee)] | 
| 25 |  | //! struct Block<H, T> { | 
| 26 |  | //!     header: H, | 
| 27 |  | //!     elements: [T], | 
| 28 |  | //! } | 
| 29 |  | //! ``` | 
| 30 |  | //! | 
| 31 |  | //! ### Trait objects | 
| 32 |  | //! | 
| 33 |  | //! You can generate a `Pointee` for trait objects: | 
| 34 |  | //! | 
| 35 |  | //! ``` | 
| 36 |  | //! use ptr_meta::pointee; | 
| 37 |  | //! | 
| 38 |  | //! // Generates Pointee for dyn Stringy | 
| 39 |  | //! #[pointee] | 
| 40 |  | //! trait Stringy { | 
| 41 |  | //!     fn as_string(&self) -> String; | 
| 42 |  | //! } | 
| 43 |  | //! ``` | 
| 44 |  |  | 
| 45 |  | #![cfg_attr(not(feature = "std"), no_std)] | 
| 46 |  |  | 
| 47 |  | mod impls; | 
| 48 |  |  | 
| 49 |  | use core::{ | 
| 50 |  |     alloc::Layout, | 
| 51 |  |     cmp, | 
| 52 |  |     fmt, | 
| 53 |  |     hash, | 
| 54 |  |     marker::PhantomData, | 
| 55 |  |     ptr, | 
| 56 |  | }; | 
| 57 |  |  | 
| 58 |  | pub use ptr_meta_derive::{pointee, Pointee}; | 
| 59 |  |  | 
| 60 |  | /// Provides the pointer metadata type of any pointed-to type. | 
| 61 |  | /// | 
| 62 |  | /// # Pointer metadata | 
| 63 |  | /// | 
| 64 |  | /// Raw pointer types and reference types in Rust can be thought of as made of two parts: | 
| 65 |  | /// a data pointer that contains the memory address of the value, and some metadata. | 
| 66 |  | /// | 
| 67 |  | /// For statically-sized types (that implement the `Sized` traits) | 
| 68 |  | /// as well as for `extern` types, | 
| 69 |  | /// pointers are said to be “thin”: metadata is zero-sized and its type is `()`. | 
| 70 |  | /// | 
| 71 |  | /// Pointers to [dynamically-sized types][dst] are said to be “wide” or “fat”, | 
| 72 |  | /// they have non-zero-sized metadata: | 
| 73 |  | /// | 
| 74 |  | /// * For structs whose last field is a DST, metadata is the metadata for the last field | 
| 75 |  | /// * For the `str` type, metadata is the length in bytes as `usize` | 
| 76 |  | /// * For slice types like `[T]`, metadata is the length in items as `usize` | 
| 77 |  | /// * For trait objects like `dyn SomeTrait`, metadata is [`DynMetadata<Self>`][DynMetadata] | 
| 78 |  | ///   (e.g. `DynMetadata<dyn SomeTrait>`) | 
| 79 |  | /// | 
| 80 |  | /// In the future, the Rust language may gain new kinds of types | 
| 81 |  | /// that have different pointer metadata. | 
| 82 |  | /// | 
| 83 |  | /// [dst]: https://doc.rust-lang.org/nomicon/exotic-sizes.html#dynamically-sized-types-dsts | 
| 84 |  | /// | 
| 85 |  | /// | 
| 86 |  | /// # The `Pointee` trait | 
| 87 |  | /// | 
| 88 |  | /// The point of this trait is its `Metadata` associated type, | 
| 89 |  | /// which is `()` or `usize` or `DynMetadata<_>` as described above. | 
| 90 |  | /// It is automatically implemented for every type. | 
| 91 |  | /// It can be assumed to be implemented in a generic context, even without a corresponding bound. | 
| 92 |  | /// | 
| 93 |  | /// | 
| 94 |  | /// # Usage | 
| 95 |  | /// | 
| 96 |  | /// Raw pointers can be decomposed into the data address and metadata components | 
| 97 |  | /// with their [`to_raw_parts`] method. | 
| 98 |  | /// | 
| 99 |  | /// Alternatively, metadata alone can be extracted with the [`metadata`] function. | 
| 100 |  | /// A reference can be passed to [`metadata`] and implicitly coerced. | 
| 101 |  | /// | 
| 102 |  | /// A (possibly-wide) pointer can be put back together from its address and metadata | 
| 103 |  | /// with [`from_raw_parts`] or [`from_raw_parts_mut`]. | 
| 104 |  | /// | 
| 105 |  | /// [`to_raw_parts`]: PtrExt::to_raw_parts | 
| 106 |  | pub trait Pointee { | 
| 107 |  |     /// The type for metadata in pointers and references to `Self`. | 
| 108 |  |     type Metadata: Copy + Send + Sync + Ord + hash::Hash + Unpin; | 
| 109 |  | } | 
| 110 |  |  | 
| 111 |  | impl<T> Pointee for T { | 
| 112 |  |     type Metadata = (); | 
| 113 |  | } | 
| 114 |  |  | 
| 115 |  | impl<T> Pointee for [T] { | 
| 116 |  |     type Metadata = usize; | 
| 117 |  | } | 
| 118 |  |  | 
| 119 |  | impl Pointee for str { | 
| 120 |  |     type Metadata = usize; | 
| 121 |  | } | 
| 122 |  |  | 
| 123 |  | #[cfg(feature = "std")] | 
| 124 |  | impl Pointee for ::std::ffi::CStr { | 
| 125 |  |     type Metadata = usize; | 
| 126 |  | } | 
| 127 |  |  | 
| 128 |  | #[cfg(feature = "std")] | 
| 129 |  | impl Pointee for ::std::ffi::OsStr { | 
| 130 |  |     type Metadata = usize; | 
| 131 |  | } | 
| 132 |  |  | 
| 133 |  | #[repr(C)] | 
| 134 |  | pub(crate) union PtrRepr<T: Pointee + ?Sized> { | 
| 135 |  |     pub(crate) const_ptr: *const T, | 
| 136 |  |     pub(crate) mut_ptr: *mut T, | 
| 137 |  |     pub(crate) components: PtrComponents<T>, | 
| 138 |  | } | 
| 139 |  |  | 
| 140 |  | #[repr(C)] | 
| 141 |  | pub(crate) struct PtrComponents<T: Pointee + ?Sized> { | 
| 142 |  |     pub(crate) data_address: *const (), | 
| 143 |  |     pub(crate) metadata: <T as Pointee>::Metadata, | 
| 144 |  | } | 
| 145 |  |  | 
| 146 |  | impl<T: Pointee + ?Sized> Clone for PtrComponents<T> { | 
| 147 |  |     fn clone(&self) -> Self { | 
| 148 |  |         Self { | 
| 149 |  |             data_address: self.data_address.clone(), | 
| 150 |  |             metadata: self.metadata.clone(), | 
| 151 |  |         } | 
| 152 |  |     } | 
| 153 |  | } | 
| 154 |  |  | 
| 155 |  | impl<T: Pointee + ?Sized> Copy for PtrComponents<T> {} | 
| 156 |  |  | 
| 157 |  | /// Extract the metadata component of a pointer. | 
| 158 |  | /// | 
| 159 |  | /// Values of type `*mut T`, `&T`, or `&mut T` can be passed directly to this function | 
| 160 |  | /// as they implicitly coerce to `*const T`. | 
| 161 |  | /// | 
| 162 |  | /// # Example | 
| 163 |  | /// | 
| 164 |  | /// ``` | 
| 165 |  | /// use ptr_meta::metadata; | 
| 166 |  | /// | 
| 167 |  | /// assert_eq!(metadata("foo"), 3_usize); | 
| 168 |  | /// ``` | 
| 169 | 2.07M | pub fn metadata<T: Pointee + ?Sized>(ptr: *const T) -> <T as Pointee>::Metadata { | 
| 170 | 2.07M |     unsafe { PtrRepr { const_ptr: ptr }.components.metadata } | 
| 171 | 2.07M | } Unexecuted instantiation: ptr_meta::metadata::<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::boxed::ArchivedBox<[u8]>]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedTableInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedTableType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedMemoryType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedFunctionType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::relocation::ArchivedRelocation]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::section::ArchivedCustomSection]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedFunctionBody]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::metadata::<[u8]>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::FunctionIndex>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::FunctionIndex, rkyv::string::ArchivedString>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::DataIndex>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::DataIndex, rkyv::boxed::ArchivedBox<[u8]>>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::ElemIndex>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::ElemIndex, rkyv::boxed::ArchivedBox<[wasmer_types::indexes::FunctionIndex]>>]>>Unexecuted instantiation: ptr_meta::metadata::<wasmer_types::module::ArchivedArchivableModuleInfo>Unexecuted instantiation: ptr_meta::metadata::<wasmer_types::serialize::ArchivedSerializableModule>Unexecuted instantiation: ptr_meta::metadata::<wasmer_types::compilation::symbols::ArchivedModuleMetadata>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::boxed::ArchivedBox<[u8]>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedTableInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedTableType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedMemoryType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedFunctionType]>ptr_meta::metadata::<[wasmer_types::types::Type]>| Line | Count | Source |  | 169 | 309k | pub fn metadata<T: Pointee + ?Sized>(ptr: *const T) -> <T as Pointee>::Metadata { |  | 170 | 309k |     unsafe { PtrRepr { const_ptr: ptr }.components.metadata } |  | 171 | 309k | } | 
Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::memory::MemoryStyle]>ptr_meta::metadata::<[wasmer_types::indexes::FunctionIndex]>| Line | Count | Source |  | 169 | 84.5k | pub fn metadata<T: Pointee + ?Sized>(ptr: *const T) -> <T as Pointee>::Metadata { |  | 170 | 84.5k |     unsafe { PtrRepr { const_ptr: ptr }.components.metadata } |  | 171 | 84.5k | } | 
Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::relocation::ArchivedRelocation]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::section::ArchivedCustomSection]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedFunctionBody]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::stack::trap::TrapInformation]>ptr_meta::metadata::<[u8]>| Line | Count | Source |  | 169 | 1.65M | pub fn metadata<T: Pointee + ?Sized>(ptr: *const T) -> <T as Pointee>::Metadata { |  | 170 | 1.65M |     unsafe { PtrRepr { const_ptr: ptr }.components.metadata } |  | 171 | 1.65M | } | 
Unexecuted instantiation: ptr_meta::metadata::<[u32]>Unexecuted instantiation: ptr_meta::metadata::<[u64]>Unexecuted instantiation: ptr_meta::metadata::<str>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::NodeHeader>ptr_meta::metadata::<[wasmer_types::initializers::OwnedDataInitializer]>| Line | Count | Source |  | 169 | 30.0k | pub fn metadata<T: Pointee + ?Sized>(ptr: *const T) -> <T as Pointee>::Metadata { |  | 170 | 30.0k |     unsafe { PtrRepr { const_ptr: ptr }.components.metadata } |  | 171 | 30.0k | } | 
Unexecuted instantiation: ptr_meta::metadata::<str>Unexecuted instantiation: ptr_meta::metadata::<core::ffi::c_str::CStr>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::boxed::ArchivedBox<[u8]>]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedTableInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedTableType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedMemoryType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedFunctionType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::relocation::ArchivedRelocation]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::section::ArchivedCustomSection]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedFunctionBody]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::metadata::<[u8]>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::FunctionIndex>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::FunctionIndex, rkyv::string::ArchivedString>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::DataIndex>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::DataIndex, rkyv::boxed::ArchivedBox<[u8]>>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::ElemIndex>]>>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::ElemIndex, rkyv::boxed::ArchivedBox<[wasmer_types::indexes::FunctionIndex]>>]>>Unexecuted instantiation: ptr_meta::metadata::<wasmer_types::module::ArchivedArchivableModuleInfo>Unexecuted instantiation: ptr_meta::metadata::<wasmer_types::serialize::ArchivedSerializableModule>Unexecuted instantiation: ptr_meta::metadata::<wasmer_types::compilation::symbols::ArchivedModuleMetadata>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::boxed::ArchivedBox<[u8]>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>]>Unexecuted instantiation: ptr_meta::metadata::<[rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedTableInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedTableType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedMemoryType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::ArchivedFunctionType]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::relocation::ArchivedRelocation]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::section::ArchivedCustomSection]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedFunctionBody]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::metadata::<[u8]>Unexecuted instantiation: ptr_meta::metadata::<[u32]>Unexecuted instantiation: ptr_meta::metadata::<[u64]>Unexecuted instantiation: ptr_meta::metadata::<str>Unexecuted instantiation: ptr_meta::metadata::<rkyv::collections::btree_map::NodeHeader>Unexecuted instantiation: ptr_meta::metadata::<[wasmer_types::initializers::OwnedDataInitializer]>Unexecuted instantiation: ptr_meta::metadata::<str>Unexecuted instantiation: ptr_meta::metadata::<core::ffi::c_str::CStr> | 
| 172 |  |  | 
| 173 |  | /// Forms a (possibly-wide) raw pointer from a data address and metadata. | 
| 174 |  | /// | 
| 175 |  | /// This function is safe but the returned pointer is not necessarily safe to dereference. | 
| 176 |  | /// For slices, see the documentation of [`slice::from_raw_parts`] for safety requirements. | 
| 177 |  | /// For trait objects, the metadata must come from a pointer to the same underlying ereased type. | 
| 178 |  | /// | 
| 179 |  | /// [`slice::from_raw_parts`]: core::slice::from_raw_parts | 
| 180 | 0 | pub fn from_raw_parts<T: Pointee + ?Sized>(data_address: *const (), metadata: <T as Pointee>::Metadata) -> *const T { | 
| 181 | 0 |     unsafe { PtrRepr { components: PtrComponents { data_address, metadata } }.const_ptr } | 
| 182 | 0 | } Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::FunctionIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::FunctionIndex, rkyv::string::ArchivedString>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::DataIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::DataIndex, rkyv::boxed::ArchivedBox<[u8]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::ElemIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::ElemIndex, rkyv::boxed::ArchivedBox<[wasmer_types::indexes::FunctionIndex]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::boxed::ArchivedBox<[u8]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::initializers::ArchivedTableInitializer>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::table::TableStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalInit>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedTableType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedMemoryType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedFunctionType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::memory::MemoryStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ArchivedArchivableModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::indexes::SignatureIndex>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::NodeHeader>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::relocation::ArchivedRelocation>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::address_map::ArchivedInstructionAddressMap>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::section::ArchivedCustomSection>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedFunctionBody>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::stack::trap::TrapInformation>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts::<u8>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::FunctionIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::FunctionIndex, rkyv::string::ArchivedString>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::DataIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::DataIndex, rkyv::boxed::ArchivedBox<[u8]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::ElemIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::ElemIndex, rkyv::boxed::ArchivedBox<[wasmer_types::indexes::FunctionIndex]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ArchivedArchivableModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::serialize::ArchivedSerializableModule>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::NodeHeader>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::symbols::ArchivedModuleMetadata>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::boxed::ArchivedBox<[u8]>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::initializers::ArchivedTableInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::ArchivedTableType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::ArchivedMemoryType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::ArchivedFunctionType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::relocation::ArchivedRelocation]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::section::ArchivedCustomSection]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::function::ArchivedFunctionBody]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u32]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u64]>Unexecuted instantiation: ptr_meta::from_raw_parts::<str>Unexecuted instantiation: ptr_meta::from_raw_parts::<u8>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::boxed::ArchivedBox<[u8]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::initializers::ArchivedTableInitializer>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::table::TableStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalInit>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedTableType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedMemoryType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedFunctionType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::memory::MemoryStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::indexes::SignatureIndex>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::relocation::ArchivedRelocation>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::address_map::ArchivedInstructionAddressMap>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::section::ArchivedCustomSection>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedFunctionBody>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::stack::trap::TrapInformation>Unexecuted instantiation: ptr_meta::from_raw_parts::<u32>Unexecuted instantiation: ptr_meta::from_raw_parts::<u64>Unexecuted instantiation: ptr_meta::from_raw_parts::<core::ffi::c_str::CStr>Unexecuted instantiation: ptr_meta::from_raw_parts::<u32>Unexecuted instantiation: ptr_meta::from_raw_parts::<str>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::FunctionIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::FunctionIndex, rkyv::string::ArchivedString>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::DataIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::DataIndex, rkyv::boxed::ArchivedBox<[u8]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::ElemIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::ElemIndex, rkyv::boxed::ArchivedBox<[wasmer_types::indexes::FunctionIndex]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::boxed::ArchivedBox<[u8]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::initializers::ArchivedTableInitializer>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::table::TableStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalInit>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedTableType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedMemoryType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedFunctionType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::memory::MemoryStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ArchivedArchivableModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::indexes::SignatureIndex>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::NodeHeader>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::relocation::ArchivedRelocation>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::address_map::ArchivedInstructionAddressMap>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::section::ArchivedCustomSection>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedFunctionBody>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::stack::trap::TrapInformation>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts::<u8>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::FunctionIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::FunctionIndex, rkyv::string::ArchivedString>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::DataIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::DataIndex, rkyv::boxed::ArchivedBox<[u8]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::InnerNodeEntry<wasmer_types::indexes::ElemIndex>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::Node<[rkyv::collections::btree_map::LeafNodeEntry<wasmer_types::indexes::ElemIndex, rkyv::boxed::ArchivedBox<[wasmer_types::indexes::FunctionIndex]>>]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ArchivedArchivableModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::serialize::ArchivedSerializableModule>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::btree_map::NodeHeader>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::symbols::ArchivedModuleMetadata>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::boxed::ArchivedBox<[u8]>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::initializers::ArchivedTableInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::ArchivedTableType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::ArchivedMemoryType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::ArchivedFunctionType]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::relocation::ArchivedRelocation]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::section::ArchivedCustomSection]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::function::ArchivedFunctionBody]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u32]>Unexecuted instantiation: ptr_meta::from_raw_parts::<[u64]>Unexecuted instantiation: ptr_meta::from_raw_parts::<str>Unexecuted instantiation: ptr_meta::from_raw_parts::<u8>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::boxed::ArchivedBox<[u8]>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::initializers::ArchivedTableInitializer>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::table::TableStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalInit>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::GlobalType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedTableType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedMemoryType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::types::ArchivedFunctionType>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::memory::MemoryStyle>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::indexes::SignatureIndex>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::relocation::ArchivedRelocation>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::address_map::ArchivedInstructionAddressMap>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::section::ArchivedCustomSection>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedFunctionBody>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo>Unexecuted instantiation: ptr_meta::from_raw_parts::<wasmer_types::stack::trap::TrapInformation>Unexecuted instantiation: ptr_meta::from_raw_parts::<u32>Unexecuted instantiation: ptr_meta::from_raw_parts::<u64>Unexecuted instantiation: ptr_meta::from_raw_parts::<core::ffi::c_str::CStr>Unexecuted instantiation: ptr_meta::from_raw_parts::<u32>Unexecuted instantiation: ptr_meta::from_raw_parts::<str> | 
| 183 |  |  | 
| 184 |  | /// Performs the same functionality as [`from_raw_parts`], except that a | 
| 185 |  | /// raw `*mut` pointer is returned, as opposed to a raw `*const` pointer. | 
| 186 |  | /// | 
| 187 |  | /// See the documentation of [`from_raw_parts`] for more details. | 
| 188 | 798k | pub fn from_raw_parts_mut<T: Pointee + ?Sized>(data_address: *mut (), metadata: <T as Pointee>::Metadata) -> *mut T { | 
| 189 | 798k |     unsafe { PtrRepr { components: PtrComponents { data_address, metadata } }.mut_ptr } | 
| 190 | 798k | } Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::OwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::vec::Vec<wasmer_types::compilation::relocation::Relocation>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::boxed::Box<[u8]>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::TableInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::TableType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::MemoryType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::FunctionType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::relocation::Relocation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::address_map::InstructionAddressMap]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::section::CustomSection]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::FunctionBody]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::CompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::OwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::FunctionIndex]>ptr_meta::from_raw_parts_mut::<[u8]>| Line | Count | Source |  | 188 | 798k | pub fn from_raw_parts_mut<T: Pointee + ?Sized>(data_address: *mut (), metadata: <T as Pointee>::Metadata) -> *mut T { |  | 189 | 798k |     unsafe { PtrRepr { components: PtrComponents { data_address, metadata } }.mut_ptr } |  | 190 | 798k | } | 
Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::vec::Vec<wasmer_types::compilation::relocation::Relocation>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::boxed::Box<[u8]>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::TableInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::TableType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::MemoryType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::FunctionType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::relocation::Relocation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::address_map::InstructionAddressMap]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::section::CustomSection]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::FunctionBody]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::CompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[u64]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<core::ffi::c_str::CStr>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::OwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::vec::Vec<wasmer_types::compilation::relocation::Relocation>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::boxed::Box<[u8]>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::TableInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::TableType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::MemoryType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::FunctionType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::relocation::Relocation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::address_map::InstructionAddressMap]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::section::CustomSection]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::FunctionBody]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::CompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<wasmer_types::module::ModuleInfo>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::OwnedDataInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::Type]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::FunctionIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[u8]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::vec::Vec<wasmer_types::compilation::relocation::Relocation>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[alloc::boxed::Box<[u8]>]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::initializers::TableInitializer]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::table::TableStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalInit]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::GlobalType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::TableType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::MemoryType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::types::FunctionType]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::memory::MemoryStyle]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::indexes::SignatureIndex]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::relocation::Relocation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::address_map::InstructionAddressMap]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::section::CustomSection]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::FunctionBody]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::compilation::function::CompiledFunctionFrameInfo]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[wasmer_types::stack::trap::TrapInformation]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[u64]>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<core::ffi::c_str::CStr>Unexecuted instantiation: ptr_meta::from_raw_parts_mut::<[u8]> | 
| 191 |  |  | 
| 192 |  | /// Extension methods for [`NonNull`](core::ptr::NonNull). | 
| 193 |  | pub trait NonNullExt<T: Pointee + ?Sized> { | 
| 194 |  |     /// The type's raw pointer (`NonNull<()>`). | 
| 195 |  |     type Raw; | 
| 196 |  |  | 
| 197 |  |     /// Creates a new non-null pointer from its raw parts. | 
| 198 |  |     fn from_raw_parts(raw: Self::Raw, meta: <T as Pointee>::Metadata) -> Self; | 
| 199 |  |     /// Converts a non-null pointer to its raw parts. | 
| 200 |  |     fn to_raw_parts(self) -> (Self::Raw, <T as Pointee>::Metadata); | 
| 201 |  | } | 
| 202 |  |  | 
| 203 |  | impl<T: Pointee + ?Sized> NonNullExt<T> for ptr::NonNull<T> { | 
| 204 |  |     type Raw = ptr::NonNull<()>; | 
| 205 |  |  | 
| 206 |  |     fn from_raw_parts(raw: Self::Raw, meta: <T as Pointee>::Metadata) -> Self { | 
| 207 |  |         unsafe { Self::new_unchecked(from_raw_parts_mut(raw.as_ptr(), meta)) } | 
| 208 |  |     } | 
| 209 |  |  | 
| 210 |  |     fn to_raw_parts(self) -> (Self::Raw, <T as Pointee>::Metadata) { | 
| 211 |  |         let (raw, meta) = PtrExt::to_raw_parts(self.as_ptr()); | 
| 212 |  |         unsafe { (ptr::NonNull::new_unchecked(raw), meta) } | 
| 213 |  |     } | 
| 214 |  | } | 
| 215 |  |  | 
| 216 |  | /// Extension methods for pointers. | 
| 217 |  | pub trait PtrExt<T: Pointee + ?Sized> { | 
| 218 |  |     /// The type's raw pointer (`*const ()` or `*mut ()`). | 
| 219 |  |     type Raw; | 
| 220 |  |  | 
| 221 |  |     /// Decompose a (possibly wide) pointer into its address and metadata | 
| 222 |  |     /// components. | 
| 223 |  |     /// | 
| 224 |  |     /// The pointer can be later reconstructed with [`from_raw_parts`]. | 
| 225 |  |     fn to_raw_parts(self) -> (Self::Raw, <T as Pointee>::Metadata); | 
| 226 |  | } | 
| 227 |  |  | 
| 228 |  | impl<T: Pointee + ?Sized> PtrExt<T> for *const T { | 
| 229 |  |     type Raw = *const (); | 
| 230 |  |  | 
| 231 | 0 |     fn to_raw_parts(self) -> (Self::Raw, <T as Pointee>::Metadata) { | 
| 232 | 0 |         unsafe { (&self as *const Self).cast::<(Self::Raw, <T as Pointee>::Metadata)>().read() } | 
| 233 | 0 |     } Unexecuted instantiation: <*const [rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>] as ptr_meta::PtrExt<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::boxed::ArchivedBox<[u8]>] as ptr_meta::PtrExt<[rkyv::boxed::ArchivedBox<[u8]>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>] as ptr_meta::PtrExt<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>] as ptr_meta::PtrExt<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>] as ptr_meta::PtrExt<[rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::initializers::ArchivedTableInitializer] as ptr_meta::PtrExt<[wasmer_types::initializers::ArchivedTableInitializer]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::initializers::ArchivedOwnedDataInitializer] as ptr_meta::PtrExt<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::table::TableStyle] as ptr_meta::PtrExt<[wasmer_types::table::TableStyle]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::GlobalInit] as ptr_meta::PtrExt<[wasmer_types::types::GlobalInit]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::GlobalType] as ptr_meta::PtrExt<[wasmer_types::types::GlobalType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::ArchivedTableType] as ptr_meta::PtrExt<[wasmer_types::types::ArchivedTableType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::ArchivedMemoryType] as ptr_meta::PtrExt<[wasmer_types::types::ArchivedMemoryType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::ArchivedFunctionType] as ptr_meta::PtrExt<[wasmer_types::types::ArchivedFunctionType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::Type] as ptr_meta::PtrExt<[wasmer_types::types::Type]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::memory::MemoryStyle] as ptr_meta::PtrExt<[wasmer_types::memory::MemoryStyle]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::indexes::FunctionIndex] as ptr_meta::PtrExt<[wasmer_types::indexes::FunctionIndex]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::indexes::SignatureIndex] as ptr_meta::PtrExt<[wasmer_types::indexes::SignatureIndex]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::relocation::ArchivedRelocation] as ptr_meta::PtrExt<[wasmer_types::compilation::relocation::ArchivedRelocation]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::address_map::ArchivedInstructionAddressMap] as ptr_meta::PtrExt<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::section::ArchivedCustomSection] as ptr_meta::PtrExt<[wasmer_types::compilation::section::ArchivedCustomSection]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::function::ArchivedFunctionBody] as ptr_meta::PtrExt<[wasmer_types::compilation::function::ArchivedFunctionBody]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo] as ptr_meta::PtrExt<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::stack::trap::TrapInformation] as ptr_meta::PtrExt<[wasmer_types::stack::trap::TrapInformation]>>::to_raw_partsUnexecuted instantiation: <*const [u8] as ptr_meta::PtrExt<[u8]>>::to_raw_partsUnexecuted instantiation: <*const [u32] as ptr_meta::PtrExt<[u32]>>::to_raw_partsUnexecuted instantiation: <*const [u64] as ptr_meta::PtrExt<[u64]>>::to_raw_partsUnexecuted instantiation: <*const str as ptr_meta::PtrExt<str>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>] as ptr_meta::PtrExt<[rkyv::vec::ArchivedVec<wasmer_types::compilation::relocation::ArchivedRelocation>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::boxed::ArchivedBox<[u8]>] as ptr_meta::PtrExt<[rkyv::boxed::ArchivedBox<[u8]>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>] as ptr_meta::PtrExt<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::ExportIndex>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>] as ptr_meta::PtrExt<[rkyv::collections::util::Entry<rkyv::string::ArchivedString, wasmer_types::indexes::CustomSectionIndex>]>>::to_raw_partsUnexecuted instantiation: <*const [rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>] as ptr_meta::PtrExt<[rkyv::collections::util::Entry<wasmer_types::module::ArchivedImportKey, wasmer_types::indexes::ImportIndex>]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::initializers::ArchivedTableInitializer] as ptr_meta::PtrExt<[wasmer_types::initializers::ArchivedTableInitializer]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::initializers::ArchivedOwnedDataInitializer] as ptr_meta::PtrExt<[wasmer_types::initializers::ArchivedOwnedDataInitializer]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::table::TableStyle] as ptr_meta::PtrExt<[wasmer_types::table::TableStyle]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::GlobalInit] as ptr_meta::PtrExt<[wasmer_types::types::GlobalInit]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::GlobalType] as ptr_meta::PtrExt<[wasmer_types::types::GlobalType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::ArchivedTableType] as ptr_meta::PtrExt<[wasmer_types::types::ArchivedTableType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::ArchivedMemoryType] as ptr_meta::PtrExt<[wasmer_types::types::ArchivedMemoryType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::ArchivedFunctionType] as ptr_meta::PtrExt<[wasmer_types::types::ArchivedFunctionType]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::types::Type] as ptr_meta::PtrExt<[wasmer_types::types::Type]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::memory::MemoryStyle] as ptr_meta::PtrExt<[wasmer_types::memory::MemoryStyle]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::indexes::FunctionIndex] as ptr_meta::PtrExt<[wasmer_types::indexes::FunctionIndex]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::indexes::SignatureIndex] as ptr_meta::PtrExt<[wasmer_types::indexes::SignatureIndex]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::relocation::ArchivedRelocation] as ptr_meta::PtrExt<[wasmer_types::compilation::relocation::ArchivedRelocation]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::address_map::ArchivedInstructionAddressMap] as ptr_meta::PtrExt<[wasmer_types::compilation::address_map::ArchivedInstructionAddressMap]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::section::ArchivedCustomSection] as ptr_meta::PtrExt<[wasmer_types::compilation::section::ArchivedCustomSection]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::function::ArchivedFunctionBody] as ptr_meta::PtrExt<[wasmer_types::compilation::function::ArchivedFunctionBody]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo] as ptr_meta::PtrExt<[wasmer_types::compilation::function::ArchivedCompiledFunctionFrameInfo]>>::to_raw_partsUnexecuted instantiation: <*const [wasmer_types::stack::trap::TrapInformation] as ptr_meta::PtrExt<[wasmer_types::stack::trap::TrapInformation]>>::to_raw_partsUnexecuted instantiation: <*const [u8] as ptr_meta::PtrExt<[u8]>>::to_raw_partsUnexecuted instantiation: <*const [u32] as ptr_meta::PtrExt<[u32]>>::to_raw_partsUnexecuted instantiation: <*const [u64] as ptr_meta::PtrExt<[u64]>>::to_raw_partsUnexecuted instantiation: <*const str as ptr_meta::PtrExt<str>>::to_raw_parts | 
| 234 |  | } | 
| 235 |  |  | 
| 236 |  | impl<T: Pointee + ?Sized> PtrExt<T> for *mut T { | 
| 237 |  |     type Raw = *mut (); | 
| 238 |  |  | 
| 239 |  |     fn to_raw_parts(self) -> (Self::Raw, <T as Pointee>::Metadata) { | 
| 240 |  |         unsafe { (&self as *const Self).cast::<(Self::Raw, <T as Pointee>::Metadata)>().read() } | 
| 241 |  |     } | 
| 242 |  | } | 
| 243 |  |  | 
| 244 |  | /// The metadata for a `Dyn = dyn SomeTrait` trait object type. | 
| 245 |  | /// | 
| 246 |  | /// It is a pointer to a vtable (virtual call table) | 
| 247 |  | /// that represents all the necessary information | 
| 248 |  | /// to manipulate the concrete type stored inside a trait object. | 
| 249 |  | /// The vtable notably it contains: | 
| 250 |  | /// | 
| 251 |  | /// * type size | 
| 252 |  | /// * type alignment | 
| 253 |  | /// * a pointer to the type’s `drop_in_place` impl (may be a no-op for plain-old-data) | 
| 254 |  | /// * pointers to all the methods for the type’s implementation of the trait | 
| 255 |  | /// | 
| 256 |  | /// Note that the first three are special because they’re necessary to allocate, drop, | 
| 257 |  | /// and deallocate any trait object. | 
| 258 |  | /// | 
| 259 |  | /// It is possible to name this struct with a type parameter that is not a `dyn` trait object | 
| 260 |  | /// (for example `DynMetadata<u64>`) but not to obtain a meaningful value of that struct. | 
| 261 |  | #[repr(transparent)] | 
| 262 |  | pub struct DynMetadata<Dyn: ?Sized> { | 
| 263 |  |     vtable_ptr: &'static VTable, | 
| 264 |  |     phantom: PhantomData<Dyn>, | 
| 265 |  | } | 
| 266 |  |  | 
| 267 |  | #[repr(C)] | 
| 268 |  | struct VTable { | 
| 269 |  |     drop_in_place: fn(*mut ()), | 
| 270 |  |     size_of: usize, | 
| 271 |  |     align_of: usize, | 
| 272 |  | } | 
| 273 |  |  | 
| 274 |  | impl<Dyn: ?Sized> DynMetadata<Dyn> { | 
| 275 |  |     /// Returns the size of the type associated with this vtable. | 
| 276 |  |     pub fn size_of(self) -> usize { | 
| 277 |  |         self.vtable_ptr.size_of | 
| 278 |  |     } | 
| 279 |  |  | 
| 280 |  |     /// Returns the alignment of the type associated with this vtable. | 
| 281 |  |     pub fn align_of(self) -> usize { | 
| 282 |  |         self.vtable_ptr.align_of | 
| 283 |  |     } | 
| 284 |  |  | 
| 285 |  |     /// Returns the size and alignment together as a `Layout`. | 
| 286 |  |     pub fn layout(self) -> Layout { | 
| 287 |  |         unsafe { Layout::from_size_align_unchecked(self.size_of(), self.align_of()) } | 
| 288 |  |     } | 
| 289 |  | } | 
| 290 |  |  | 
| 291 |  | unsafe impl<Dyn: ?Sized> Send for DynMetadata<Dyn> {} | 
| 292 |  | unsafe impl<Dyn: ?Sized> Sync for DynMetadata<Dyn> {} | 
| 293 |  | impl<Dyn: ?Sized> fmt::Debug for DynMetadata<Dyn> { | 
| 294 |  |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | 
| 295 |  |         f.debug_tuple("DynMetadata").field(&(self.vtable_ptr as *const VTable)).finish() | 
| 296 |  |     } | 
| 297 |  | } | 
| 298 |  | impl<Dyn: ?Sized> Unpin for DynMetadata<Dyn> {} | 
| 299 |  | impl<Dyn: ?Sized> Copy for DynMetadata<Dyn> {} | 
| 300 |  | impl<Dyn: ?Sized> Clone for DynMetadata<Dyn> { | 
| 301 |  |     #[inline] | 
| 302 |  |     fn clone(&self) -> Self { | 
| 303 |  |         *self | 
| 304 |  |     } | 
| 305 |  | } | 
| 306 |  | impl<Dyn: ?Sized> cmp::Eq for DynMetadata<Dyn> {} | 
| 307 |  | impl<Dyn: ?Sized> cmp::PartialEq for DynMetadata<Dyn> { | 
| 308 |  |     #[inline] | 
| 309 |  |     fn eq(&self, other: &Self) -> bool { | 
| 310 |  |         ptr::eq(self.vtable_ptr, other.vtable_ptr) | 
| 311 |  |     } | 
| 312 |  | } | 
| 313 |  | impl<Dyn: ?Sized> cmp::Ord for DynMetadata<Dyn> { | 
| 314 |  |     #[inline] | 
| 315 |  |     fn cmp(&self, other: &Self) -> cmp::Ordering { | 
| 316 |  |         (self.vtable_ptr as *const VTable).cmp(&(other.vtable_ptr as *const VTable)) | 
| 317 |  |     } | 
| 318 |  | } | 
| 319 |  | impl<Dyn: ?Sized> cmp::PartialOrd for DynMetadata<Dyn> { | 
| 320 |  |     #[inline] | 
| 321 |  |     fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> { | 
| 322 |  |         Some(self.cmp(other)) | 
| 323 |  |     } | 
| 324 |  | } | 
| 325 |  | impl<Dyn: ?Sized> hash::Hash for DynMetadata<Dyn> { | 
| 326 |  |     fn hash<H: hash::Hasher>(&self, hasher: &mut H) { | 
| 327 |  |         ptr::hash(self.vtable_ptr, hasher) | 
| 328 |  |     } | 
| 329 |  | } | 
| 330 |  |  | 
| 331 |  | #[cfg(test)] | 
| 332 |  | mod tests { | 
| 333 |  |     use crate as ptr_meta; | 
| 334 |  |     use super::{from_raw_parts, pointee, Pointee, PtrExt}; | 
| 335 |  |  | 
| 336 |  |     fn test_pointee<T: Pointee + ?Sized>(value: &T) { | 
| 337 |  |         let ptr = value as *const T; | 
| 338 |  |         let (raw, meta) = PtrExt::to_raw_parts(ptr); | 
| 339 |  |         let re_ptr = from_raw_parts::<T>(raw, meta); | 
| 340 |  |         assert_eq!(ptr, re_ptr); | 
| 341 |  |     } | 
| 342 |  |  | 
| 343 |  |     #[test] | 
| 344 |  |     fn sized_types() { | 
| 345 |  |         test_pointee(&()); | 
| 346 |  |         test_pointee(&42); | 
| 347 |  |         test_pointee(&true); | 
| 348 |  |         test_pointee(&[1, 2, 3, 4]); | 
| 349 |  |  | 
| 350 |  |         struct TestUnit; | 
| 351 |  |  | 
| 352 |  |         test_pointee(&TestUnit); | 
| 353 |  |  | 
| 354 |  |         #[allow(dead_code)] | 
| 355 |  |         struct TestStruct { | 
| 356 |  |             a: (), | 
| 357 |  |             b: i32, | 
| 358 |  |             c: bool, | 
| 359 |  |         } | 
| 360 |  |  | 
| 361 |  |         test_pointee(&TestStruct { a: (), b: 42, c: true }); | 
| 362 |  |  | 
| 363 |  |         struct TestTuple((), i32, bool); | 
| 364 |  |  | 
| 365 |  |         test_pointee(&TestTuple((), 42, true)); | 
| 366 |  |  | 
| 367 |  |         struct TestGeneric<T>(T); | 
| 368 |  |  | 
| 369 |  |         test_pointee(&TestGeneric(42)); | 
| 370 |  |     } | 
| 371 |  |  | 
| 372 |  |     #[test] | 
| 373 |  |     fn unsized_types() { | 
| 374 |  |         test_pointee("hello world"); | 
| 375 |  |         test_pointee(&[1, 2, 3, 4] as &[i32]); | 
| 376 |  |     } | 
| 377 |  |  | 
| 378 |  |     #[test] | 
| 379 |  |     fn trait_objects() { | 
| 380 |  |         #[pointee] | 
| 381 |  |         trait TestTrait { | 
| 382 |  |             fn foo(&self); | 
| 383 |  |         } | 
| 384 |  |  | 
| 385 |  |         struct A; | 
| 386 |  |  | 
| 387 |  |         impl TestTrait for A { | 
| 388 |  |             fn foo(&self) {} | 
| 389 |  |         } | 
| 390 |  |  | 
| 391 |  |         let trait_object = &A as &dyn TestTrait; | 
| 392 |  |  | 
| 393 |  |         test_pointee(trait_object); | 
| 394 |  |  | 
| 395 |  |         let (_, meta) = PtrExt::to_raw_parts(trait_object as *const dyn TestTrait); | 
| 396 |  |  | 
| 397 |  |         assert_eq!(meta.size_of(), 0); | 
| 398 |  |         assert_eq!(meta.align_of(), 1); | 
| 399 |  |  | 
| 400 |  |         struct B(i32); | 
| 401 |  |  | 
| 402 |  |         impl TestTrait for B { | 
| 403 |  |             fn foo(&self) {} | 
| 404 |  |         } | 
| 405 |  |  | 
| 406 |  |         let b = B(42); | 
| 407 |  |         let trait_object = &b as &dyn TestTrait; | 
| 408 |  |  | 
| 409 |  |         test_pointee(trait_object); | 
| 410 |  |  | 
| 411 |  |         let (_, meta) = PtrExt::to_raw_parts(trait_object as *const dyn TestTrait); | 
| 412 |  |  | 
| 413 |  |         assert_eq!(meta.size_of(), 4); | 
| 414 |  |         assert_eq!(meta.align_of(), 4); | 
| 415 |  |     } | 
| 416 |  |  | 
| 417 |  |     #[test] | 
| 418 |  |     fn last_field_dst() { | 
| 419 |  |         #[allow(dead_code)] | 
| 420 |  |         #[derive(Pointee)] | 
| 421 |  |         struct Test<H, T> { | 
| 422 |  |             head: H, | 
| 423 |  |             tail: [T], | 
| 424 |  |         } | 
| 425 |  |  | 
| 426 |  |         #[allow(dead_code)] | 
| 427 |  |         #[derive(Pointee)] | 
| 428 |  |         struct TestDyn { | 
| 429 |  |             tail: dyn core::any::Any, | 
| 430 |  |         } | 
| 431 |  |  | 
| 432 |  |         #[pointee] | 
| 433 |  |         trait TestTrait {} | 
| 434 |  |  | 
| 435 |  |         #[allow(dead_code)] | 
| 436 |  |         #[derive(Pointee)] | 
| 437 |  |         struct TestCustomDyn { | 
| 438 |  |             tail: dyn TestTrait, | 
| 439 |  |         } | 
| 440 |  |     } | 
| 441 |  | } |