Struct rustc_feature::Features [−][src]
pub struct Features {Show 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 plugin_registrar: bool,
pub plugin: bool,
pub thread_local: bool,
pub simd_ffi: bool,
pub nll: bool,
pub const_fn: 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 unwind_attributes: 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 external_doc: 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_fn_union: bool,
pub const_raw_ptr_to_usize_cast: 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 const_panic: 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 impl_trait_in_bindings: bool,
pub lint_reasons: bool,
pub precise_pointer_size_matching: bool,
pub ffi_returns_twice: bool,
pub const_generics: 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 member_constraints: 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 bindings_after_at: bool,
pub const_trait_impl: bool,
pub const_trait_bound_opt_out: 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 lazy_normalization_consts: bool,
pub const_fn_transmute: bool,
pub if_let_guard: bool,
pub const_evaluatable_checked: 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 extended_key_value_attributes: 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 macro_attributes_in_derive_output: bool,
pub min_type_alias_impl_trait: 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_fn_unsize: 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,
}Expand description
A set of features to be used by later passes.
Fields
declared_lang_features: Vec<(Symbol, Span, Option<Symbol>)>Expand description
#![feature] attrs for language features, for error reporting.
declared_lib_features: Vec<(Symbol, Span)>Expand description
#![feature] attrs for non-language (library) features.
rustc_attrs: boolExpand description
Allows using rustc_* attributes (RFC 572).
rustc_private: boolExpand description
Allows using compiler’s own crates.
intrinsics: boolExpand description
Allows using the rust-intrinsic’s “ABI”.
lang_items: boolExpand description
Allows using #[lang = ".."] attribute for linking items to special compiler logic.
staged_api: boolExpand description
Allows using the #[stable] and #[unstable] attributes.
allow_internal_unstable: boolExpand description
Allows 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: boolExpand description
Allows 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: boolExpand description
no-tracking-issue-end
Allows using #[link_name="llvm.*"].
box_syntax: boolExpand description
Allows using the box $expr syntax.
start: boolExpand description
Allows using #[start] on a function indicating that it is the program entrypoint.
fundamental: boolExpand description
Allows using the #[fundamental] attribute.
unboxed_closures: boolExpand description
Allows using the rust-call ABI.
linkage: boolExpand description
Allows using the #[linkage = ".."] attribute.
box_patterns: boolExpand description
Allows using box in patterns (RFC 469).
prelude_import: boolExpand description
Allows using #[prelude_import] on glob use items.
omit_gdb_pretty_printer_section: boolExpand description
Allows using #[omit_gdb_pretty_printer_section].
abi_vectorcall: boolExpand description
Allows using the vectorcall ABI.
structural_match: boolExpand description
Allows 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: boolExpand description
Allows using the may_dangle attribute (RFC 1327).
panic_runtime: boolExpand description
Allows using the #![panic_runtime] attribute.
needs_panic_runtime: boolExpand description
Allows declaring with #![needs_panic_runtime] that a panic runtime is needed.
compiler_builtins: boolExpand description
Allows identifying the compiler_builtins crate.
abi_unadjusted: boolExpand description
Allows using the unadjusted ABI; perma-unstable.
profiler_runtime: boolExpand description
Used to identify crates that contain the profiler runtime.
abi_thiscall: boolExpand description
Allows using the thiscall ABI.
allocator_internals: boolExpand description
Allows using #![needs_allocator], an implementation detail of #[global_allocator].
test_2018_feature: boolExpand description
Added for testing E0705; perma-unstable.
no_niche: boolExpand description
Allows #[repr(no_niche)] (an implementation detail of rustc,
it is not on path for eventual stabilization).
rustc_allow_const_fn_unstable: boolExpand description
Allows using #[rustc_allow_const_fn_unstable].
This is an attribute on const fn for the same
purpose as #[allow_internal_unstable].
auto_traits: boolExpand description
Allows features specific to auto traits.
Renamed from optin_builtin_traits.
doc_notable_trait: boolExpand description
Allows #[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: boolplugin_registrar: boolExpand description
Allows using #[plugin_registrar] on functions.
plugin: boolExpand description
Allows using #![plugin(myplugin)].
thread_local: boolExpand description
Allows using #[thread_local] on static items.
simd_ffi: boolExpand description
Allows the use of SIMD types in functions declared in extern blocks.
nll: boolExpand description
Allows using non lexical lifetimes (RFC 2094).
const_fn: boolExpand description
Allows the definition of const functions with some advanced features.
associated_type_defaults: boolExpand description
Allows associated type defaults.
no_core: boolExpand description
Allows #![no_core].
default_type_parameter_fallback: boolExpand description
Allows default type parameters to influence type inference.
repr_simd: boolExpand description
Allows repr(simd) and importing the various simd intrinsics.
platform_intrinsics: boolExpand description
Allows extern "platform-intrinsic" { ... }.
unwind_attributes: boolExpand description
Allows #[unwind(..)].
Permits specifying whether a function should permit unwinding or abort on unwind.
stmt_expr_attributes: boolExpand description
Allows attributes on expressions and non-item statements.
type_ascription: boolExpand description
Allows the use of type ascription in expressions.
cfg_target_thread_local: boolExpand description
Allows cfg(target_thread_local).
specialization: boolExpand description
Allows specialization of implementations (RFC 1210).
min_specialization: boolExpand description
A minimal, sound subset of specialization intended to be used by the standard library until the soundness issues with specialization are fixed.
naked_functions: boolExpand description
Allows using #[naked] on functions.
cfg_target_has_atomic: boolExpand description
Allows cfg(target_has_atomic = "...").
exclusive_range_pattern: boolExpand description
Allows X..Y patterns.
never_type: boolExpand description
Allows the ! type. Does not imply ‘exhaustive_patterns’ (below) any more.
exhaustive_patterns: boolExpand description
Allows exhaustive pattern matching on types that contain uninhabited types.
untagged_unions: boolExpand description
Allows 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: boolExpand description
Allows #[link(..., cfg(..))].
abi_ptx: boolExpand description
Allows extern "ptx-*" fn().
repr128: boolExpand description
Allows the #[repr(i128)] attribute for enums.
static_nobundle: boolExpand description
Allows #[link(kind="static-nobundle"...)].
abi_msp430_interrupt: boolExpand description
Allows extern "msp430-interrupt" fn().
decl_macro: boolExpand description
Allows declarative macros 2.0 (macro).
abi_x86_interrupt: boolExpand description
Allows extern "x86-interrupt" fn().
allow_fail: boolExpand description
Allows a test to fail without failing the whole suite.
unsized_tuple_coercion: boolExpand description
Allows unsized tuple coercion.
generators: boolExpand description
Allows defining generators.
doc_cfg: boolExpand description
Allows #[doc(cfg(...))].
doc_masked: boolExpand description
Allows #[doc(masked)].
external_doc: boolExpand description
Allows #[doc(include = "some-file")].
crate_visibility_modifier: boolExpand description
Allows using crate as visibility modifier, synonymous with pub(crate).
extern_types: boolExpand description
Allows defining extern types.
arbitrary_self_types: boolExpand description
Allows trait methods with arbitrary self types.
in_band_lifetimes: boolExpand description
Allows in-band quantification of lifetime bindings (e.g., fn foo(x: &'a u8) -> &'a u8).
generic_associated_types: boolExpand description
Allows associated types to be generic, e.g., type Foo<T>; (RFC 1598).
trait_alias: boolExpand description
Allows defining trait X = A + B; alias items.
infer_static_outlives_requirements: boolExpand description
Allows inferring 'static outlives requirements (RFC 2093).
const_fn_union: boolExpand description
Allows accessing fields of unions inside const functions.
const_raw_ptr_to_usize_cast: boolExpand description
Allows casting raw pointers to usize during const eval.
const_raw_ptr_deref: boolExpand description
Allows dereferencing raw pointers during const eval.
trivial_bounds: boolExpand description
Allows inconsistent bounds in where clauses.
label_break_value: boolExpand description
Allows 'a: { break 'a; }.
doc_keyword: boolExpand description
Allows using #[doc(keyword = "...")].
try_blocks: boolExpand description
Allows using try {...} expressions.
alloc_error_handler: boolExpand description
Allows defining an #[alloc_error_handler].
abi_amdgpu_kernel: boolExpand description
Allows using the amdgpu-kernel ABI.
const_panic: boolExpand description
Allows panicking during const eval (producing compile-time errors).
marker_trait_attr: boolExpand description
Allows #[marker] on certain traits allowing overlapping implementations.
proc_macro_hygiene: boolExpand description
Allows macro attributes on expressions, statements and non-inline modules.
unsized_locals: boolExpand description
Allows unsized rvalues at arguments and parameters.
custom_test_frameworks: boolExpand description
Allows custom test frameworks with #![test_runner] and #[test_case].
custom_inner_attributes: boolExpand description
Allows non-builtin attributes in inner attribute position.
impl_trait_in_bindings: boolExpand description
Allows impl Trait in bindings (let, const, static).
lint_reasons: boolExpand description
Allows using reason in lint attributes and the #[expect(lint)] lint check.
precise_pointer_size_matching: boolExpand description
Allows exhaustive integer pattern matching on usize and isize.
ffi_returns_twice: boolExpand description
Allows using #[ffi_returns_twice] on foreign functions.
const_generics: boolExpand description
Allows const generic types (e.g. struct Foo<const N: usize>(...);).
optimize_attribute: boolExpand description
Allows using #[optimize(X)].
c_variadic: boolExpand description
Allows using C-variadics.
associated_type_bounds: boolExpand description
Allows the user of associated type bounds.
let_chains: boolExpand description
Allows if/while p && let q = r && ... chains.
transparent_unions: boolExpand description
Allows #[repr(transparent)] on unions (RFC 2645).
arbitrary_enum_discriminant: boolExpand description
Allows explicit discriminants on non-unit enum variants.
member_constraints: boolExpand description
Allows impl Trait with multiple unrelated lifetimes.
async_closure: boolExpand description
Allows async || body closures.
type_alias_impl_trait: boolExpand description
Allows impl Trait to be used inside type aliases (RFC 2515).
const_extern_fn: boolExpand description
Allows the definition of const extern fn and const unsafe extern fn.
raw_dylib: boolExpand description
Allows the use of raw-dylibs (RFC 2627).
object_safe_for_dispatch: boolExpand description
Allows 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: boolExpand description
Allows using the efiapi ABI.
raw_ref_op: boolExpand description
Allows &raw const $place_expr and &raw mut $place_expr expressions.
never_type_fallback: boolExpand description
Allows diverging expressions to fall back to ! rather than ().
register_attr: boolExpand description
Allows using the #[register_attr] attribute.
register_tool: boolExpand description
Allows using the #[register_tool] attribute.
cfg_sanitize: boolExpand description
Allows the use of #[cfg(sanitize = "option")]; set when -Zsanitizer is used.
half_open_range_patterns: boolExpand description
Allows using ..X, ..=X, ...X, and X.. as a pattern.
const_mut_refs: boolExpand description
Allows using &mut in constant functions.
bindings_after_at: boolExpand description
Allows bindings in the subpattern of a binding pattern.
For example, you can write x @ Some(y).
const_trait_impl: boolExpand description
Allows impl const Trait for T syntax.
const_trait_bound_opt_out: boolExpand description
Allows T: ?const Trait syntax in bounds.
no_sanitize: boolExpand description
Allows the use of no_sanitize attribute.
const_eval_limit: boolnegative_impls: boolExpand description
Allow negative trait implementations.
target_feature_11: boolExpand description
Allows the use of #[target_feature] on safe functions.
cfg_version: boolExpand description
Allow conditional compilation depending on rust version
ffi_pure: boolExpand description
Allows the use of #[ffi_pure] on foreign functions.
ffi_const: boolExpand description
Allows the use of #[ffi_const] on foreign functions.
abi_avr_interrupt: boolExpand description
Allows extern "avr-interrupt" fn() and extern "avr-non-blocking-interrupt" fn().
const_precise_live_drops: boolExpand description
Be more precise when looking for live drops in a const context.
format_args_capture: boolExpand description
Allows capturing variables in scope using format_args!
lazy_normalization_consts: boolExpand description
Lazily evaluate constants. This allows constants to depend on type parameters.
const_fn_transmute: boolExpand description
Allows calling transmute in const fn
if_let_guard: boolExpand description
Allows if let guard in match arms.
const_evaluatable_checked: boolExpand description
Allows non-trivial generic constants which have to be manually propagated upwards.
const_fn_floating_point_arithmetic: boolExpand description
Allows basic arithmetic on floating point types in a const fn.
const_fn_fn_ptr_basics: boolExpand description
Allows using and casting function pointers in a const fn.
cmse_nonsecure_entry: boolExpand description
Allows to use the #[cmse_nonsecure_entry] attribute.
default_alloc_error_handler: boolExpand description
Allows rustc to inject a default alloc_error_handler
const_impl_trait: boolExpand description
Allows argument and return position impl Trait in a const fn.
isa_attribute: boolExpand description
Allows #[instruction_set(_)] attribute
inline_const: boolExpand description
Allow anonymous constants from an inline const block
unsized_fn_params: boolExpand description
Allows unsized fn parameters.
destructuring_assignment: boolExpand description
Allows the use of destructuring assignments.
cfg_panic: boolExpand description
Enables #[cfg(panic = "...")] config key.
capture_disjoint_fields: boolExpand description
Allows capturing disjoint fields in a closure/generator (RFC 2229).
extended_key_value_attributes: boolExpand description
Allows arbitrary expressions in key-value attributes at parse time.
const_generics_defaults: boolExpand description
Allows const generics to have default values (e.g. struct Foo<const N: usize = 3>(...);).
const_refs_to_cell: boolExpand description
Allows references to types with interior mutability within constants
intra_doc_pointers: boolExpand description
Allows using pointer and reference in intra-doc links
abi_c_cmse_nonsecure_call: boolExpand description
Allows extern "C-cmse-nonsecure-call" fn().
relaxed_struct_unsize: boolExpand description
Lessens the requirements for structs to implement Unsize.
macro_attributes_in_derive_output: boolExpand description
Allows macro attributes to observe output of #[derive].
min_type_alias_impl_trait: boolExpand description
Allows the use of type alias impl trait in function return positions
inherent_associated_types: boolExpand description
Allows associated types in inherent impls.
large_assignments: boolc_unwind: boolExpand description
Allows extern "C-unwind" fn to enable unwinding across ABI boundaries.
fn_align: boolExpand description
Allows using #[repr(align(...))] on function items
wasm_abi: boolExpand description
Allows extern "wasm" fn
no_coverage: boolExpand description
Allows function attribute #[no_coverage], to bypass coverage
instrumentation of that function.
const_fn_trait_bound: boolExpand description
Allows trait bounds in const fn.
const_fn_unsize: boolExpand description
Allows unsizing coercions in const fn.
imported_main: boolExpand description
Allows using imported main function
native_link_modifiers: boolExpand description
Allows specifying modifiers in the link attribute: #[link(modifiers = "...")]
native_link_modifiers_bundle: boolExpand description
Allows specifying the bundle link modifier
native_link_modifiers_verbatim: boolExpand description
Allows specifying the verbatim link modifier
native_link_modifiers_whole_archive: boolExpand description
Allows specifying the whole-archive link modifier
native_link_modifiers_as_needed: boolExpand description
Allows specifying the as-needed link modifier
Implementations
impl Features[src]
impl Features[src]Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Features
impl !Send for Features
impl !Sync for Features
impl Unpin for Features
impl UnwindSafe for Features
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more