Struct rustc_feature::unstable::Features
source · pub struct Features {Show 216 fields
pub declared_lang_features: Vec<(Symbol, Span, Option<Symbol>)>,
pub declared_lib_features: Vec<(Symbol, Span)>,
pub declared_features: FxHashSet<Symbol>,
pub abi_unadjusted: bool,
pub allocator_internals: bool,
pub allow_internal_unsafe: bool,
pub allow_internal_unstable: bool,
pub anonymous_lifetime_in_impl_trait: bool,
pub compiler_builtins: bool,
pub custom_mir: bool,
pub generic_assert: bool,
pub intrinsics: bool,
pub lang_items: bool,
pub lifetime_capture_rules_2024: bool,
pub link_cfg: bool,
pub multiple_supertrait_upcastable: bool,
pub negative_bounds: bool,
pub omit_gdb_pretty_printer_section: bool,
pub pattern_complexity: bool,
pub pattern_types: bool,
pub prelude_import: bool,
pub profiler_runtime: bool,
pub rustc_attrs: bool,
pub staged_api: bool,
pub test_unstable_lint: bool,
pub with_negative_coherence: bool,
pub abi_vectorcall: bool,
pub auto_traits: bool,
pub box_patterns: bool,
pub builtin_syntax: bool,
pub doc_notable_trait: bool,
pub dropck_eyepatch: bool,
pub fundamental: bool,
pub link_llvm_intrinsics: bool,
pub linkage: bool,
pub needs_panic_runtime: bool,
pub panic_runtime: bool,
pub rustc_allow_const_fn_unstable: bool,
pub rustc_private: bool,
pub rustdoc_internals: bool,
pub rustdoc_missing_doc_code_examples: bool,
pub start: bool,
pub structural_match: bool,
pub unboxed_closures: bool,
pub aarch64_ver_target_feature: bool,
pub arm_target_feature: bool,
pub avx512_target_feature: bool,
pub bpf_target_feature: bool,
pub csky_target_feature: bool,
pub ermsb_target_feature: bool,
pub hexagon_target_feature: bool,
pub lahfsahf_target_feature: bool,
pub loongarch_target_feature: bool,
pub mips_target_feature: bool,
pub powerpc_target_feature: bool,
pub prfchw_target_feature: bool,
pub riscv_target_feature: bool,
pub rtm_target_feature: bool,
pub s390x_target_feature: bool,
pub sse4a_target_feature: bool,
pub tbm_target_feature: bool,
pub wasm_target_feature: bool,
pub abi_avr_interrupt: bool,
pub abi_c_cmse_nonsecure_call: bool,
pub abi_msp430_interrupt: bool,
pub abi_ptx: bool,
pub abi_riscv_interrupt: bool,
pub abi_x86_interrupt: bool,
pub adt_const_params: bool,
pub alloc_error_handler: bool,
pub arbitrary_self_types: bool,
pub asm_const: bool,
pub asm_experimental_arch: bool,
pub asm_goto: bool,
pub asm_unwind: bool,
pub associated_const_equality: bool,
pub associated_type_defaults: bool,
pub async_closure: bool,
pub async_fn_track_caller: bool,
pub async_for_loop: bool,
pub c_variadic: bool,
pub cfg_overflow_checks: bool,
pub cfg_relocation_model: bool,
pub cfg_sanitize: bool,
pub cfg_sanitizer_cfi: bool,
pub cfg_target_compact: bool,
pub cfg_target_has_atomic: bool,
pub cfg_target_has_atomic_equal_alignment: bool,
pub cfg_target_thread_local: bool,
pub cfg_ub_checks: bool,
pub cfg_version: bool,
pub cfi_encoding: bool,
pub closure_lifetime_binder: bool,
pub closure_track_caller: bool,
pub cmse_nonsecure_entry: bool,
pub const_async_blocks: bool,
pub const_closures: bool,
pub const_extern_fn: bool,
pub const_fn_floating_point_arithmetic: bool,
pub const_for: bool,
pub const_mut_refs: bool,
pub const_precise_live_drops: bool,
pub const_refs_to_cell: bool,
pub const_refs_to_static: bool,
pub const_trait_impl: bool,
pub const_try: bool,
pub coroutine_clone: bool,
pub coroutines: bool,
pub coverage_attribute: bool,
pub custom_inner_attributes: bool,
pub custom_test_frameworks: bool,
pub decl_macro: bool,
pub default_type_parameter_fallback: bool,
pub deprecated_safe: bool,
pub deprecated_suggestion: bool,
pub deref_patterns: bool,
pub derive_smart_pointer: bool,
pub do_not_recommend: bool,
pub doc_auto_cfg: bool,
pub doc_cfg: bool,
pub doc_cfg_hide: bool,
pub doc_masked: bool,
pub dyn_star: bool,
pub effects: bool,
pub exhaustive_patterns: bool,
pub explicit_tail_calls: bool,
pub expr_fragment_specifier_2024: bool,
pub extended_varargs_abi_support: bool,
pub extern_types: bool,
pub f128: bool,
pub f16: bool,
pub ffi_const: bool,
pub ffi_pure: bool,
pub fn_align: bool,
pub fn_delegation: bool,
pub freeze_impls: bool,
pub gen_blocks: bool,
pub generic_arg_infer: bool,
pub generic_associated_types_extended: bool,
pub generic_const_exprs: bool,
pub generic_const_items: bool,
pub global_registration: bool,
pub half_open_range_patterns_in_slices: bool,
pub if_let_guard: bool,
pub impl_trait_in_assoc_type: bool,
pub impl_trait_in_fn_trait_return: bool,
pub inherent_associated_types: bool,
pub inline_const_pat: bool,
pub intra_doc_pointers: bool,
pub large_assignments: bool,
pub lazy_type_alias: bool,
pub let_chains: bool,
pub link_arg_attribute: bool,
pub macro_metavar_expr: bool,
pub macro_metavar_expr_concat: bool,
pub marker_trait_attr: bool,
pub min_exhaustive_patterns: bool,
pub min_specialization: bool,
pub more_qualified_paths: bool,
pub must_not_suspend: bool,
pub mut_ref: bool,
pub naked_functions: bool,
pub native_link_modifiers_as_needed: bool,
pub negative_impls: bool,
pub never_patterns: bool,
pub never_type: bool,
pub never_type_fallback: bool,
pub no_core: bool,
pub no_sanitize: bool,
pub non_exhaustive_omitted_patterns_lint: bool,
pub non_lifetime_binders: bool,
pub object_safe_for_dispatch: bool,
pub offset_of_enum: bool,
pub offset_of_nested: bool,
pub offset_of_slice: bool,
pub optimize_attribute: bool,
pub patchable_function_entry: bool,
pub postfix_match: bool,
pub precise_capturing: bool,
pub proc_macro_hygiene: bool,
pub raw_ref_op: bool,
pub ref_pat_eat_one_layer_2024: bool,
pub ref_pat_eat_one_layer_2024_structural: bool,
pub register_tool: bool,
pub repr128: bool,
pub repr_simd: bool,
pub result_ffi_guarantees: bool,
pub return_type_notation: bool,
pub rust_cold_cc: bool,
pub shorter_tail_lifetimes: bool,
pub simd_ffi: bool,
pub specialization: bool,
pub stmt_expr_attributes: bool,
pub strict_provenance: bool,
pub string_deref_patterns: bool,
pub target_feature_11: bool,
pub thread_local: bool,
pub trait_alias: bool,
pub trait_upcasting: bool,
pub transmute_generic_consts: bool,
pub transparent_unions: bool,
pub trivial_bounds: bool,
pub try_blocks: bool,
pub type_alias_impl_trait: bool,
pub type_changing_struct_update: bool,
pub unnamed_fields: bool,
pub unsafe_attributes: bool,
pub unsafe_extern_blocks: bool,
pub unsized_const_params: bool,
pub unsized_fn_params: bool,
pub unsized_locals: bool,
pub unsized_tuple_coercion: bool,
pub used_with_arg: bool,
pub x86_amx_intrinsics: bool,
pub xop_target_feature: bool,
pub yeet_expr: 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” here means that the feature is actually enabled in the current crate.
declared_lib_features: Vec<(Symbol, Span)>#![feature] attrs for non-language (library) features.
“declared” here means that the feature is actually enabled in the current crate.
declared_features: FxHashSet<Symbol>declared_lang_features + declared_lib_features.
abi_unadjusted: boolActive state of individual features (unstable only).
Allows using the unadjusted ABI; perma-unstable.
allocator_internals: boolAllows using #![needs_allocator], an implementation detail of #[global_allocator].
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).
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).
anonymous_lifetime_in_impl_trait: boolAllows using anonymous lifetimes in argument-position impl-trait.
compiler_builtins: boolAllows identifying the compiler_builtins crate.
custom_mir: boolAllows writing custom MIR
generic_assert: boolOutputs useful assert! messages
intrinsics: boolAllows using the rust-intrinsic’s “ABI”.
lang_items: boolAllows using #[lang = ".."] attribute for linking items to special compiler logic.
lifetime_capture_rules_2024: boolChanges impl Trait to capture all lifetimes in scope.
link_cfg: boolAllows #[link(..., cfg(..))]; perma-unstable per #37406
multiple_supertrait_upcastable: boolAllows the multiple_supertrait_upcastable lint.
negative_bounds: boolAllow negative trait bounds. This is an internal-only feature for testing the trait solver!
omit_gdb_pretty_printer_section: boolAllows using #[omit_gdb_pretty_printer_section].
pattern_complexity: boolSet the maximum pattern complexity allowed (not limited by default).
pattern_types: boolAllows using pattern types.
prelude_import: boolAllows using #[prelude_import] on glob use items.
profiler_runtime: boolUsed to identify crates that contain the profiler runtime.
rustc_attrs: boolAllows using rustc_* attributes (RFC 572).
staged_api: boolAllows using the #[stable] and #[unstable] attributes.
test_unstable_lint: boolAdded for testing unstable lints; perma-unstable.
with_negative_coherence: boolUse for stable + negative coherence and strict coherence depending on trait’s rustc_strict_coherence value.
abi_vectorcall: boolAllows using the vectorcall ABI.
auto_traits: boolAllows features specific to auto traits.
Renamed from optin_builtin_traits.
box_patterns: boolAllows using box in patterns (RFC 469).
builtin_syntax: boolAllows builtin # foo() syntax
doc_notable_trait: boolAllows #[doc(notable_trait)].
Renamed from doc_spotlight.
dropck_eyepatch: boolAllows using the may_dangle attribute (RFC 1327).
fundamental: boolAllows using the #[fundamental] attribute.
link_llvm_intrinsics: boolAllows using #[link_name="llvm.*"].
linkage: boolAllows using the #[linkage = ".."] attribute.
needs_panic_runtime: boolAllows declaring with #![needs_panic_runtime] that a panic runtime is needed.
panic_runtime: boolAllows using the #![panic_runtime] attribute.
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].
rustc_private: boolAllows using compiler’s own crates.
rustdoc_internals: boolAllows using internal rustdoc features like doc(keyword).
rustdoc_missing_doc_code_examples: boolAllows using the rustdoc::missing_doc_code_examples lint
start: boolAllows using #[start] on a function indicating that it is the program entrypoint.
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.
unboxed_closures: boolAllows using the rust-call ABI.
aarch64_ver_target_feature: bool§arm_target_feature: bool§avx512_target_feature: bool§bpf_target_feature: bool§csky_target_feature: bool§ermsb_target_feature: bool§hexagon_target_feature: bool§lahfsahf_target_feature: bool§loongarch_target_feature: bool§mips_target_feature: bool§powerpc_target_feature: bool§prfchw_target_feature: bool§riscv_target_feature: bool§rtm_target_feature: bool§s390x_target_feature: bool§sse4a_target_feature: bool§tbm_target_feature: bool§wasm_target_feature: bool§abi_avr_interrupt: boolAllows extern "avr-interrupt" fn() and extern "avr-non-blocking-interrupt" fn().
abi_c_cmse_nonsecure_call: boolAllows extern "C-cmse-nonsecure-call" fn().
abi_msp430_interrupt: boolAllows extern "msp430-interrupt" fn().
abi_ptx: boolAllows extern "ptx-*" fn().
abi_riscv_interrupt: boolAllows extern "riscv-interrupt-m" fn() and extern "riscv-interrupt-s" fn().
abi_x86_interrupt: boolAllows extern "x86-interrupt" fn().
adt_const_params: boolAllows additional const parameter types, such as [u8; 10] or user defined types
alloc_error_handler: boolAllows defining an #[alloc_error_handler].
arbitrary_self_types: boolAllows trait methods with arbitrary self types.
asm_const: boolAllows using const operands in inline assembly.
asm_experimental_arch: boolEnables experimental inline assembly support for additional architectures.
asm_goto: boolAllows using label operands in inline assembly.
asm_unwind: boolAllows the may_unwind option in inline assembly.
associated_const_equality: boolAllows users to enforce equality of associated constants TraitImpl<AssocConst=3>.
associated_type_defaults: boolAllows associated type defaults.
async_closure: boolAllows async || body closures.
async_fn_track_caller: boolAllows #[track_caller] on async functions.
async_for_loop: boolAllows for await loops.
c_variadic: boolAllows using C-variadics.
cfg_overflow_checks: boolAllows the use of #[cfg(overflow_checks) to check if integer overflow behaviour.
cfg_relocation_model: boolProvides the relocation model information as cfg entry
cfg_sanitize: boolAllows the use of #[cfg(sanitize = "option")]; set when -Zsanitizer is used.
cfg_sanitizer_cfi: boolAllows cfg(sanitizer_cfi_generalize_pointers) and cfg(sanitizer_cfi_normalize_integers).
cfg_target_compact: boolAllows cfg(target(abi = "...")).
cfg_target_has_atomic: boolAllows cfg(target_has_atomic_load_store = "...").
cfg_target_has_atomic_equal_alignment: boolAllows cfg(target_has_atomic_equal_alignment = "...").
cfg_target_thread_local: boolAllows cfg(target_thread_local).
cfg_ub_checks: boolAllows the use of #[cfg(ub_checks) to check if UB checks are enabled.
cfg_version: boolAllow conditional compilation depending on rust version
cfi_encoding: boolAllows to use the #[cfi_encoding = ""] attribute.
closure_lifetime_binder: boolAllows for<...> on closures and coroutines.
closure_track_caller: boolAllows #[track_caller] on closures and coroutines.
cmse_nonsecure_entry: boolAllows to use the #[cmse_nonsecure_entry] attribute.
const_async_blocks: boolAllows async {} expressions in const contexts.
const_closures: boolAllows const || {} closures in const contexts.
const_extern_fn: boolAllows the definition of const extern fn and const unsafe extern fn.
const_fn_floating_point_arithmetic: boolAllows basic arithmetic on floating point types in a const fn.
const_for: boolAllows for _ in _ loops in const contexts.
const_mut_refs: boolAllows using &mut in constant functions.
const_precise_live_drops: boolBe more precise when looking for live drops in a const context.
const_refs_to_cell: boolAllows references to types with interior mutability within constants
const_refs_to_static: boolAllows creating pointers and references to static items in constants.
const_trait_impl: boolAllows impl const Trait for T syntax.
const_try: boolAllows the ? operator in const contexts.
coroutine_clone: boolAllows coroutines to be cloned.
coroutines: boolAllows defining coroutines.
coverage_attribute: boolAllows function attribute #[coverage(on/off)], to control coverage
instrumentation of that function.
custom_inner_attributes: boolAllows non-builtin attributes in inner attribute position.
custom_test_frameworks: boolAllows custom test frameworks with #![test_runner] and #[test_case].
decl_macro: boolAllows declarative macros 2.0 (macro).
default_type_parameter_fallback: boolAllows default type parameters to influence type inference.
deprecated_safe: boolAllows using #[deprecated_safe] to deprecate the safeness of a function or trait
deprecated_suggestion: boolAllows having using suggestion in the #[deprecated] attribute.
deref_patterns: boolAllows deref patterns.
derive_smart_pointer: boolAllows deriving SmartPointer traits
do_not_recommend: boolControls errors in trait implementations.
doc_auto_cfg: boolTells rustdoc to automatically generate #[doc(cfg(...))].
doc_cfg: boolAllows #[doc(cfg(...))].
doc_cfg_hide: boolAllows #[doc(cfg_hide(...))].
doc_masked: boolAllows #[doc(masked)].
dyn_star: boolAllows dyn* Trait objects.
effects: boolUses generic effect parameters for ~const bounds
exhaustive_patterns: boolAllows exhaustive pattern matching on types that contain uninhabited types.
explicit_tail_calls: boolAllows explicit tail calls via become expression.
expr_fragment_specifier_2024: boolUses 2024 rules for matching expr fragments in macros. Also enables expr_2021 fragment.
extended_varargs_abi_support: boolAllows using efiapi, sysv64 and win64 as calling convention
for functions with varargs.
extern_types: boolAllows defining extern types.
f128: boolAllow using 128-bit (quad precision) floating point numbers.
f16: boolAllow using 16-bit (half precision) floating point numbers.
ffi_const: boolAllows the use of #[ffi_const] on foreign functions.
ffi_pure: boolAllows the use of #[ffi_pure] on foreign functions.
fn_align: boolAllows using #[repr(align(...))] on function items
fn_delegation: boolSupport delegating implementation of functions to other already implemented functions.
freeze_impls: boolAllows impls for the Freeze trait.
gen_blocks: boolAllows defining gen blocks and gen fn.
generic_arg_infer: boolInfer generic args for both consts and types.
generic_associated_types_extended: boolAn extension to the generic_associated_types feature, allowing incomplete features.
generic_const_exprs: boolAllows non-trivial generic constants which have to have wfness manually propagated to callers
generic_const_items: boolAllows generic parameters and where-clauses on free & associated const items.
global_registration: boolAllows registering static items globally, possibly across crates, to iterate over at runtime.
half_open_range_patterns_in_slices: boolAllows using ..=X as a patterns in slices.
if_let_guard: boolAllows if let guard in match arms.
impl_trait_in_assoc_type: boolAllows impl Trait to be used inside associated types (RFC 2515).
impl_trait_in_fn_trait_return: boolAllows impl Trait as output type in Fn traits in return position of functions.
inherent_associated_types: boolAllows associated types in inherent impls.
inline_const_pat: boolAllow anonymous constants from an inline const block in pattern position
intra_doc_pointers: boolAllows using pointer and reference in intra-doc links
large_assignments: bool§lazy_type_alias: boolAllow to have type alias types for inter-crate use.
let_chains: boolAllows if/while p && let q = r && ... chains.
link_arg_attribute: boolAllows using #[link(kind = "link-arg", name = "...")]
to pass custom arguments to the linker.
macro_metavar_expr: boolGive access to additional metadata about declarative macro meta-variables.
macro_metavar_expr_concat: boolProvides a way to concatenate identifiers using metavariable expressions.
marker_trait_attr: boolAllows #[marker] on certain traits allowing overlapping implementations.
min_exhaustive_patterns: boolAllows exhaustive pattern matching on types that contain uninhabited types in cases that are unambiguously sound.
min_specialization: boolA minimal, sound subset of specialization intended to be used by the standard library until the soundness issues with specialization are fixed.
more_qualified_paths: boolAllows qualified paths in struct expressions, struct patterns and tuple struct patterns.
must_not_suspend: boolAllows the #[must_not_suspend] attribute.
mut_ref: boolAllows mut ref and mut ref mut identifier patterns.
naked_functions: boolAllows using #[naked] on functions.
native_link_modifiers_as_needed: boolAllows specifying the as-needed link modifier
negative_impls: boolAllow negative trait implementations.
never_patterns: boolAllows the ! pattern.
never_type: boolAllows the ! type. Does not imply ‘exhaustive_patterns’ (below) any more.
never_type_fallback: boolAllows diverging expressions to fall back to ! rather than ().
no_core: boolAllows #![no_core].
no_sanitize: boolAllows the use of no_sanitize attribute.
non_exhaustive_omitted_patterns_lint: boolAllows using the non_exhaustive_omitted_patterns lint.
non_lifetime_binders: boolAllows for<T> binders in where-clauses
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.
offset_of_enum: boolAllows using enums in offset_of!
offset_of_nested: boolAllows using multiple nested field accesses in offset_of!
offset_of_slice: boolAllows using fields with slice type in offset_of!
optimize_attribute: boolAllows using #[optimize(X)].
patchable_function_entry: boolAllows specifying nop padding on functions for dynamic patching.
postfix_match: boolAllows postfix match expr.match { ... }
precise_capturing: boolAllows use<'a, 'b, A, B> in impl Trait + use<...> for precise capture of generic args.
proc_macro_hygiene: boolAllows macro attributes on expressions, statements and non-inline modules.
raw_ref_op: boolAllows &raw const $place_expr and &raw mut $place_expr expressions.
ref_pat_eat_one_layer_2024: boolMakes & and &mut patterns eat only one layer of references in Rust 2024.
ref_pat_eat_one_layer_2024_structural: boolMakes & and &mut patterns eat only one layer of references in Rust 2024—structural variant
register_tool: boolAllows using the #[register_tool] attribute.
repr128: boolAllows the #[repr(i128)] attribute for enums.
repr_simd: boolAllows repr(simd) and importing the various simd intrinsics.
result_ffi_guarantees: boolAllows enums like Result<T, E> to be used across FFI, if T’s niche value can be used to describe E or vise-versa.
return_type_notation: boolAllows bounding the return type of AFIT/RPITIT.
rust_cold_cc: boolAllows extern "rust-cold".
shorter_tail_lifetimes: boolShortern the tail expression lifetime
simd_ffi: boolAllows the use of SIMD types in functions declared in extern blocks.
specialization: boolAllows specialization of implementations (RFC 1210).
stmt_expr_attributes: boolAllows attributes on expressions and non-item statements.
strict_provenance: boolAllows lints part of the strict provenance effort.
string_deref_patterns: boolAllows string patterns to dereference values to match them.
target_feature_11: boolAllows the use of #[target_feature] on safe functions.
thread_local: boolAllows using #[thread_local] on static items.
trait_alias: boolAllows defining trait X = A + B; alias items.
trait_upcasting: boolAllows dyn upcasting trait objects via supertraits.
Dyn upcasting is casting, e.g., dyn Foo -> dyn Bar where Foo: Bar.
transmute_generic_consts: boolAllows for transmuting between arrays with sizes that contain generic consts.
transparent_unions: boolAllows #[repr(transparent)] on unions (RFC 2645).
trivial_bounds: boolAllows inconsistent bounds in where clauses.
try_blocks: boolAllows using try {...} expressions.
type_alias_impl_trait: boolAllows impl Trait to be used inside type aliases (RFC 2515).
type_changing_struct_update: boolAllows creation of instances of a struct by moving fields that have not changed from prior instances of the same struct (RFC #2528)
unnamed_fields: boolAllows unnamed fields of struct and union type
unsafe_attributes: boolAllows unsafe attributes.
unsafe_extern_blocks: boolAllows unsafe on extern declarations and safety qualifiers over internal items.
unsized_const_params: boolAllows const generic parameters to be defined with types that
are not Sized, e.g. fn foo<const N: [u8]>() {.
unsized_fn_params: boolAllows unsized fn parameters.
unsized_locals: boolAllows unsized rvalues at arguments and parameters.
unsized_tuple_coercion: boolAllows unsized tuple coercion.
used_with_arg: boolAllows using the #[used(linker)] (or #[used(compiler)]) attribute.
x86_amx_intrinsics: boolAllows use of x86 AMX target-feature attributes and intrinsics
xop_target_feature: boolAllows use of the xop target-feature
yeet_expr: boolAllows do yeet expressions
Implementations§
source§impl Features
impl Features
pub fn set_declared_lang_feature( &mut self, symbol: Symbol, span: Span, since: Option<Symbol>, )
pub fn set_declared_lib_feature(&mut self, symbol: Symbol, span: Span)
sourcepub fn all_features(&self) -> [u8; 213]
pub fn all_features(&self) -> [u8; 213]
This is intended for hashing the set of active features.
The expectation is that this produces much smaller code than other alternatives.
Note that the total feature count is pretty small, so this is not a huge array.
sourcepub fn declared(&self, feature: Symbol) -> bool
pub fn declared(&self, feature: Symbol) -> bool
Is the given feature explicitly declared, i.e. named in a
#![feature(...)] within the code?
sourcepub fn active(&self, feature: Symbol) -> bool
pub fn active(&self, feature: Symbol) -> bool
Is the given feature active (enabled by the user)?
Panics if the symbol doesn’t correspond to a declared feature.
sourcepub fn incomplete(&self, feature: Symbol) -> bool
pub fn incomplete(&self, feature: Symbol) -> bool
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 DynSend for Features
impl DynSync for Features
impl Freeze for Features
impl RefUnwindSafe for Features
impl Send for Features
impl Sync for Features
impl Unpin for Features
impl UnwindSafe for Features
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moresource§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
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: 296 bytes