Enum rustc_middle::mir::mono::InstantiationMode[−][src]

pub enum InstantiationMode {
    GloballyShared {
        may_conflict: bool,
    },
    LocalCopy,
}
Expand description

Describes how a monomorphization will be instantiated in object files.

Variants

GloballyShared
Expand description

There will be exactly one instance of the given MonoItem. It will have external linkage so that it can be linked to from other codegen units.

Show fields

Fields of GloballyShared

may_conflict: bool
Expand description

In some compilation scenarios we may decide to take functions that are typically LocalCopy and instead move them to GloballyShared to avoid codegenning them a bunch of times. In this situation, however, our local copy may conflict with other crates also inlining the same function.

This flag indicates that this situation is occurring, and informs symbol name calculation that some extra mangling is needed to avoid conflicts. Note that this may eventually go away entirely if ThinLTO enables us to always have a globally shared instance of a function within one crate’s compilation.

LocalCopy
Expand description

Each codegen unit containing a reference to the given MonoItem will have its own private copy of the function (with internal linkage).

Trait Implementations

impl PartialEq<InstantiationMode> for InstantiationMode[src]

fn eq(&self, other: &InstantiationMode) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, other: &InstantiationMode) -> bool[src]

This method tests for !=.

impl StructuralPartialEq for InstantiationMode[src]

Auto Trait Implementations

impl RefUnwindSafe for InstantiationMode

impl Send for InstantiationMode

impl Sync for InstantiationMode

impl Unpin for InstantiationMode

impl UnwindSafe for InstantiationMode

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> MaybeResult<T> for T[src]

type Error = !

pub fn from(Result<T, <T as MaybeResult<T>>::Error>) -> T[src]

pub fn to_result(self) -> Result<T, <T as MaybeResult<T>>::Error>[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T> WithConstness for T[src]

fn with_constness(self, constness: Constness) -> ConstnessAnd<Self>[src]

fn with_const(self) -> ConstnessAnd<Self>[src]

fn without_const(self) -> ConstnessAnd<Self>[src]

impl<'a, T> Captures<'a> for T where
    T: ?Sized, 
[src]