Struct rustc_feature::Features [−][src]
pub struct Features {Show 181 fields
pub declared_lang_features: Vec<(Symbol, Span, Option<Symbol>)>,
pub declared_lib_features: Vec<(Symbol, Span)>,
pub rustc_attrs: bool,
pub rustc_private: bool,
pub intrinsics: bool,
pub lang_items: bool,
pub staged_api: bool,
pub allow_internal_unstable: bool,
pub allow_internal_unsafe: bool,
pub link_llvm_intrinsics: bool,
pub box_syntax: bool,
pub start: bool,
pub fundamental: bool,
pub unboxed_closures: bool,
pub linkage: bool,
pub box_patterns: bool,
pub prelude_import: bool,
pub omit_gdb_pretty_printer_section: bool,
pub abi_vectorcall: bool,
pub structural_match: bool,
pub dropck_eyepatch: bool,
pub panic_runtime: bool,
pub needs_panic_runtime: bool,
pub compiler_builtins: bool,
pub abi_unadjusted: bool,
pub profiler_runtime: bool,
pub abi_thiscall: bool,
pub allocator_internals: bool,
pub test_2018_feature: bool,
pub no_niche: bool,
pub rustc_allow_const_fn_unstable: bool,
pub auto_traits: bool,
pub doc_notable_trait: bool,
pub arm_target_feature: bool,
pub aarch64_target_feature: bool,
pub hexagon_target_feature: bool,
pub powerpc_target_feature: bool,
pub mips_target_feature: bool,
pub avx512_target_feature: bool,
pub sse4a_target_feature: bool,
pub tbm_target_feature: bool,
pub wasm_target_feature: bool,
pub adx_target_feature: bool,
pub cmpxchg16b_target_feature: bool,
pub movbe_target_feature: bool,
pub rtm_target_feature: bool,
pub f16c_target_feature: bool,
pub riscv_target_feature: bool,
pub ermsb_target_feature: bool,
pub bpf_target_feature: bool,
pub plugin: bool,
pub thread_local: bool,
pub simd_ffi: bool,
pub nll: bool,
pub associated_type_defaults: bool,
pub no_core: bool,
pub default_type_parameter_fallback: bool,
pub repr_simd: bool,
pub platform_intrinsics: bool,
pub stmt_expr_attributes: bool,
pub type_ascription: bool,
pub cfg_target_thread_local: bool,
pub specialization: bool,
pub min_specialization: bool,
pub naked_functions: bool,
pub cfg_target_has_atomic: bool,
pub exclusive_range_pattern: bool,
pub never_type: bool,
pub exhaustive_patterns: bool,
pub untagged_unions: bool,
pub link_cfg: bool,
pub abi_ptx: bool,
pub repr128: bool,
pub static_nobundle: bool,
pub abi_msp430_interrupt: bool,
pub decl_macro: bool,
pub abi_x86_interrupt: bool,
pub allow_fail: bool,
pub unsized_tuple_coercion: bool,
pub generators: bool,
pub doc_cfg: bool,
pub doc_masked: bool,
pub crate_visibility_modifier: bool,
pub extern_types: bool,
pub arbitrary_self_types: bool,
pub in_band_lifetimes: bool,
pub generic_associated_types: bool,
pub trait_alias: bool,
pub infer_static_outlives_requirements: bool,
pub const_raw_ptr_deref: bool,
pub trivial_bounds: bool,
pub label_break_value: bool,
pub doc_keyword: bool,
pub try_blocks: bool,
pub alloc_error_handler: bool,
pub abi_amdgpu_kernel: bool,
pub marker_trait_attr: bool,
pub proc_macro_hygiene: bool,
pub unsized_locals: bool,
pub custom_test_frameworks: bool,
pub custom_inner_attributes: bool,
pub lint_reasons: bool,
pub precise_pointer_size_matching: bool,
pub ffi_returns_twice: bool,
pub optimize_attribute: bool,
pub c_variadic: bool,
pub associated_type_bounds: bool,
pub let_chains: bool,
pub transparent_unions: bool,
pub arbitrary_enum_discriminant: bool,
pub async_closure: bool,
pub type_alias_impl_trait: bool,
pub const_extern_fn: bool,
pub raw_dylib: bool,
pub object_safe_for_dispatch: bool,
pub abi_efiapi: bool,
pub raw_ref_op: bool,
pub never_type_fallback: bool,
pub register_attr: bool,
pub register_tool: bool,
pub cfg_sanitize: bool,
pub half_open_range_patterns: bool,
pub const_mut_refs: bool,
pub const_trait_impl: bool,
pub no_sanitize: bool,
pub const_eval_limit: bool,
pub negative_impls: bool,
pub target_feature_11: bool,
pub cfg_version: bool,
pub ffi_pure: bool,
pub ffi_const: bool,
pub abi_avr_interrupt: bool,
pub const_precise_live_drops: bool,
pub format_args_capture: bool,
pub if_let_guard: bool,
pub const_fn_floating_point_arithmetic: bool,
pub const_fn_fn_ptr_basics: bool,
pub cmse_nonsecure_entry: bool,
pub default_alloc_error_handler: bool,
pub const_impl_trait: bool,
pub isa_attribute: bool,
pub inline_const: bool,
pub unsized_fn_params: bool,
pub destructuring_assignment: bool,
pub cfg_panic: bool,
pub capture_disjoint_fields: bool,
pub const_generics_defaults: bool,
pub const_refs_to_cell: bool,
pub intra_doc_pointers: bool,
pub abi_c_cmse_nonsecure_call: bool,
pub relaxed_struct_unsize: bool,
pub inherent_associated_types: bool,
pub large_assignments: bool,
pub c_unwind: bool,
pub fn_align: bool,
pub wasm_abi: bool,
pub no_coverage: bool,
pub const_fn_trait_bound: bool,
pub const_async_blocks: bool,
pub imported_main: bool,
pub native_link_modifiers: bool,
pub native_link_modifiers_bundle: bool,
pub native_link_modifiers_verbatim: bool,
pub native_link_modifiers_whole_archive: bool,
pub native_link_modifiers_as_needed: bool,
pub more_qualified_paths: bool,
pub cfg_target_abi: bool,
pub generic_arg_infer: bool,
pub derive_default_enum: bool,
pub const_for: bool,
pub const_try: bool,
pub trait_upcasting: bool,
pub explicit_generic_args_with_impl_trait: bool,
pub doc_primitive: bool,
pub generic_const_exprs: bool,
pub adt_const_params: bool,
pub let_else: bool,
pub must_not_suspend: bool,
pub closure_track_caller: bool,
pub doc_cfg_hide: bool,
pub non_exhaustive_omitted_patterns_lint: bool,
}Expand description
A set of features to be used by later passes.
Fields
declared_lang_features: Vec<(Symbol, Span, Option<Symbol>)>#![feature] attrs for language features, for error reporting.
declared_lib_features: Vec<(Symbol, Span)>#![feature] attrs for non-language (library) features.
rustc_attrs: boolAllows using rustc_* attributes (RFC 572).
rustc_private: boolAllows using compiler’s own crates.
intrinsics: boolAllows using the rust-intrinsic’s “ABI”.
lang_items: boolAllows using #[lang = ".."] attribute for linking items to special compiler logic.
staged_api: boolAllows using the #[stable] and #[unstable] attributes.
allow_internal_unstable: boolAllows using #[allow_internal_unstable]. This is an
attribute on macro_rules! and can’t use the attribute handling
below (it has to be checked before expansion possibly makes
macros disappear).
allow_internal_unsafe: boolAllows using #[allow_internal_unsafe]. This is an
attribute on macro_rules! and can’t use the attribute handling
below (it has to be checked before expansion possibly makes
macros disappear).
link_llvm_intrinsics: boolno-tracking-issue-end
Allows using #[link_name="llvm.*"].
box_syntax: boolAllows using the box $expr syntax.
start: boolAllows using #[start] on a function indicating that it is the program entrypoint.
fundamental: boolAllows using the #[fundamental] attribute.
unboxed_closures: boolAllows using the rust-call ABI.
linkage: boolAllows using the #[linkage = ".."] attribute.
box_patterns: boolAllows using box in patterns (RFC 469).
prelude_import: boolAllows using #[prelude_import] on glob use items.
omit_gdb_pretty_printer_section: boolAllows using #[omit_gdb_pretty_printer_section].
abi_vectorcall: boolAllows using the vectorcall ABI.
structural_match: boolAllows using #[structural_match] which indicates that a type is structurally matchable.
FIXME: Subsumed by trait StructuralPartialEq, cannot move to removed until a library
feature with the same name exists.
dropck_eyepatch: boolAllows using the may_dangle attribute (RFC 1327).
panic_runtime: boolAllows using the #![panic_runtime] attribute.
needs_panic_runtime: boolAllows declaring with #![needs_panic_runtime] that a panic runtime is needed.
compiler_builtins: boolAllows identifying the compiler_builtins crate.
abi_unadjusted: boolAllows using the unadjusted ABI; perma-unstable.
profiler_runtime: boolUsed to identify crates that contain the profiler runtime.
abi_thiscall: boolAllows using the thiscall ABI.
allocator_internals: boolAllows using #![needs_allocator], an implementation detail of #[global_allocator].
test_2018_feature: boolAdded for testing E0705; perma-unstable.
no_niche: boolAllows #[repr(no_niche)] (an implementation detail of rustc,
it is not on path for eventual stabilization).
rustc_allow_const_fn_unstable: boolAllows using #[rustc_allow_const_fn_unstable].
This is an attribute on const fn for the same
purpose as #[allow_internal_unstable].
auto_traits: boolAllows features specific to auto traits.
Renamed from optin_builtin_traits.
doc_notable_trait: boolAllows #[doc(notable_trait)].
Renamed from doc_spotlight.
arm_target_feature: boolaarch64_target_feature: boolhexagon_target_feature: boolpowerpc_target_feature: boolmips_target_feature: boolavx512_target_feature: boolsse4a_target_feature: booltbm_target_feature: boolwasm_target_feature: booladx_target_feature: boolcmpxchg16b_target_feature: boolmovbe_target_feature: boolrtm_target_feature: boolf16c_target_feature: boolriscv_target_feature: boolermsb_target_feature: boolbpf_target_feature: boolplugin: boolAllows using #![plugin(myplugin)].
thread_local: boolAllows using #[thread_local] on static items.
simd_ffi: boolAllows the use of SIMD types in functions declared in extern blocks.
nll: boolAllows using non lexical lifetimes (RFC 2094).
associated_type_defaults: boolAllows associated type defaults.
no_core: boolAllows #![no_core].
default_type_parameter_fallback: boolAllows default type parameters to influence type inference.
repr_simd: boolAllows repr(simd) and importing the various simd intrinsics.
platform_intrinsics: boolAllows extern "platform-intrinsic" { ... }.
stmt_expr_attributes: boolAllows attributes on expressions and non-item statements.
type_ascription: boolAllows the use of type ascription in expressions.
cfg_target_thread_local: boolAllows cfg(target_thread_local).
specialization: boolAllows specialization of implementations (RFC 1210).
min_specialization: boolA minimal, sound subset of specialization intended to be used by the standard library until the soundness issues with specialization are fixed.
naked_functions: boolAllows using #[naked] on functions.
cfg_target_has_atomic: boolAllows cfg(target_has_atomic = "...").
exclusive_range_pattern: boolAllows X..Y patterns.
never_type: boolAllows the ! type. Does not imply ‘exhaustive_patterns’ (below) any more.
exhaustive_patterns: boolAllows exhaustive pattern matching on types that contain uninhabited types.
untagged_unions: boolAllows unions to implement Drop. Moreover, unions may now include fields
that don’t implement Copy as long as they don’t have any drop glue.
This is checked recursively. On encountering type variable where no progress can be made,
T: Copy is used as a substitute for “no drop glue”.
NOTE: A limited form of union U { ... } was accepted in 1.19.0.
link_cfg: boolAllows #[link(..., cfg(..))].
abi_ptx: boolAllows extern "ptx-*" fn().
repr128: boolAllows the #[repr(i128)] attribute for enums.
static_nobundle: boolAllows #[link(kind="static-nobundle"...)].
abi_msp430_interrupt: boolAllows extern "msp430-interrupt" fn().
decl_macro: boolAllows declarative macros 2.0 (macro).
abi_x86_interrupt: boolAllows extern "x86-interrupt" fn().
allow_fail: boolAllows a test to fail without failing the whole suite.
unsized_tuple_coercion: boolAllows unsized tuple coercion.
generators: boolAllows defining generators.
doc_cfg: boolAllows #[doc(cfg(...))].
doc_masked: boolAllows #[doc(masked)].
crate_visibility_modifier: boolAllows using crate as visibility modifier, synonymous with pub(crate).
extern_types: boolAllows defining extern types.
arbitrary_self_types: boolAllows trait methods with arbitrary self types.
in_band_lifetimes: boolAllows in-band quantification of lifetime bindings (e.g., fn foo(x: &'a u8) -> &'a u8).
generic_associated_types: boolAllows associated types to be generic, e.g., type Foo<T>; (RFC 1598).
trait_alias: boolAllows defining trait X = A + B; alias items.
infer_static_outlives_requirements: boolAllows inferring 'static outlives requirements (RFC 2093).
const_raw_ptr_deref: boolAllows dereferencing raw pointers during const eval.
trivial_bounds: boolAllows inconsistent bounds in where clauses.
label_break_value: boolAllows 'a: { break 'a; }.
doc_keyword: boolAllows using #[doc(keyword = "...")].
try_blocks: boolAllows using try {...} expressions.
alloc_error_handler: boolAllows defining an #[alloc_error_handler].
abi_amdgpu_kernel: boolAllows using the amdgpu-kernel ABI.
marker_trait_attr: boolAllows #[marker] on certain traits allowing overlapping implementations.
proc_macro_hygiene: boolAllows macro attributes on expressions, statements and non-inline modules.
unsized_locals: boolAllows unsized rvalues at arguments and parameters.
custom_test_frameworks: boolAllows custom test frameworks with #![test_runner] and #[test_case].
custom_inner_attributes: boolAllows non-builtin attributes in inner attribute position.
lint_reasons: boolAllows using reason in lint attributes and the #[expect(lint)] lint check.
precise_pointer_size_matching: boolAllows exhaustive integer pattern matching on usize and isize.
ffi_returns_twice: boolAllows using #[ffi_returns_twice] on foreign functions.
optimize_attribute: boolAllows using #[optimize(X)].
c_variadic: boolAllows using C-variadics.
associated_type_bounds: boolAllows the user of associated type bounds.
let_chains: boolAllows if/while p && let q = r && ... chains.
transparent_unions: boolAllows #[repr(transparent)] on unions (RFC 2645).
arbitrary_enum_discriminant: boolAllows explicit discriminants on non-unit enum variants.
async_closure: boolAllows async || body closures.
type_alias_impl_trait: boolAllows impl Trait to be used inside type aliases (RFC 2515).
const_extern_fn: boolAllows the definition of const extern fn and const unsafe extern fn.
raw_dylib: boolAllows the use of raw-dylibs (RFC 2627).
object_safe_for_dispatch: boolAllows making dyn Trait well-formed even if Trait is not object safe.
In that case, dyn Trait: Trait does not hold. Moreover, coercions and
casts in safe Rust to dyn Trait for such a Trait is also forbidden.
abi_efiapi: boolAllows using the efiapi ABI.
raw_ref_op: boolAllows &raw const $place_expr and &raw mut $place_expr expressions.
never_type_fallback: boolAllows diverging expressions to fall back to ! rather than ().
register_attr: boolAllows using the #[register_attr] attribute.
register_tool: boolAllows using the #[register_tool] attribute.
cfg_sanitize: boolAllows the use of #[cfg(sanitize = "option")]; set when -Zsanitizer is used.
half_open_range_patterns: boolAllows using ..X, ..=X, ...X, and X.. as a pattern.
const_mut_refs: boolAllows using &mut in constant functions.
const_trait_impl: boolAllows impl const Trait for T syntax.
no_sanitize: boolAllows the use of no_sanitize attribute.
const_eval_limit: boolnegative_impls: boolAllow negative trait implementations.
target_feature_11: boolAllows the use of #[target_feature] on safe functions.
cfg_version: boolAllow conditional compilation depending on rust version
ffi_pure: boolAllows the use of #[ffi_pure] on foreign functions.
ffi_const: boolAllows the use of #[ffi_const] on foreign functions.
abi_avr_interrupt: boolAllows extern "avr-interrupt" fn() and extern "avr-non-blocking-interrupt" fn().
const_precise_live_drops: boolBe more precise when looking for live drops in a const context.
format_args_capture: boolAllows capturing variables in scope using format_args!
if_let_guard: boolAllows if let guard in match arms.
const_fn_floating_point_arithmetic: boolAllows basic arithmetic on floating point types in a const fn.
const_fn_fn_ptr_basics: boolAllows using and casting function pointers in a const fn.
cmse_nonsecure_entry: boolAllows to use the #[cmse_nonsecure_entry] attribute.
default_alloc_error_handler: boolAllows rustc to inject a default alloc_error_handler
const_impl_trait: boolAllows argument and return position impl Trait in a const fn.
isa_attribute: boolAllows #[instruction_set(_)] attribute
inline_const: boolAllow anonymous constants from an inline const block
unsized_fn_params: boolAllows unsized fn parameters.
destructuring_assignment: boolAllows the use of destructuring assignments.
cfg_panic: boolEnables #[cfg(panic = "...")] config key.
capture_disjoint_fields: boolAllows capturing disjoint fields in a closure/generator (RFC 2229).
const_generics_defaults: boolAllows const generics to have default values (e.g. struct Foo<const N: usize = 3>(...);).
const_refs_to_cell: boolAllows references to types with interior mutability within constants
intra_doc_pointers: boolAllows using pointer and reference in intra-doc links
abi_c_cmse_nonsecure_call: boolAllows extern "C-cmse-nonsecure-call" fn().
relaxed_struct_unsize: boolLessens the requirements for structs to implement Unsize.
inherent_associated_types: boolAllows associated types in inherent impls.
large_assignments: boolc_unwind: boolAllows extern "C-unwind" fn to enable unwinding across ABI boundaries.
fn_align: boolAllows using #[repr(align(...))] on function items
wasm_abi: boolAllows extern "wasm" fn
no_coverage: boolAllows function attribute #[no_coverage], to bypass coverage
instrumentation of that function.
const_fn_trait_bound: boolAllows trait bounds in const fn.
const_async_blocks: boolAllows async {} expressions in const contexts.
imported_main: boolAllows using imported main function
native_link_modifiers: boolAllows specifying modifiers in the link attribute: #[link(modifiers = "...")]
native_link_modifiers_bundle: boolAllows specifying the bundle link modifier
native_link_modifiers_verbatim: boolAllows specifying the verbatim link modifier
native_link_modifiers_whole_archive: boolAllows specifying the whole-archive link modifier
native_link_modifiers_as_needed: boolAllows specifying the as-needed link modifier
more_qualified_paths: boolAllows qualified paths in struct expressions, struct patterns and tuple struct patterns.
cfg_target_abi: boolAllows cfg(target_abi = "...").
generic_arg_infer: boolInfer generic args for both consts and types.
derive_default_enum: boolAllows #[derive(Default)] and #[default] on enums.
const_for: boolAllows for _ in _ loops in const contexts.
const_try: boolAllows the ? operator in const contexts.
trait_upcasting: boolAllows upcasting trait objects via supertraits.
Trait upcasting is casting, e.g., dyn Foo -> dyn Bar where Foo: Bar.
explicit_generic_args_with_impl_trait: boolAllows explicit generic arguments specification with impl Trait present.
doc_primitive: boolAllows using doc(primitive) without a future-incompat warning
generic_const_exprs: boolAllows non-trivial generic constants which have to have wfness manually propagated to callers
adt_const_params: boolAllows additional const parameter types, such as &'static str or user defined types
let_else: boolAllows let...else statements.
must_not_suspend: boolAllows the #[must_not_suspend] attribute.
closure_track_caller: boolAllows #[track_caller] on closures and generators.
doc_cfg_hide: boolAllows #[doc(cfg_hide(...))].
non_exhaustive_omitted_patterns_lint: boolAllows using the non_exhaustive_omitted_patterns lint.
Implementations
Is the given feature enabled?
Panics if the symbol doesn’t correspond to a declared feature.
Some features are known to be incomplete and using them is likely to have unanticipated results, such as compiler crashes. We warn the user about these to alert them.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Features
impl UnwindSafe for Features
Blanket Implementations
Mutably borrows from an owned value. Read more
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: 232 bytes