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

  • TypeDefOrRef can reference TypeDef, TypeRef, or TypeSpec tables
  • HasConstant can reference Field, Param, or Property tables
  • HasCustomAttribute can reference any of 22 different table types

§Reference

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

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

§

fn clone(&self) -> CodedIndexType

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for CodedIndexType

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
§

impl EnumCount for CodedIndexType

§

const COUNT: usize = 13usize

§

impl Hash for CodedIndexType

§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl IntoEnumIterator for CodedIndexType

§

impl PartialEq for CodedIndexType

§

fn eq(&self, other: &CodedIndexType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl Copy for CodedIndexType

§

impl Eq for CodedIndexType

§

impl StructuralPartialEq for CodedIndexType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.