Enum CodedIndexType
#[repr(usize)]pub enum CodedIndexType {
Show 13 variants
TypeDefOrRef = 0,
HasConstant = 1,
HasCustomAttribute = 2,
HasFieldMarshal = 3,
HasDeclSecurity = 4,
MemberRefParent = 5,
HasSemantics = 6,
MethodDefOrRef = 7,
MemberForwarded = 8,
Implementation = 9,
CustomAttributeType = 10,
ResolutionScope = 11,
TypeOrMethodDef = 12,
}Expand description
Represents all possible coded index types defined in the CLI metadata specification.
A coded index type defines which combination of metadata tables can be referenced by a particular coded index field. Each variant corresponds to a specific set of tables that can be encoded together, allowing for space-efficient cross-references within the metadata stream.
§Encoding Scheme
Coded indices use the lower bits to encode the table type and the remaining bits for the row index. The number of bits required for the table type depends on how many tables are included in the combination.
§Examples
TypeDefOrRefcan reference TypeDef, TypeRef, or TypeSpec tablesHasConstantcan reference Field, Param, or Property tablesHasCustomAttributecan reference any of 22 different table types
§Reference
- ECMA-335 Standard - Section II.24.2.6
Variants§
TypeDefOrRef = 0
References TypeDef, TypeRef, or TypeSpec tables.
Used to identify type definitions, references, or specifications in a unified manner throughout the metadata.
HasConstant = 1
References Field, Param, or Property tables.
Used to identify entities that can have constant values assigned to them.
HasCustomAttribute = 2
References any entity that can have custom attributes attached.
This is the most comprehensive coded index type, supporting references to:
MethodDef, Field, TypeRef, TypeDef, Param, InterfaceImpl, MemberRef,
Module, Permission, Property, Event, StandAloneSig, ModuleRef, TypeSpec,
Assembly, AssemblyRef, File, ExportedType, ManifestResource, GenericParam,
GenericParamConstraint, MethodSpec.
HasFieldMarshal = 3
References Field or Param tables.
Used to identify entities that can have marshalling information for interop scenarios.
HasDeclSecurity = 4
References TypeDef, MethodDef, or Assembly tables.
Used to identify entities that can have declarative security attributes applied.
MemberRefParent = 5
References TypeDef, TypeRef, ModuleRef, MethodDef, or TypeSpec tables.
Used as the parent reference for member references.
HasSemantics = 6
References Event or Property tables.
Used to identify entities that can have semantic methods (getter, setter, etc.) associated with them.
MethodDefOrRef = 7
References MethodDef or MemberRef tables.
Used to reference method definitions or member references in a unified manner.
MemberForwarded = 8
References Field or MethodDef tables.
Used to identify members that are forwarded to other assemblies.
Implementation = 9
References File, AssemblyRef, or ExportedType tables.
Used to specify the implementation location for exported types.
CustomAttributeType = 10
References MethodDef or MemberRef tables.
Used to identify the constructor methods for custom attributes. Note: Some indices (0, 1, 4) are normally unused but supported by the encoding scheme.
ResolutionScope = 11
References Module, ModuleRef, AssemblyRef, or TypeRef tables.
Used to specify the scope in which a type reference should be resolved.
TypeOrMethodDef = 12
References TypeDef or MethodDef tables.
Used to reference either type or method definitions in contexts where both are valid targets.
Implementations§
§impl CodedIndexType
impl CodedIndexType
pub fn tables(&self) -> &'static [TableId]
pub fn tables(&self) -> &'static [TableId]
Returns the array of table IDs that can be referenced by this coded index type.
This method provides the lookup table that defines which metadata tables can be encoded using this particular coded index type. The order of tables in the returned slice corresponds to the encoded values (0, 1, 2, etc.).
§Returns
A static slice containing the TableId values that can be referenced
by this coded index type, in encoding order.
Trait Implementations§
§impl Clone for CodedIndexType
impl Clone for CodedIndexType
§fn clone(&self) -> CodedIndexType
fn clone(&self) -> CodedIndexType
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for CodedIndexType
impl Debug for CodedIndexType
§impl Hash for CodedIndexType
impl Hash for CodedIndexType
§impl IntoEnumIterator for CodedIndexType
impl IntoEnumIterator for CodedIndexType
type Iterator = CodedIndexTypeIter
fn iter() -> CodedIndexTypeIter ⓘ
§impl PartialEq for CodedIndexType
impl PartialEq for CodedIndexType
impl Copy for CodedIndexType
impl Eq for CodedIndexType
impl StructuralPartialEq for CodedIndexType
Auto Trait Implementations§
impl Freeze for CodedIndexType
impl RefUnwindSafe for CodedIndexType
impl Send for CodedIndexType
impl Sync for CodedIndexType
impl Unpin for CodedIndexType
impl UnwindSafe for CodedIndexType
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more