Struct rustc_type_ir::TypeFlags[][src]

pub struct TypeFlags {
    bits: u32,
}
Expand description

Flags that we track on types. These flags are propagated upwards through the type during type construction, so that we can quickly check whether the type has various kinds of types in it without recursing over the type itself.

Fields

bits: u32

Implementations

Does this have Param?

Does this have ReEarlyBound?

Does this have ConstKind::Param?

Does this have Infer?

Does this have ReVar?

Does this have ConstKind::Infer?

Does this have inference variables? Used to determine whether inference is required.

Does this have Placeholder?

Does this have RePlaceholder?

Does this have ConstKind::Placeholder?

true if there are “names” of regions and so forth that are local to a particular fn/inferctxt

true if there are “names” of types and regions and so forth that are local to a particular fn

Does this have Projection?

Does this have Opaque?

Does this have ConstKind::Unevaluated?

Could this type be normalized further?

Is an error type/const reachable?

Does this have any region that “appears free” in the type? Basically anything but ReLateBound and ReErased.

Does this have any ReLateBound regions? Used to check if a global bound is safe to evaluate.

Does this have any ReErased regions?

Does this value have parameters/placeholders/inference variables which could be replaced later, in a way that would change the results of impl specialization?

Note that this flag being set is not a guarantee, as it is also set if there are any anon consts with unknown default substs.

Does this value have InferTy::FreshTy/FreshIntTy/FreshFloatTy?

Does this value have InferConst::Fresh?

Does this value have unknown default anon const substs.

For more details refer to… FIXME(@lcnr): ask me for now, still have to write all of this.

Flags which can be influenced by default anon const substs.

Returns an empty set of flags

Returns the set containing all flags.

Returns the raw value of the flags currently stored.

Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.

Convert from underlying bit representation, dropping any bits that do not correspond to flags.

Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).

Returns true if no flags are currently stored.

Returns true if all flags are currently set.

Returns true if there are flags common to both self and other.

Returns true all of the flags in other are contained within self.

Inserts the specified flags in-place.

Removes the specified flags in-place.

Toggles the specified flags in-place.

Inserts or removes the specified flags depending on the passed value.

Trait Implementations

Formats the value using the given formatter.

Returns the intersection between the two sets of flags.

The resulting type after applying the & operator.

Disables all flags disabled in the set.

Returns the union of the two sets of flags.

The resulting type after applying the | operator.

Adds the set of flags.

Returns the left flags, but with all the right flags toggled.

The resulting type after applying the ^ operator.

Toggles the set of flags.

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Extends a collection with the contents of an iterator. Read more

🔬 This is a nightly-only experimental API. (extend_one)

Extends a collection with exactly one element.

🔬 This is a nightly-only experimental API. (extend_one)

Reserves capacity in a collection for the given number of additional elements. Read more

Creates a value from an iterator. Read more

Feeds this value into the given Hasher. Read more

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

Formats the value using the given formatter.

Returns the complement of this set of flags.

The resulting type after applying the ! operator.

Formats the value using the given formatter.

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

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

This method tests for !=.

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Returns the set difference of the two sets of flags.

The resulting type after applying the - operator.

Disables all flags enabled in the set.

Formats the value using the given formatter.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Layout

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size: 4 bytes