Skip to main content

AssemblyRef

Struct AssemblyRef 

pub struct AssemblyRef {
Show 17 fields pub rid: u32, pub token: Token, pub offset: usize, pub name: String, pub culture: Option<String>, pub major_version: u32, pub minor_version: u32, pub build_number: u32, pub revision_number: u32, pub flags: AssemblyFlags, pub identifier: Option<Identity>, pub hash: Option<AssemblyRefHash>, pub os_platform_id: AtomicU32, pub os_major_version: AtomicU32, pub os_minor_version: AtomicU32, pub processor: AtomicU32, pub custom_attributes: CustomAttributeValueList,
}
Expand description

Represents a .NET assembly reference with fully resolved metadata and owned data

This structure contains the complete assembly reference information from the AssemblyRef metadata table (0x23), with all heap references resolved to owned strings and byte arrays. Unlike crate::metadata::tables::assemblyref::raw::AssemblyRefRaw, this provides immediate access to string data without requiring heap lookups.

§Assembly Reference Identity

An assembly reference’s identity consists of:

  • Simple name: The assembly name (e.g., “mscorlib”, “System.Core”)
  • Version: Four-part version number (Major.Minor.Build.Revision)
  • Culture: Localization culture (None for culture-neutral assemblies)
  • Public key or token: Strong name verification data (optional)
  • Hash: Optional hash value for assembly integrity verification

§Additional Metadata

This structure also includes data from related tables:

  • AssemblyRefOS: Operating system compatibility information
  • AssemblyRefProcessor: Processor architecture requirements
  • Custom attributes: Additional metadata applied to the reference

§Thread Safety

This type is Send and Sync. Atomic fields (OS and processor data) can be safely accessed and modified from multiple threads. Other fields are read-only after construction and safe for concurrent access.

§References

Fields§

§rid: u32

Row identifier within the AssemblyRef table

Unique identifier for this row within the metadata table. Used for internal referencing and debugging purposes.

§token: Token

Metadata token for this assembly reference

Contains the table ID (0x23) and row ID packed into a single value. Used for cross-referencing from other metadata tables.

§offset: usize

File offset where this table entry begins

Byte offset from the start of the PE file to the beginning of this AssemblyRef table entry. Used for low-level file analysis.

§name: String

Simple name of the referenced assembly

The assembly name without file extension (e.g., “mscorlib”, “System.Core”). This is the primary identifier used during assembly resolution.

§culture: Option<String>

Culture string for localized assemblies

Specifies the culture for satellite assemblies containing localized resources. None indicates a culture-neutral assembly (the common case for most assemblies).

§major_version: u32

Major version number (first component of version)

The first part of the four-part version number. Typically incremented for major releases with breaking changes.

§minor_version: u32

Minor version number (second component of version)

The second part of the four-part version number. Typically incremented for minor releases with new features but no breaking changes.

§build_number: u32

Build number (third component of version)

The third part of the four-part version number. Often incremented for each build or compilation.

§revision_number: u32

Revision number (fourth component of version)

The fourth part of the four-part version number. Often used for patches or hotfixes.

§flags: AssemblyFlags

Assembly flags bit field

Bitmask specifying assembly attributes using crate::metadata::tables::AssemblyFlags constants. Controls behavior like public key format and retargetability.

§identifier: Option<Identity>

Strong name identity information

Contains either the full public key or public key token used for strong name verification. None indicates the assembly is not strongly named.

§hash: Option<AssemblyRefHash>

Assembly integrity hash

Optional cryptographic hash of the referenced assembly for integrity verification. The hash algorithm is typically SHA-1 or MD5, though Microsoft may have extended this.

§os_platform_id: AtomicU32

Operating system platform identifier

Specifies the target operating system platform. Uses atomic access for thread safety. Corresponds to entries in the AssemblyRefOS table when present.

§os_major_version: AtomicU32

Operating system major version

Major version number of the target operating system. Uses atomic access for thread safety. Corresponds to entries in the AssemblyRefOS table when present.

§os_minor_version: AtomicU32

Operating system minor version

Minor version number of the target operating system. Uses atomic access for thread safety. Corresponds to entries in the AssemblyRefOS table when present.

§processor: AtomicU32

Target processor architecture

Specifies the required processor architecture for the referenced assembly. Uses atomic access for thread safety. Corresponds to entries in the AssemblyRefProcessor table.

§custom_attributes: CustomAttributeValueList

Custom attributes applied to this assembly reference

Collection of custom attributes that provide additional metadata for this assembly reference. Thread-safe collection supporting concurrent access.

Trait Implementations§

§

impl Debug for AssemblyRef

§

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

Formats the value using the given formatter. Read more

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> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Source§

fn type_name(&self) -> &'static str

Gets the type name of self
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast for T
where T: AsAny + ?Sized,

Source§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
Source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
Source§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, A> IntoAst<A> for T
where T: Into<A>, A: Ast,

Source§

fn into_ast(self, _a: &A) -> A

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<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more