diff --git a/generate-glossary.py b/generate-glossary.py new file mode 100755 index 00000000..4ff4ef55 --- /dev/null +++ b/generate-glossary.py @@ -0,0 +1,222 @@ +#!/usr/bin/env -S uv run +# SPDX-License-Identifier: MIT OR Apache-2.0 +# SPDX-FileCopyrightText: The Ferrocene Developers + +from __future__ import annotations + +import argparse +from dataclasses import dataclass +from hashlib import sha1 +from pathlib import Path +import re +import sys + +ROOT = Path(__file__).resolve().parent +SRC_DIR = ROOT / "src" +EXCLUDED_DOCS = {"glossary.rst", "index.rst", "changelog.rst"} +DT_RE = re.compile(r":dt:`([^`]+)`") +DC_RE = re.compile(r":dc:`([^`]+)`") +SPLIT_NUMBERS = re.compile(r"([0-9]+)") +SPDX_LICENSE_KEY = "SPDX-License" "-Identifier" +SPDX_COPYRIGHT_KEY = "SPDX-FileCopyright" "Text" +SPDX_HEADER = [ + f".. {SPDX_LICENSE_KEY}: MIT OR Apache-2.0", + f" {SPDX_COPYRIGHT_KEY}: The Ferrocene Developers", + f" {SPDX_COPYRIGHT_KEY}: The Rust Project Contributors", +] + + +def load_definitions_module(): + exts_path = str(ROOT / "exts") + if exts_path not in sys.path: + sys.path.append(exts_path) + + from ferrocene_spec.definitions import ( # pylint: disable=import-outside-toplevel + id_from_text, + parse_target_from_text, + ) + + return id_from_text, parse_target_from_text + + +id_from_text, parse_target_from_text = load_definitions_module() + + +@dataclass +class GlossaryEntry: + term: str + term_id: str + kind: str + body_lines: list[str] + source_file: str + source_line: int + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--src", default="src", help="Source directory") + parser.add_argument( + "--output", + default="build/generated.glossary.rst", + help="Generated glossary output path", + ) + return parser.parse_args() + + +def paragraph_bounds(lines: list[str], index: int) -> tuple[int, int]: + start = index + while start > 0 and lines[start - 1].strip() != "": + start -= 1 + + end = index + while end + 1 < len(lines) and lines[end + 1].strip() != "": + end += 1 + + return start, end + + +def strip_dp_line(lines: list[str]) -> list[str]: + if lines and lines[0].strip().startswith(":dp:`"): + return lines[1:] + return lines + + +def replace_first_role( + lines: list[str], source_role: str, target_role: str +) -> list[str]: + needle = f":{source_role}:`" + replacement = f":{target_role}:`" + updated = list(lines) + + for index, line in enumerate(updated): + if needle in line: + updated[index] = line.replace(needle, replacement, 1) + return updated + + return updated + + +def natural_sort_key(term: str) -> list[object]: + return [ + int(fragment) if fragment.isdigit() else fragment.casefold() + for fragment in SPLIT_NUMBERS.split(term) + ] + + +def deterministic_id(prefix: str, kind: str, term_id: str) -> str: + digest = sha1(f"{prefix}:{kind}:{term_id}".encode("utf-8")).hexdigest() + return f"fls_{digest[:12]}" + + +def body_starts_with_list_item_dp(body_lines: list[str]) -> bool: + for line in body_lines: + stripped = line.lstrip() + if not stripped: + continue + return bool(re.match(r"(\*|\-|#\.)\s+:dp:`", stripped)) + return False + + +def collect_entries(src: Path) -> list[GlossaryEntry]: + entries: dict[tuple[str, str], GlossaryEntry] = {} + + for path in sorted(src.glob("*.rst")): + if path.name in EXCLUDED_DOCS: + continue + + lines = path.read_text(encoding="utf-8").splitlines() + for index, line in enumerate(lines): + matches = [] + matches.extend( + ("term", match.group(1).strip()) for match in DT_RE.finditer(line) + ) + matches.extend( + ("code", match.group(1).strip()) for match in DC_RE.finditer(line) + ) + if not matches: + continue + + start, end = paragraph_bounds(lines, index) + paragraph_lines = strip_dp_line(lines[start : end + 1]) + if not paragraph_lines: + continue + + for kind, raw in matches: + term, target = parse_target_from_text(raw) + term_id = id_from_text("term", target) + key = (kind, term_id) + if key in entries: + continue + + body_lines = list(paragraph_lines) + if kind == "term": + body_lines = replace_first_role(body_lines, "dt", "t") + else: + body_lines = replace_first_role(body_lines, "dc", "c") + + body_lines = [ + line.replace(":dt:`", ":t:`").replace(":dc:`", ":c:`") + for line in body_lines + ] + + entries[key] = GlossaryEntry( + term=term, + term_id=term_id, + kind=kind, + body_lines=body_lines, + source_file=path.as_posix(), + source_line=index + 1, + ) + + return sorted( + entries.values(), key=lambda item: (natural_sort_key(item.term), item.term) + ) + + +def render_entries(entries: list[GlossaryEntry]) -> list[str]: + output = [] + + for entry in entries: + section_id = deterministic_id("section", entry.kind, entry.term_id) + heading = "^" * len(entry.term) + + body_lines = list(entry.body_lines) + if not body_starts_with_list_item_dp(body_lines): + paragraph_id = deterministic_id("paragraph", entry.kind, entry.term_id) + body_lines = [f":dp:`{paragraph_id}`", *body_lines] + + output.extend( + [ + f".. _{section_id}:", + "", + entry.term, + heading, + "", + *body_lines, + "", + ] + ) + + while output and output[-1] == "": + output.pop() + + return output + + +def main() -> int: + args = parse_args() + src = (ROOT / args.src).resolve() + output = (ROOT / args.output).resolve() + + entries = collect_entries(src) + rendered = render_entries(entries) + output_lines = [*SPDX_HEADER, "", *rendered] + + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text("\n".join(output_lines) + "\n", encoding="utf-8") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/glossary.rst b/src/glossary.rst index 8c41c5ed..fd3019ba 100644 --- a/src/glossary.rst +++ b/src/glossary.rst @@ -11,6853 +11,4 @@ Glossary ======== -.. _fls_m98yg554tj9s: - -ABI -^^^ - -.. _fls_zOdDwoObYHC0: - -ABI clobber -^^^^^^^^^^^ - -:dp:`fls_OVX4RFcWKfP9` -An :t:`ABI clobber` is an argument to :t:`macro` :std:`core::arch::asm` which -indicates that the :t:`[value]s` of selected :t:`[register]s` might be -overwritten during the :t:`execution` of an :t:`assembly code block`. - -.. _fls_g791aj7w5iz1: - -ABI kind -^^^^^^^^ - -:dp:`fls_qo9itrt0n3h8` -The :t:`ABI kind` indicates the :t:`ABI` of a :t:`construct`. - -.. _fls_ymnz0mt7i4m8: - -abort -^^^^^ - -:dp:`fls_u4o7tda3ilv0` -:t:`Abort` is the immediate termination of a program. - -.. _fls_g40une2uudez: - -abstract data type -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_64drmro2fcfo` -An :t:`abstract data type` is a collection of other :t:`[type]s`. - -.. _fls_5fu0ncvnjyna: - -active attribute -^^^^^^^^^^^^^^^^ - -:dp:`fls_r8rzj8mtxtp1` -An :t:`active attribute` is an :t:`attribute` that is removed from the -:t:`item` it decorates. - -.. _fls_xqZapSv9tM1F: - -addition assignment -^^^^^^^^^^^^^^^^^^^ - -.. _fls_iw30dqjaeqle: - -addition assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_w83tf9m7vu67` -An :t:`addition assignment expression` is a -:t:`compound assignment expression` that uses addition. - -.. _fls_mcabdigrqv21: - -addition expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ylfdtuajmi0t` -An :t:`addition expression` is an :t:`arithmetic expression` that uses -addition. - -.. _fls_wbdlbe61de3t: - -adjusted call operand -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_mchqbc64iu0u` -An :t:`adjusted call operand` is the :t:`call operand` after any implicit -adjustments required by :t:`call resolution`. - -.. _fls_j775guurkgo4: - -alignment -^^^^^^^^^ - -:dp:`fls_c0hbatn5o8x3` -The :t:`alignment` of a :t:`value` specifies which addresses are valid for -storing the :t:`value`. :t:`Alignment` is measured in bytes, is at least one, -and always a power of two. A :t:`value` of :t:`alignment` ``N`` is stored at an -address that is a multiple of ``N``. - -.. _fls_jZKpckU1t2lR: - -all configuration predicate -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_IyMZWiTnkYPv` -An :t:`all configuration predicate` is a :t:`configuration predicate` that -models existential quantifier ALL. - -.. _fls_du8uevac5q7j: - -anonymous loop expression -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_csss2a8yk52k` -An :t:`anonymous loop expression` is a :t:`loop expression` without a -:t:`label`. - -.. _fls_dgxkklxcrrl0: - -anonymous return type -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_z6t6lbwwztuf` -An :t:`anonymous return type` is an :t:`impl trait type` ascribed to a -:t:`function` :t:`return type`. - -.. _fls_8oepaq6ang93: - -anonymous type parameter -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_brqaq0736o09` -An :t:`anonymous type parameter` is an :t:`impl trait type` ascribed to a -:t:`function parameter`. - -.. _fls_jrzM6C5B6AMt: - -any configuration predicate -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_0nWHML8eoozG` -An :t:`any configuration predicate` is a :t:`configuration predicate` that -models existential quantifier ANY. - -.. _fls_pcum2wpmgskk: - -Application Binary Interface -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ew4babc9467c` -An :t:`Application Binary Interface` is a set of conventions that dictate how -data and computation cross language boundaries. - -.. _fls_dd008npswhij: - -argument operand -^^^^^^^^^^^^^^^^ - -:dp:`fls_ljuwr88k92vp` -An :t:`argument operand` is an :t:`operand` which is used as an argument in a -:t:`call expression` or a :t:`method call expression`. - -.. _fls_kf81ozijral2: - -arithmetic expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_u3z2r1fw89xo` -An :t:`arithmetic expression` is an :t:`expression` that computes a :t:`value` -from two :t:`[operand]s` using arithmetic. - -.. _fls_kSuc3Gi7cdly: - -arithmetic operator -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Qf7DckakqvRq` -An :t:`arithmetic operator` is an operator used in an :t:`arithmetic expression`. - -.. _fls_vZ1H57x9OFSZ: - -arithmetic overflow -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_jbytOQvIddAl` -An :t:`arithmetic overflow` occurs when an :t:`operator expression` computes a -:t:`value` of a :t:`scalar type` that lies outside of the range of valid -:t:`[value]s` for the :t:`scalar type` or when one or more :t:`operand` of an -:t:`operator expression` lies outside of the range of valid :t:`[value]s` for -the operation. - -.. _fls_9aice4qbiqxf: - -arity -^^^^^ - -:dp:`fls_dl2gkip00bua` -The :t:`arity` of a :t:`tuple type` is the number of :t:`[tuple field]s` in its -:s:`TupleFieldList`. - -.. _fls_bn1regeucxqi: - -array -^^^^^ - -:dp:`fls_metry7a5prpt` -An :t:`array` is a :t:`value` of an :t:`array type`. - -.. _fls_2d9fee2o9: - -array element constructor -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_cmx9ls5zoazp` -An :t:`array element constructor` is an :t:`array expression` that lists all -elements of the :t:`array` being constructed. - -.. _fls_yvzpqb192pci: - -array expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_pyjkjbvqarto` -An :t:`array expression` is an :t:`expression` that constructs an :t:`array`. - -.. _fls_6jkgj61m49vg: - -array repetition constructor -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_st1kw8mor2zk` -An :t:`array repetition constructor` is an :t:`array expression` that -specifies how many times an element is repeated in the :t:`array` being -constructed. - -.. _fls_15gzlmwuu4pk: - -array type -^^^^^^^^^^ - -:dp:`fls_muddb5qxdc4k` -An :t:`array type` is a :t:`sequence type` that represents a fixed sequence of -elements. - -.. _fls_et0NKXAYyDmh: - -assembly code block -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_d1ojwFwKpvm3` -An :t:`assembly code block` is a sequence of :t:`[assembly instruction]s`. - -.. _fls_iUnmWXxcuzif: - -assembly directive -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_FP2KbO6c3cpq` -An :t:`assembly directive` is a request to the assembler to perform a -particular action or change a setting. - -.. _fls_HliSgbSzPO2r: - -assembly instruction -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_VLu28hOvCy2o` -An :t:`assembly instruction` is a :t:`string literal` that represents a -low-level assembly operation or an :t:`assembly directive`. - -.. _fls_1iVIUoVDsYph: - -assembly option -^^^^^^^^^^^^^^^ - -:dp:`fls_F5I3okDKIYnE` -An :t:`assembly option` is used to specify a characteristic of or a restriction -on the related :t:`assembly code block`. - -.. _fls_l78iam7w8w38: - -assigned operand -^^^^^^^^^^^^^^^^ - -:dp:`fls_g714mnh7s7fx` -An :t:`assigned operand` is the target :t:`operand` of a -:t:`compound assignment expression`. - -.. _fls_m1mim5qdzf2u: - -assignee expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_wpmcexvbynbu` -An :t:`assignee expression` is an :t:`expression` that appears as the -:t:`left operand` of an :t:`assignment expression`. The following -:t:`[expression]s` are :t:`[assignee expression]s`: - -.. _fls_3hs9hqsthil1: - -assignee operand -^^^^^^^^^^^^^^^^ - -:dp:`fls_4tgf0wu2mr3l` -An :t:`assignee operand` is the target :t:`operand` of an -:t:`assignment expression`. - -.. _fls_f6ztsofr6xa9: - -assignment -^^^^^^^^^^ - -.. _fls_2d2elg5eukv4: - -assignment expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_6jkc6a6me3zr` -An :t:`assignment expression` is an :t:`expression` that assigns the -:t:`value` of a :t:`value operand` to an :t:`assignee operand`. - -.. _fls_pjb22ylz5swp: - -associated constant -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_hi9qa0k2nujb` -An :t:`associated constant` is a :t:`constant` that appears as an -:t:`associated item`. - -.. _fls_vxiitesidcc2: - -associated function -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_zcy5pat39bq7` -An :t:`associated function` is a :t:`function` that appears as an -:t:`associated item`. - -.. _fls_9mcx6h6irrlx: - -associated implementation constant -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rfaxcrrrb5q9` -An :t:`associated implementation constant` is an :t:`associated constant` that -appears within an :t:`implementation`. - -.. _fls_n85fwe75ku60: - -associated implementation function -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_7xbmvl3jrc27` -An :t:`associated implementation function` is an :t:`associated function` that -appears within an :t:`implementation`. - -.. _fls_c0hekhwpznyq: - -associated implementation type -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_6g5t81gx9ayx` -An :t:`associated implementation type` is an :t:`associated type` that appears -within an :t:`implementation`. - -.. _fls_f3ferow5ugp: - -associated item -^^^^^^^^^^^^^^^ - -:dp:`fls_o5ysjk7l91ni` -An :t:`associated item` is an :t:`item` that appears within an -:t:`implementation` or a :t:`trait`. - -.. _fls_8p8teeamua55: - -associated trait constant -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_xhhsej8db74y` -An :t:`associated trait constant` is an :t:`associated constant` that appears -within a :t:`trait`. - -.. _fls_4h7s8u1zumnq: - -associated trait function -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_r927r0pdkb6h` -An :t:`associated trait function` is an :t:`associated function` that appears -within a :t:`trait`. - -.. _fls_fufF4UmzLg5G: - -associated trait implementation function -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_bzdXloUGlVSC` -An :t:`associated trait implementation function` is an :t:`associated function` -that appears within a :t:`trait implementation`. - -.. _fls_47xtji9Pk8Lw: - -associated trait implementation item -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_PaENehzTVgfB` -An :t:`associated trait implementation item` is an :t:`associated item` that -appears within a :t:`trait implementation`. - -.. _fls_J946yIcmlAyV: - -associated trait item -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_IlRrVLm05GTf` -An :t:`associated trait item` is an :t:`associated item` that appears -within a :t:`trait`. - -.. _fls_azz308k3ra99: - -associated trait type -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_dndsgkiq9r7i` -An :t:`associated trait type` is an :t:`associated type` that appears within -a :t:`trait`. - -.. _fls_zfs68g3yk0uw: - -associated type -^^^^^^^^^^^^^^^ - -:dp:`fls_rs0n72c2d8f` -An :t:`associated type` is a :t:`type alias` that appears as an -:t:`associated item`. - -.. _fls_zOe783MlE9i9: - -associated type projection -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_4moFUY6epk0v` -An :t:`associated type projection` is a :t:`qualified type path` of the form -``::associated_type``, where ``type`` is a :t:`type`, ``trait`` -is a :t:`qualifying trait`, and ``associated type`` is an :t:`associated type`. - -.. _fls_fczijre8123c: - -associativity -^^^^^^^^^^^^^ - -:dp:`fls_7i7o23mi2i33` -:t:`Associativity` is the order by which :t:`[operand]s` are evaluated within -a single :t:`expression`. - -.. _fls_9speqyus5ku3: - -async block -^^^^^^^^^^^ - -.. _fls_n5m58be9jnjj: - -async block expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_p6nvfs7bfoxd` -An :t:`async block expression` is a :t:`block expression` that is specified -with :t:`keyword` ``async`` and encapsulates behavior which is executed in -an asynchronous manner. - -.. _fls_oUdQnbW1MAFW: - -async closure expression -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_SxydbQPPX9Jw` -An :t:`async closure expression` is a :t:`closure expression` subject to keyword ``async`` that defines an :t:`async closure type` and constructs a value of that :t:`type`. - -.. _fls_Pq4ohvrMOi5p: - -async closure type -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_IT28HJaF8rnm` -An :t:`async closure type` is the :t:`closure type` defined by an -:t:`async closure expression`. - -.. _fls_lYrTaCM1LcXU: - -async control flow boundary -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_EXoGOkCRsfKK` -An :t:`async control flow boundary` is a :t:`control flow boundary` introduced -by an :t:`async block expression`, :t:`async function`, or -:t:`async closure expression`. - -.. _fls_nlafxy2z1moc: - -async function -^^^^^^^^^^^^^^ - -:dp:`fls_gv9wl1cbaw1g` -An :t:`async function` is a :t:`function` subject to :t:`keyword` ``async``. An -:t:`async function` of the form - -.. _fls_yikjq8yn3nnh: - -atomic -^^^^^^ - -.. _fls_197vnaw2zbnc: - -atomic type -^^^^^^^^^^^ - -:dp:`fls_cycpv4fopgx2` -An :t:`atomic type` is a :t:`type` defined in :t:`module` -:std:`core::sync::atomic`. :t:`[Atomic type]s` provide primitive shared-memory -communication between threads. - -.. _fls_w1plocebd7kg: - -attribute -^^^^^^^^^ - -:dp:`fls_o74rfpe6zo6a` -An :t:`attribute` is a general, free-form metadatum that is interpreted based on -its :t:`name`, convention, language, and tool. - -.. _fls_SsMRqkHLDAgG: - -attribute content -^^^^^^^^^^^^^^^^^ - -:dp:`fls_sn0GvVmM3o38` -An :t:`attribute content` is a :t:`construct` that provides the content of -an :t:`attribute`. - -.. _fls_x1fafbpo0mlu: - -attribute macro -^^^^^^^^^^^^^^^ - -:dp:`fls_mtqr4d817ikn` -An :t:`attribute macro` is a :t:`procedural macro` that consumes two streams -of :t:`[token]s` to produce a single stream of :t:`[token]s`, and defines a -new :t:`outer attribute` that can be attached to :t:`[item]s`. -:t:`[Attribute macro]s` are used to replace :t:`[item]s` with other -:t:`[item]s`. - -.. _fls_24iVIlHhvnVO: - -auto trait -^^^^^^^^^^ - -:dp:`fls_d84nTOR4pZq5` -An :t:`auto trait` is a :t:`trait` that is implicitly and automatically -implemented by a :t:`type` when the types of its constituent :t:`[field]s` -implement the :t:`trait`. - -.. _fls_n4oo89apywk4: - -await expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_psbc3b8pec47` -An :t:`await expression` is an :t:`expression` that polls a :t:`future`, -suspending the :t:`execution` of the :t:`future` until the :t:`future` is ready. - -.. _fls_a8tavqxuvaju: - -base initializer -^^^^^^^^^^^^^^^^ - -:dp:`fls_dnuwn2tnvtgy` -A :t:`base initializer` is a :t:`construct` that specifies an :t:`enum value`, or -a :t:`struct value` to be used as a base for -construction in a :t:`struct expression`. - -.. _fls_bii5eu1wznzk: - -basic assignment -^^^^^^^^^^^^^^^^ - -:dp:`fls_byq9e2jf8r22` -A :t:`basic assignment` is an :t:`assignment expression` that is not a -:t:`destructuring assignment`. - -.. _fls_kahj3y4rvmvb: - -binary crate -^^^^^^^^^^^^ - -:dp:`fls_8gfe7hajxkd7` -A :t:`binary crate` is a :t:`crate` whose :t:`crate type` is ``bin``. - -.. _fls_or4o65fyt28y: - -binary literal -^^^^^^^^^^^^^^ - -:dp:`fls_hy54uj6u3nqw` -A :t:`binary literal` is an :t:`integer literal` in base 2. - -.. _fls_xydujcfvvb8p: - -binary operator -^^^^^^^^^^^^^^^ - -:dp:`fls_v0he0zp9ph7a` -A :t:`binary operator` is an operator that combines a :t:`left operand` and a -:t:`right operand`. - -.. _fls_jrelzibadg7b: - -binding -^^^^^^^ - -:dp:`fls_89qi3unjvwd7` -A :t:`binding` of a :t:`binding pattern` binds a matched :t:`value` to a -:t:`name`. - -.. _fls_glblhx8vzd3z: - -binding argument -^^^^^^^^^^^^^^^^ - -:dp:`fls_9lzcasl4tw7k` -A :t:`binding argument` is a :t:`generic argument` that supplies the :t:`type` -of an :t:`associated trait type`. - -.. _fls_t2cit5QOte8U: - -binding bound argument -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_D3i3n4RIReCA` -A :t:`binding bound argument` is a :t:`generic argument` that further imposes -:t:`[bound]s` on an :t:`associated trait type`. - -.. _fls_bv1k866tai6j: - -binding mode -^^^^^^^^^^^^ - -:dp:`fls_e3uvvvvyzq8h` -A :t:`binding mode` describes whether a :t:`binding` captures a matched -:t:`value` by value, by reference, or by mutable reference. - -.. _fls_1nw19qc14zg6: - -binding pattern -^^^^^^^^^^^^^^^ - -:dp:`fls_ancqgz8pybbe` -A :t:`binding pattern` is either an :t:`identifier pattern` or a -:t:`shorthand deconstructor`. - -.. _fls_5ep4xSGZwtoL: - -binding scope -^^^^^^^^^^^^^ - -:dp:`fls_6qPYH5NJ8usI` -A :t:`binding scope` is a :t:`scope` for :t:`[binding]s`. - -.. _fls_clut5DWMQin8: - -bit and assignment -^^^^^^^^^^^^^^^^^^ - -.. _fls_y72vyr2tmdyb: - -bit and assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_dvqotpte0pc2` -A :t:`bit and assignment expression` is a :t:`compound assignment expression` -that uses bit and arithmetic. - -.. _fls_h6sh4im3gjys: - -bit and expression -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_c1g5gljnr9kz` -A :t:`bit and expression` is a :t:`bit expression` that uses bit and -arithmetic. - -.. _fls_ed6yltkt0gb1: - -bit expression -^^^^^^^^^^^^^^ - -:dp:`fls_b3p5xqsfolqo` -A :t:`bit expression` is an :t:`expression` that computes a :t:`value` from -two :t:`[operand]s` using bit arithmetic. - -.. _fls_90E3eiBYgicI: - -bit or assignment -^^^^^^^^^^^^^^^^^ - -.. _fls_ehorb0lul906: - -bit or assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_tu1owkfk0lu0` -A :t:`bit or assignment expression` is a :t:`compound assignment expression` -that uses bit or arithmetic. - -.. _fls_m33m8nd2rnf8: - -bit or expression -^^^^^^^^^^^^^^^^^ - -:dp:`fls_183aem60of9o` -A :t:`bit or expression` is a :t:`bit expression` that uses bit or arithmetic. - -.. _fls_jEnv7RjEUZvm: - -bit xor assignment -^^^^^^^^^^^^^^^^^^ - -.. _fls_u3fcq7jjyxux: - -bit xor assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ma980ujltab2` -A :t:`bit xor assignment expression` is a :t:`compound assignment expression` -that uses bit exclusive or arithmetic. - -.. _fls_ixw1601j8u39: - -bit xor expression -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_kccsvtzfhbp1` -A :t:`bit xor expression` is a :t:`bit expression` that uses bit exclusive or -arithmetic. - -.. _fls_aa980vviqjue: - -block comment -^^^^^^^^^^^^^ - -:dp:`fls_a0ejcfs7y5uy` -A :t:`block comment` is a :t:`comment` that spans one or more :t:`[line]s`. - -.. _fls_c5qn7wjk0mnx: - -block expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_gvjvzxi2xps4` -A :t:`block expression` is an :t:`expression` that sequences :t:`[expression]s` -and :t:`[statement]s`. - -.. _fls_n485t6wcgx07: - -bool -^^^^ - -:dp:`fls_wtmaf5amvleh` -:dc:`bool` is a :t:`type` whose :t:`[value]s` denote the truth values of logic -and Boolean algebra. - -.. _fls_oz4tdyp3rvm4: - -boolean literal -^^^^^^^^^^^^^^^ - -:dp:`fls_5mrxdqh474vk` -A :t:`boolean literal` is a :t:`literal` that denotes the truth :t:`[value]s` -of logic and Boolean algebra. - -.. _fls_7ef4c6ss7m6i: - -borrow -^^^^^^ - -:dp:`fls_2tpbdddvrl2f` -A :t:`borrow` is a :t:`reference` produced by :t:`borrowing`. - -.. _fls_u0hymkjwyur7: - -borrow expression -^^^^^^^^^^^^^^^^^ - -:dp:`fls_2f55piwg78ru` -A :t:`borrow expression` is an :t:`expression` that borrows the :t:`value` of -its :t:`operand` and creates a :t:`reference` to the memory location of its -:t:`operand`. - -.. _fls_gl84828b074a: - -borrowed -^^^^^^^^ - -:dp:`fls_3gnps2s95ck4` -A :t:`value` is :t:`borrowed` when it is associated with an active -:t:`borrow`. - -.. _fls_95c5cbc2jvpc: - -borrowing -^^^^^^^^^ - -:dp:`fls_2epblwd2slp8` -:t:`Borrowing` is the process of temporarily associating a :t:`reference` with -a :t:`value` without transferring :t:`ownership` permanently. - -.. _fls_ehfvcdpo3l4a: - -bound -^^^^^ - -:dp:`fls_q6mxhn1fxjs6` -A :t:`bound` imposes a constraint on a :t:`generic parameter` by limiting the -set of possible :t:`[generic substitution]s`. - -.. _fls_jlfqyn3enrsi: - -bound pattern -^^^^^^^^^^^^^ - -:dp:`fls_uusfbosjwyd1` -A :t:`bound pattern` is a :t:`pattern` that imposes a constraint on a related -:t:`identifier pattern`. - -.. _fls_xki2cerozblt: - -break expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_8ys8hlqgizoa` -A :t:`break expression` is an :t:`expression` that terminates a -:t:`loop expression` or a :t:`named block expression`. - -.. _fls_ff2zt3ww2yw3: - -break type -^^^^^^^^^^ - -:dp:`fls_jvm1vsqmslxn` -:t:`Break type` is the :t:`type` of the :t:`operand` of a -:t:`break expression`. - -.. _fls_owtptuvleeb: - -break value -^^^^^^^^^^^ - -:dp:`fls_kpka4jf2qr5l` -:t:`Break value` is the :t:`value` of the :t:`operand` of a -:t:`break expression`. - -.. _fls_82ev7wknxqmk: - -built-in attribute -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_a40rclur4orm` -A :t:`built-in attribute` is a language-defined :t:`attribute`. - -.. _fls_QzAif2NyVJbk: - -built-in trait -^^^^^^^^^^^^^^ - -:dp:`fls_IgzD9l8o6R50` -A :t:`built-in trait` is a language-defined :t:`trait` with special meaning to -the compiler. - -.. _fls_e8rokiw23i9t: - -byte literal -^^^^^^^^^^^^ - -:dp:`fls_l67oo0u12zjb` -A :t:`byte literal` is a :t:`literal` that denotes a fixed byte :t:`value`. - -.. _fls_uwe7iomhvgtp: - -byte string literal -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_my4r1l3ilyt2` -A :t:`byte string literal` is a :t:`literal` that consists of multiple -:s:`[AsciiCharacter]s`. - -.. _fls_lfjgrkwra22i: - -C -^ - -:dp:`fls_d4q2ro4nsnop` -In this specification, :t:`C` refers to the C programming language used for -foreign function interfaces. - -.. _fls_wenn1wdsicfz: - -C representation -^^^^^^^^^^^^^^^^ - -:dp:`fls_g9pdb06m5fto` -:t:`C representation` lays out a :t:`type` such that the :t:`type` is -interoperable with the :t:`C` language. - -.. _fls_fls_J0xUy4Mcxoe6: - -C signed int type -^^^^^^^^^^^^^^^^^ - -:dp:`fls_8QIcvapJehqY` -:t:`C signed int type` is the `signed int` :t:`type` of the :t:`C` language. - -.. _fls_roz4WXH5JZFj: - -c string literal -^^^^^^^^^^^^^^^^ - -:dp:`fls_g3NHtaOhTB7g` -A :t:`c string literal` is a :t:`literal` that consists of multiple characters -with an implicit 0x00 byte appended to it. - -.. _fls_Egfa8tdbqllA: - -Call conformance -^^^^^^^^^^^^^^^^ - -:dp:`fls_Jr1gUX7Ju4Oh` -A :t:`call conformance` is the requirement that a :t:`call expression` uses -the :t:`ABI` of the invoked :t:`function`. - -.. _fls_xeo59ol6uh5i: - -call expression -^^^^^^^^^^^^^^^ - -:dp:`fls_a9ap0tyk2eou` -A :t:`call expression` is an :t:`expression` that invokes a :t:`function` or -constructs a :t:`tuple enum variant value` or a :t:`tuple struct value`. - -.. _fls_ezk9xkst7gfj: - -call operand -^^^^^^^^^^^^ - -:dp:`fls_cqnko94y4xbs` -A :t:`call operand` is the :t:`function` being invoked or the -:t:`tuple enum variant value` or the :t:`tuple struct value` being constructed -by a :t:`call expression`. - -.. _fls_zSh4enFjxeaN: - -call resolution -^^^^^^^^^^^^^^^ - -:dp:`fls_fS1ZjGGypvbn` -:t:`call resolution` is a form of :t:`resolution` that applies to a -:t:`call expression`. - -.. _fls_AK8mL1LeftO0: - -call site hygiene -^^^^^^^^^^^^^^^^^ - -* :dp:`fls_puqhytfzfsg6` - :t:`call site hygiene`, which resolves to a :s:`MacroInvocation` site. - :t:`[Identifier]s` with :t:`call site hygiene` can reference the environment - of the :s:`MacroRulesDeclaration`, can reference the environment of the - :s:`MacroInvocation`, and are considered :t:`unhygienic`. - -.. _fls_luuc01g4ffog: - -callee type -^^^^^^^^^^^ - -:dp:`fls_o21myf6wnnn6` -A :t:`callee type` is either a :t:`function item type`, a -:t:`function pointer type`, a :t:`tuple enum variant`, a -:t:`tuple struct type`, or a :t:`type` that implements any of the -:std:`core::ops::Fn`, :std:`core::ops::FnMut`, or :std:`core::ops::FnOnce` -:t:`[trait]s`. - -.. _fls_s78gd8yxx2yv: - -capture mode -^^^^^^^^^^^^ - -:dp:`fls_beer0d7wva1d` -:t:`capture mode` is the mechanism by which a :t:`capture target` is captured. - -.. _fls_c6qwfwsyizya: - -capture target -^^^^^^^^^^^^^^ - -:dp:`fls_xmhcp4x8wblz` -A :t:`capture target` is either a :t:`variable` or a :t:`field` of a -:t:`variable`. - -.. _fls_kvu447p6j61k: - -capturing -^^^^^^^^^ - -:dp:`fls_4achbk2ewyyb` -:t:`capturing` is the process of saving the :t:`[capture target]s` of a -:t:`[capturing expression]'s` :t:`capturing environment`. - -.. _fls_yfk2xfifltxy: - -capturing environment -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_7br4azaay3wu` -The :t:`capturing environment` of a :t:`capturing expression` consists of the -:t:`[value]s` of all :t:`captured` :t:`[capture target]s`. - -.. _fls_cl3lpsfgt5eb: - -capturing expression -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_awtny282gtud` -A :t:`capturing expression` is either an :t:`async block expression` or a -:t:`closure expression`. - -.. _fls_pcaygpx7db24: - -cast -^^^^ - -:dp:`fls_e5hvszhcrtmj` -A :t:`cast` or :t:`casting` is the process of changing the :t:`type` of an -:t:`expression`. - -.. _fls_xl2zlpw070dy: - -char -^^^^ - -:dp:`fls_vx0dss1yplw1` -:dc:`char` is a :t:`type` whose :t:`[value]s` denote :t:`Unicode` characters. - -.. _fls_cfphqaml82ik: - -character literal -^^^^^^^^^^^^^^^^^ - -:dp:`fls_8oah1cf8p0lb` -A :t:`character literal` is a :t:`literal` that denotes a fixed :t:`Unicode` -character. - -.. _fls_5vm5cijnucsr: - -closure body -^^^^^^^^^^^^ - -:dp:`fls_vgnycw6dykwo` -A :t:`closure body` is a :t:`construct` that represents the executable portion -of a :t:`closure expression`. - -.. _fls_mrwle2ediywb: - -closure expression -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_x87rhn9ikz00` -A :t:`closure expression` is an :t:`expression` that defines a -:t:`closure type` and constructs a value of that :t:`type`. - -.. _fls_f5RBXj9g5iab: - -closure parameter -^^^^^^^^^^^^^^^^^ - -:dp:`fls_yQBZHBLhPswn` -A :t:`closure parameter` is a :t:`construct` that yields a set of -:t:`[binding]s` that bind matched input :t:`[value]s` to :t:`[name]s` at the -site of a :t:`call expression` or a :t:`method call expression`. - -.. _fls_xjudl8ykbisi: - -closure type -^^^^^^^^^^^^ - -:dp:`fls_wp4kues3nbvn` -A :t:`closure type` is a unique anonymous :t:`function type` that encapsulates -all :t:`[capture target]s` of a :t:`closure expression`. - -.. _fls_aqovhozevngd: - -code point -^^^^^^^^^^ - -:dp:`fls_6xw8jtiomc2n` -In :t:`Unicode`, a :t:`code point` is a numeric :t:`value` that maps to a -character. - -.. _fls_2moavfyeit0m: - -comment -^^^^^^^ - -:dp:`fls_3xhoz9f7xy1t` -A :t:`comment` is a :t:`lexical element` that acts as an annotation or an -explanation in program text. - -.. _fls_hjxuoe1hwlhm: - -comparison expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_394p7gdruvk7` -A :t:`comparison expression` is an :t:`expression` that compares the -:t:`[value]s` of two :t:`[operand]s`. - -.. _fls_riwule1euzlj: - -compilation root -^^^^^^^^^^^^^^^^ - -:dp:`fls_stwsfyvov2fx` -A :t:`compilation root` is an input to a compilation performed by a tool. A -:t:`crate root module` is a :t:`compilation root`. - -.. _fls_pTMrfPXETibe: - -compound assignment -^^^^^^^^^^^^^^^^^^^ - -.. _fls_iktiir89xbo2: - -compound assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_mkxpk2jhe5s0` -A :t:`compound assignment expression` is an expression that first computes -a :t:`value` from two :t:`[operand]s` and then assigns the value to an -:t:`assigned operand`. - -.. _fls_qyfn5u5cl5l1: - -concrete type -^^^^^^^^^^^^^ - -:dp:`fls_l0lr3ybgccjc` -A :t:`concrete type` is a :t:`type` where all :t:`[type parameter]s` and -:t:`[constant parameter]s` have been substituted with :t:`[generic argument]s`. - -.. _fls_lmacvq89lj2j: - -conditional compilation -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_xymops69eer3` -:t:`conditional compilation` is the process of compiling -:t:`conditionally-compiled source code`. - -.. _fls_bqq013n2cy4t: - -conditionally-compiled source code -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_hs4lnrdxpj2g` -:t:`conditionally-compiled source code` is source code that may or may -not be considered a part of a Rust program depending on -:t:`[configuration predicate]s`. - -.. _fls_vRjPmHYEVVAf: - -configuration predicate -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_TyKIUQMxO9Si` -A :t:`configuration predicate` is a :t:`construct` that evaluates statically -to either ``true`` or ``false``, and controls :t:`conditional compilation`. - -.. _fls_vuBjK3kdImTn: - -const block expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_5ApoJzRSTZGH` -A :t:`const block expression` is a :t:`block expression` that is specified -with :t:`keyword` ``const`` and encapsulates behavior which is evaluated -statically. - -.. _fls_yw57di94gwpf: - -constant -^^^^^^^^ - -:dp:`fls_p8rjw2qok85b` -A :t:`constant` is an :t:`immutable` :t:`value expression` whose uses are substituted by -the :t:`value`. - -.. _fls_n7z4cl1fsk6l: - -constant argument -^^^^^^^^^^^^^^^^^ - -:dp:`fls_sz10vgh260xo` -A :t:`constant argument` is a :t:`generic argument` that supplies the -:t:`value` of a :t:`constant parameter`. - -.. _fls_mtbhv6e9izzm: - -constant context -^^^^^^^^^^^^^^^^ - -:dp:`fls_9j6mc4i1t73z` -A :t:`constant context` is a :t:`construct` that requires a -:t:`constant expression`. The following :t:`[construct]s` are -:t:`[constant context]s`: - -.. _fls_iofbib2gavnv: - -constant expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rmn8w4rh3juf` -A :t:`constant expression` is an :t:`expression` that can be evaluated -statically. The following :t:`[construct]s` are :t:`[constant expression]s` as -long as their :t:`[operand]s` are also :t:`[constant expression]s` and do not -involve :t:`[type]s` that require :t:`destruction`: - -.. _fls_6j1wluj8sku8: - -constant function -^^^^^^^^^^^^^^^^^ - -:dp:`fls_4glkwg11p5ml` -A :t:`constant function` is a :t:`function` subject to :t:`keyword` ``const``. - -.. _fls_mf022jo05ziu: - -constant initializer -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_2ge48v1kmw8` -A :t:`constant initializer` is a :t:`construct` that provides the :t:`value` -of its related :t:`constant`. - -.. _fls_pj0f0p4avbyw: - -constant parameter -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_z7e491m3dx4u` -A :t:`constant parameter` is a :t:`generic parameter` for a :t:`constant`. - -.. _fls_sIvXMhYaZVjD: - -constant parameter initializer -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_OXD2YaOkfjcI` -A :t:`constant parameter initializer` is a :t:`construct` that provides the -default :t:`value` of its related :t:`constant parameter`. - -.. _fls_f95c9hrk7t2p: - -constant promotion -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ku2md8lnei12` -:t:`constant promotion` is the process of converting a :t:`value expression` -into a :t:`constant`. - -.. _fls_x4niicvxxv9k: - -constrain -^^^^^^^^^ - -:dp:`fls_fna0ch8ucyhv` -A :t:`generic parameter` is said to :t:`constrain` an :t:`implementation` if the -:t:`generic parameter` appears at least once in one of the following: - -.. _fls_4305i29nt5d6: - -construct -^^^^^^^^^ - -:dp:`fls_10tvzeo8xex0` -A :t:`construct` is a syntactic element of a Rust program defined by this -specification. - -.. _fls_fBGjoTVhYvUe: - -constructee -^^^^^^^^^^^ - -:dp:`fls_Twbu94uGW4Cb` -A :t:`constructee` indicates the :t:`enum variant`, :t:`struct`, or :t:`union` -whose value is being constructed by a :t:`struct expression`. - -.. _fls_39s6od9hj4g6: - -container operand -^^^^^^^^^^^^^^^^^ - -:dp:`fls_stjmobac6wyd` -A :t:`container operand` is an :t:`operand` that indicates the :t:`value` -whose :t:`field` is selected in a :t:`field access expression`. - -.. _fls_doazu99vos8x: - -continue expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_waxam3m9plfj` -A :t:`continue expression` is an :t:`expression` that restarts evaluation of -an enclosing :t:`loop expression`. - -.. _fls_nC4Knv4tpenW: - -control flow boundary -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_SmipZJDp02ij` -A :t:`control flow boundary` is a :t:`construct` that provides the target of -a :t:`return expression` and bounds its control flow transfer. - -.. _fls_lnwxm6ffy15w: - -copy type -^^^^^^^^^ - -:dp:`fls_j7r33ecacyh` -A :t:`copy type` is a :t:`type` that implements the -:std:`core::marker::Copy` :t:`trait`. - -.. _fls_kf8yukhxudw8: - -crate -^^^^^ - -:dp:`fls_qplsjzb2uyim` -A :t:`crate` is a unit of compilation and linking that contains a tree of -nested :t:`[module]s`. - -.. _fls_xwbmmcbbowtu: - -crate import -^^^^^^^^^^^^ - -:dp:`fls_y91ja1a87g7a` -A :t:`crate import` specifies a required dependency on an external :t:`crate`. - -.. _fls_CXvNvsO10pLL: - -crate indication -^^^^^^^^^^^^^^^^ - -:dp:`fls_XUSFUErxQRRA` -A :t:`crate indication` is a :t:`construct` that indicates a :t:`crate`. - -.. _fls_yf9yjzzhw0rn: - -crate public modifier -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_dj7fmrqhbhsv` -A :t:`crate public modifier` is a :t:`visibility modifier` that grants a -:t:`name` :t:`public visibility` within the current :t:`crate` only. - -.. _fls_hv9zyxb72soh: - -crate root -^^^^^^^^^^ - -:dp:`fls_yxcgiuybqqy8` -A :t:`crate root` is the :t:`crate root module` of a :t:`crate`. - -.. _fls_iucxone5ta26: - -crate root module -^^^^^^^^^^^^^^^^^ - -:dp:`fls_oo4nmqv78wno` -A :t:`crate root module` is the root of the nested :t:`module` tree of a -:t:`crate`. - -.. _fls_lVpE4uFDsXH4: - -crate type -^^^^^^^^^^ - -:dp:`fls_eaxsgPMFNH7f` -:t:`Attribute` :dc:`crate_type` shall specify the linkage :t:`type` of the -:t:`crate` it appears in. - -.. _fls_76cj65bptdpn: - -dangling -^^^^^^^^ - -:dp:`fls_lq2urzh7bzxx` -A :t:`value` of an :t:`indirection type` is :t:`dangling` if it is either -:c:`null` or not all of the bytes at the referred memory location are part of -the same allocation. - -.. _fls_9meaofgcpvx6: - -data race -^^^^^^^^^ - -:dp:`fls_v2s1b57e3r7n` -A :t:`data race` is a scenario where two or more threads access a shared memory -location concurrently without any synchronization, where one of the accesses is -a modification. - -.. _fls_128iunbbiuql: - -decimal literal -^^^^^^^^^^^^^^^ - -:dp:`fls_lwv823lih69m` -A :t:`decimal literal` is an :t:`integer literal` in base 10. - -.. _fls_9qgy7x6w5ro5: - -declaration -^^^^^^^^^^^ - -:dp:`fls_kct7ducpli6k` -A :t:`declaration` is a :t:`construct` that introduces a :t:`name` for an -:t:`entity`. - -.. _fls_5944xn0lz8e: - -declarative macro -^^^^^^^^^^^^^^^^^ - -:dp:`fls_pe12lfffaoqt` -A :t:`declarative macro` is a :t:`macro` that associates a :t:`name` with a set -of syntactic transformation :t:`[macro rule]s`. - -.. _fls_GAlaslkO8gLG: - -deconstructee -^^^^^^^^^^^^^ - -:dp:`fls_QsvWOdoFWtUO` -A :t:`deconstructee` indicates the :t:`enum variant` or :t:`type` that is -being deconstructed by a :t:`struct pattern`. - -.. _fls_g9v8ubx8m1sq: - -default representation -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_e85fsp10acnh` -:t:`Default representation` makes no guarantees about the :t:`layout`. - -.. _fls_FrfnICpg81sr: - -definition site hygiene -^^^^^^^^^^^^^^^^^^^^^^^ - -* :dp:`fls_dz2mvodl818d` - :t:`Definition site hygiene`, which resolves to a :s:`MacroRulesDeclaration` - site. :t:`[Identifier]s` with :t:`definition site hygiene` cannot reference - the environment of the :s:`MacroRulesDeclaration`, cannot be referenced by the - environment of a :s:`MacroInvocation`, and are considered :t:`hygienic`. - -.. _fls_127n1n5ssk2b: - -dereference -^^^^^^^^^^^ - -:dp:`fls_hk97pb1qt04y` -A :t:`dereference` is the memory location produced by evaluating a -:t:`dereference expression`. - -.. _fls_o588wfq878rm: - -dereference expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_3cuyhbh2llei` -A :t:`dereference expression` is an :t:`expression` that obtains the -pointed-to memory location of its :t:`operand`. - -.. _fls_xbN0GtcH8emc: - -dereference type -^^^^^^^^^^^^^^^^ - -:dp:`fls_HfuUQ7IaoI5j` -A :t:`dereference type` is either a :t:`reference type` or a :t:`type` that -implements the :std:`core::ops::Deref` :t:`trait`. - -.. _fls_T380NdEsFxIp: - -dereference type chain -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_kIzoAEf069HE` -A :t:`dereference type chain` is a sequence of :t:`[dereference type]s`. A -:t:`dereference type chain` starts with an initial :t:`dereference type`. From -then on, the :t:`dereference type chain` continues as follows: - -.. _fls_7ipdj78o7ln: - -derive macro -^^^^^^^^^^^^ - -:dp:`fls_jrrjhl9hocrm` -A :t:`derive macro` is a :t:`procedural macro` that consumes a stream of -:t:`[token]s` and produces a stream of :t:`[token]s`. :t:`[Derive macro]s` are -used to construct new syntax for :t:`[abstract data type]s`. - -.. _fls_7b3fsp356e9l: - -destruction -^^^^^^^^^^^ - -:dp:`fls_58i2nfhxze3j` -:t:`Destruction` is the process of recovering resources associated with a -:t:`value` as it goes out of scope. - -.. _fls_kwxpy451gtc: - -destructor -^^^^^^^^^^ - -:dp:`fls_79pp7o1xooja` -A :t:`destructor` is a :t:`function` that is invoked immediately before the -:t:`destruction` of a :t:`value` of a :t:`drop type`. - -.. _fls_2fuu3zr9rn2q: - -destructuring assignment -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_7jienn9uzn5k` -A :t:`destructuring assignment` is an :t:`assignment expression` where -the :t:`assignee operand` is either an :t:`array expression`, a :t:`struct -expression`, a :t:`tuple expression` or a :t:`tuple struct call expression`. - -.. _fls_ugIFZlAzDK6H: - -direction modifier -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_8DY7xPVX4nXx` -A :t:`direction modifier` is a :t:`construct` that indicates whether a -:t:`register argument` initializes a :t:`register`, assigns the :t:`value` of a -:t:`register` to an :t:`expression`, or both. - -.. _fls_7vg56eeo0zlg: - -discriminant -^^^^^^^^^^^^ - -:dp:`fls_dfegy9y6awx` -A :t:`discriminant` is an opaque integer that identifies an :t:`enum variant`. - -.. _fls_xayj37ocbqjn: - -discriminant initializer -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_o7hihgcqmnyc` -A :t:`discriminant initializer` provides the :t:`value` of a :t:`discriminant`. - -.. _fls_a0ezuPLtENme: - -discriminant type -^^^^^^^^^^^^^^^^^ - -:dp:`fls_t4yeovFm83Wo` -A :t:`discriminant type` is the :t:`type` of a :t:`discriminant`. - -.. _fls_gDFsAj1Bvx7A: - -diverging expression -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_fLlNzmB34cj9` -A :t:`diverging expression` is an :t:`expression` whose :t:`evaluation` causes -program flow to diverge from the normal :t:`evaluation` order. - -.. _fls_9DuaIn6cRbXf: - -diverging type variable -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_sxyL7yOp3H9s` -A :t:`diverging type variable` is a :t:`type variable` that can refer to any -:t:`type` and originates from a :t:`diverging expression`. - -.. _fls_0lpT9Ncj7S9X: - -division assignment -^^^^^^^^^^^^^^^^^^^ - -.. _fls_ccv27fji08ou: - -division assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_lzuz5fkveikk` -A :t:`division assignment expression` is a :t:`compound assignment expression` -that uses division. - -.. _fls_vxd5q8nekkn0: - -division expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_du05yp205f4y` -A :t:`division expression` is an :t:`arithmetic expression` that uses division. - -.. _fls_4nm1r57ntecm: - -doc comment -^^^^^^^^^^^ - -:dp:`fls_wkc1w2xk7ebh` -A :t:`doc comment` is a :t:`comment` class that includes -:t:`[inner block doc]s`, :t:`[inner line doc]s`, :t:`[outer block doc]s`, -and :t:`[outer line doc]s`. - -.. _fls_nw0qr4xy3zxq: - -drop construct -^^^^^^^^^^^^^^ - -:dp:`fls_odg2asgj28m` -A :t:`drop construct` is a :t:`construct` that employs a :t:`drop scope`. The -following :t:`[construct]s` are :t:`[drop construct]s`: - -.. _fls_j12e358828h: - -drop order -^^^^^^^^^^ - -:dp:`fls_qddkiabu6swt` -:t:`Drop order` is the order by which :t:`[value]s` are :t:`dropped` when a -:t:`drop scope` is left. - -.. _fls_foszri7hdym0: - -drop scope -^^^^^^^^^^ - -:dp:`fls_6bu8x0g9q0er` -A :t:`drop scope` is a region of program text that governs the :t:`dropping` of -:t:`[value]s`. When control flow leaves a :t:`drop scope`, all :t:`[value]s` -associated with that :t:`drop scope` are :t:`dropped` based on a -:t:`drop order`. - -.. _fls_qp3ksd2lxm8: - -drop scope extension -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_pmdh8kkrwkd0` -:t:`Drop scope extension` is the process of extending a :t:`drop scope` -associated with a :t:`temporary` to prevent the premature :t:`dropping` of the -:t:`temporary`. - -.. _fls_4v6vsuw4g89l: - -drop type -^^^^^^^^^ - -:dp:`fls_ot3e31kwixil` -A :t:`drop type` is a :t:`type` that implements the :std:`core::ops::Drop` -:t:`trait` or contains a :t:`field` that has a :t:`drop type`. - -.. _fls_68cl4paduzx2: - -dropping -^^^^^^^^ - -:dp:`fls_k4mguykh8ey` -:t:`Dropping` a :t:`value` is the act of invoking the :t:`destructor` of the -related :t:`type`. - -.. _fls_6uovyjjzh6km: - -dynamically sized type -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_eeyxu730z2pw` -A :t:`dynamically sized type` is a :t:`type` that does not implement the -:std:`core::marker::Sized` :t:`trait`. - -.. _fls_2sja3okj27ne: - -elaboration -^^^^^^^^^^^ - -:dp:`fls_xoahzmwu1std` -:t:`Elaboration` is the process by which a :t:`declaration` achieves its -runtime effects. - -.. _fls_bxm4njfo2h58: - -element type -^^^^^^^^^^^^ - -:dp:`fls_3bndijf8g9os` -An :t:`element type` is the :t:`type` of the elements of an :t:`array type` or -a :t:`slice type`. - -.. _fls_vygjg858yxej: - -elided -^^^^^^ - -.. _fls_l2181y5566ck: - -elided lifetime -^^^^^^^^^^^^^^^ - -:dp:`fls_9q28407ev0a6` -An :t:`elided lifetime` is either an :t:`unnamed lifetime` or a :t:`lifetime` -that has been explicitly omitted from a :t:`function signature` or an -:t:`implementation`. - -.. _fls_ff5zp7m9d5ot: - -else expression -^^^^^^^^^^^^^^^ - -:dp:`fls_inp7luoqkjc5` -An :t:`else expression` is an :t:`expression` that represents either a -:t:`block expression`, an :t:`if expression`, or an :t:`if let expression`. - -.. _fls_iwed9n4jz6b8: - -empty statement -^^^^^^^^^^^^^^^ - -:dp:`fls_irw5gwuvj3nn` -An :t:`empty statement` is a :t:`statement` expressed as character 0x3B -(semicolon). - -.. _fls_1qu1t74ga8aa: - -entity -^^^^^^ - -:dp:`fls_mdbck557k8sy` -An :t:`entity` is a :t:`construct` that can be referred to within program -text, usually via a :t:`field access expression` or a :t:`path`. - -.. _fls_xnhj9fqlfs2p: - -enum -^^^^ - -:dp:`fls_9o0ig19xh2f5` -An :t:`enum` is an :t:`item` that declares an :t:`enum type`. - -.. _fls_zrRydWZgm03k: - -enum field -^^^^^^^^^^ - -:dp:`fls_J8udq05QGiEj` -An :t:`enum field` is a :t:`field` of an :t:`enum variant`. - -.. _fls_grlluqa4ucp3: - -enum type -^^^^^^^^^ - -:dp:`fls_idwrgo87ub3i` -An :t:`enum type` is an :t:`abstract data type` that contains -:t:`[enum variant]s`. - -.. _fls_H6aUAUjNlx6z: - -enum value -^^^^^^^^^^ - -:dp:`fls_QdBTdVLB2xHk` -An :t:`enum value` is a :t:`value` of an :t:`enum type`. - -.. _fls_klwlx5jixwud: - -enum variant -^^^^^^^^^^^^ - -:dp:`fls_9jq4keg9y94u` -An :t:`enum variant` is a :t:`construct` that declares one of the -possible variations of an :t:`enum`. - -.. _fls_mKxBWCojhnWu: - -enum variant value -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_VQRqNPFFWmDp` -An :t:`enum variant value` is the :t:`enum value` of the corresponding -:t:`enum` of the :t:`enum variant`. - -.. _fls_alifv570nx7q: - -equals expression -^^^^^^^^^^^^^^^^^ - -:dp:`fls_mn1g2hijtd6f` -An :t:`equals expression` is a :t:`comparison expression` that tests equality. - -.. _fls_kz7tgpi8xkt4: - -error propagation expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_5kebgodxtqqt` -An :t:`error propagation expression` is an :t:`expression` that either evaluates -to a :t:`value` of its :t:`operand` or returns a value to the enclosing control -flow boundary. - -.. _fls_9hw559b548m0: - -escaped character -^^^^^^^^^^^^^^^^^ - -:dp:`fls_7yvnbakmo7y5` -An :t:`escaped character` is the textual representation for a character with -special meaning. An escaped character consists of character 0x5C (reverse -solidus), followed by the single character encoding of the special meaning -character. For example, ``\t`` is the escaped character for 0x09 (horizontal -tabulation). - -.. _fls_pefe9ng1mm81: - -evaluated -^^^^^^^^^ - -.. _fls_p3gre0895k2u: - -evaluation -^^^^^^^^^^ - -:dp:`fls_8zmtio6razl1` -:t:`Evaluation` is the process by which an :t:`expression` achieves its -runtime effects. - -.. _fls_EJSzYb4IxvtR: - -exclusive range pattern -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_qxsV6ZxFfDHm` -An :t:`exclusive range pattern` is a :t:`range pattern` with both a -:t:`range pattern low bound` and a :t:`range pattern high bound`. - -.. _fls_nw0eg7gwayrg: - -executed -^^^^^^^^ - -.. _fls_q0ur239s8uv: - -execution -^^^^^^^^^ - -:dp:`fls_e5jbii84hd5g` -:t:`Execution` is the process by which a :t:`statement` achieves its runtime -effects. - -.. _fls_B1qkkSvc69J4: - -explicit register argument -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_2o6S1WGDrMh3` -An :t:`explicit register argument` is a :t:`register argument` that uses an -:t:`explicit register name`. - -.. _fls_uc7PnSbVVd9X: - -explicit register name -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_UcMk6RRLrkB5` -An :t:`explicit register name` is a target-specific string that identifies -a :t:`register`. - -.. _fls_lqxcnZqvwcsH: - -explicitly declared entity -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_shpNJ0JCSCwa` -An :t:`explicitly declared entity` is an :t:`entity` that has a -:t:`declaration`. The following :t:`entities ` are -:t:`explicitly declared entities `: - -.. _fls_5oQllRM7Wjsg: - -exported function -^^^^^^^^^^^^^^^^^ - -:dp:`fls_QotMF1iaEYod` -An :t:`exported function` is a :t:`function` subject to :t:`attribute` -:c:`no_mangle`. - -.. _fls_zkq5ZkJwsyoD: - -exported static -^^^^^^^^^^^^^^^^^ - -:dp:`fls_aolCSvb349ZU` -An :t:`exported static` is a :t:`static` subject to :t:`attribute` -:c:`no_mangle`. - -.. _fls_q8ofwncggngd: - -expression -^^^^^^^^^^ - -:dp:`fls_f7iuwgbs1lql` -An :t:`expression` is a :t:`construct` that produces a :t:`value`, and may -have side effects at run-time. - -.. _fls_a1rorkjt3vpc: - -expression statement -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ds0pspiqk4am` -An :t:`expression statement` is an :t:`expression` whose result is ignored. - -.. _fls_u6huewic8650: - -expression-with-block -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ujlm50le5dnj` -An :t:`expression-with-block` is an :t:`expression` whose structure involves a -:t:`block expression`. - -.. _fls_378e2xhxzk26: - -expression-without-block -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_xfh9xmsphzqb` -An :t:`expression-without-block` is an :t:`expression` whose structure does -not involve a :t:`block expression`. - -.. _fls_9k6jcsljghab: - -external block -^^^^^^^^^^^^^^ - -:dp:`fls_z2ebcp7kjpuy` -An :t:`external block` is a :t:`construct` that provides the declarations of -:t:`[external function]s` and :t:`[external static]s` as unchecked imports. - -.. _fls_8ffbgzkbsf9r: - -external function -^^^^^^^^^^^^^^^^^ - -:dp:`fls_ngz5fqwrf86e` -An :t:`external function` is an unchecked import of a foreign :t:`function`. - -.. _fls_ug2kags0o6is: - -external function item type -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_dwlovqly44dj` -An :t:`external function item type` is a :t:`function item type` where the -related :t:`function` is an :t:`external function`. - -.. _fls_c89migfc2m6e: - -external static -^^^^^^^^^^^^^^^ - -:dp:`fls_bqq6cncstzeg` -An :t:`external static` is an import of a foreign :t:`variable`. - -.. _fls_4w6garmjhrd9: - -f32 -^^^ - -:dp:`fls_4w5rqj7zdemu` -:dc:`f32` is a :t:`floating-point type` equivalent to the IEEE 754-2008 -binary32 :t:`type`. - -.. _fls_pj450h99yo28: - -f64 -^^^ - -:dp:`fls_ly6p0i6lsibh` -:dc:`f64` is a :t:`floating-point type` equivalent to the IEEE 754-2008 -binary64 :t:`type`. - -.. _fls_nkf9z4pqg8x1: - -fat pointer -^^^^^^^^^^^ - -:dp:`fls_knbc2jv5c5ds` -A :t:`fat pointer` is a :t:`value` of a :t:`fat pointer type`. - -.. _fls_trvkbidlsss8: - -fat pointer type -^^^^^^^^^^^^^^^^ - -:dp:`fls_l8ew6udd79hh` -A :t:`fat pointer type` is an :t:`indirection type` whose contained :t:`type specification` is a :t:`dynamically sized type`. - -.. _fls_qi21fdknzez6: - -FFI -^^^ - -.. _fls_7gCAbHnGEIl6: - -field -^^^^^ - -:dp:`fls_uAkrgfFTK2YV` -A :t:`field` is an element of an :t:`abstract data type`. - -.. _fls_yipl7ajrbs6y: - -field access expression -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_gdl348a04d15` -A :t:`field access expression` is an :t:`expression` that accesses a -:t:`field` of a :t:`value`. - -.. _fls_6uwwat9j4x7y: - -field index -^^^^^^^^^^^ - -:dp:`fls_6061r871qgbj` -A :t:`field index` is the position of a :t:`field` within a -:t:`tuple struct type` or :t:`tuple enum variant`. The first :t:`field` has a -:t:`field index` of zero, the Nth :t:`field` has a :t:`field index` of N-1. - -.. _fls_8qLL14WfXXNN: - -field list -^^^^^^^^^^ - -:dp:`fls_xMZsrxMc9Cni` -A :t:`field list` is a :s:`RecordStructFieldList` or a -:s:`TupleStructFieldList`. - -.. _fls_BlZwxp6H62sS: - -field resolution -^^^^^^^^^^^^^^^^ - -:dp:`fls_nL8UuclgxfGL` -:t:`Field resolution` is a form of :t:`resolution` that applies to a -:t:`field access expression`. - -.. _fls_kqbata8slp1y: - -field selector -^^^^^^^^^^^^^^ - -:dp:`fls_aq1yg9cp1uof` -A :t:`field selector` is a :t:`construct` that selects the :t:`field` to be -accessed in a :t:`field access expression`. - -.. _fls_mj9mmkar8c6f: - -final match arm -^^^^^^^^^^^^^^^ - -:dp:`fls_btoz8jioisx9` -A :t:`final match arm` is the last :t:`match arm` of a :t:`match expression`. - -.. _fls_rljxa45tleq3: - -fixed sized type -^^^^^^^^^^^^^^^^ - -:dp:`fls_eadiywl20jo4` -A :t:`fixed sized type` is a :t:`type` that implements the -:std:`core::marker::Sized` :t:`trait`. - -.. _fls_achdyw3nbme3: - -float literal -^^^^^^^^^^^^^ - -:dp:`fls_53o8dio9vpjh` -A :t:`float literal` is a :t:`numeric literal` that denotes a fractional -number. - -.. _fls_wgylj1n4wrqe: - -float suffix -^^^^^^^^^^^^ - -:dp:`fls_vka2z7frq9j8` -A :t:`float suffix` is a component of a :t:`float literal` that specifies an -explicit :t:`floating-point type`. - -.. _fls_k32g8cd9friu: - -floating-point type -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_1w5yjiffah1u` -A :t:`floating-point type` is a :t:`numeric type` whose :t:`[value]s` denote -fractional numbers. - -.. _fls_8ih3gh6hoy78: - -floating-point type variable -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ls41emhkrxdi` -A :t:`floating-point type variable` is a :t:`type variable` that can refer -only to :t:`[floating-point type]s`. - -.. _fls_nE6SWuVH7X68: - -floating-point value -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rx8cvWPlvel5` -A :t:`floating-point value` is a :t:`value` of a :t:`floating-point type`. - -.. _fls_dwnvkq8n94h1: - -for loop -^^^^^^^^ - -.. _fls_vfkqbovqbw86: - -for loop expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_f0gp7qxoc4o4` -A :t:`for loop expression` is a :t:`loop expression` that continues to -evaluate its :t:`loop body` as long as its :t:`subject expression` yields a -:t:`value`. - -.. _fls_fo7vyxs4l3yh: - -Foreign Function Interface -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_240yj1kym1kh` -A :t:`Foreign Function Interface` employs :t:`ABI`, :t:`[attribute]s`, -:t:`[external block]s`, :t:`[external function]s`, linkage, and :t:`type` -:t:`layout` to interface a Rust program with foreign code. - -.. _fls_pi7j0t7h1y86: - -fragment specifier -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_6lhwep7ulpr0` -A :t:`fragment specifier` is a :t:`construct` that indicates the :t:`type` of -a :t:`metavariable`. - -.. _fls_tWp1PLe8m83K: - -full range expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_NIb9UOIRjMqa` -A :t:`full range expression` is a :t:`range expression` that covers the whole -range of a :t:`type`. - -.. _fls_yllg093syzdi: - -function -^^^^^^^^ - -:dp:`fls_ni14pcm4ap9l` -A :t:`function` is a :t:`value` of a :t:`function type` that models a behavior. - -.. _fls_vjgkg8kfi93: - -function body -^^^^^^^^^^^^^ - -:dp:`fls_y5ha4123alik` -A :t:`function body` is the :t:`block expression` of a :t:`function`. - -.. _fls_ayuia853po0a: - -function item type -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rfvfo8x42dh8` -A :t:`function item type` is a unique anonymous :t:`function type` that -identifies a :t:`function`. - -.. _fls_WMaE58yv1joW: - -function lifetime elision -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_tZMmRHua1S8K` -:t:`Function lifetime elision` is a form of :t:`lifetime elision` that applies -to :t:`[function]s`, :t:`[function pointer type parameter]s`, and :t:`[path]s` -that resolve to one of the :std:`core::ops::Fn`, :std:`core::ops::FnMut`, and -:std:`core::ops::FnOnce` :t:`[trait]s`. - -.. _fls_xn800gcjnln1: - -function parameter -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_2feq1ky9pla1` -A :t:`function parameter` is a :t:`construct` that yields a set of -:t:`[binding]s` that bind matched input :t:`[value]s` to :t:`[name]s` at the -site of a :t:`call expression` or a :t:`method call expression`. - -.. _fls_fqwzlg78k503: - -function pointer type -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_lcawg25xhblx` -A :t:`function pointer type` is an :t:`indirection type` that refers to a -:t:`function`. - -.. _fls_v3V6K4S5UhIF: - -function pointer type parameter -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_nF1k90JJWq2K` -A :t:`function pointer type parameter` is a :t:`function parameter` of a -:t:`function pointer type`. - -.. _fls_2uvom1x42dcs: - -function qualifier -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_8cux22275v8r` -A :t:`function qualifier` is a :t:`construct` that determines the role of -a :t:`function`. - -.. _fls_hz3zunp8lrfl: - -function signature -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ndld48kg6o8d` -A :t:`function signature` is a unique identification of a :t:`function` -that encompasses of its :t:`[function qualifier]s`, :t:`name`, -:t:`[generic parameter]s`, :t:`[function parameter]s`, :t:`return type`, and -:t:`where clause`. - -.. _fls_yo2x1llt9ejy: - -function type -^^^^^^^^^^^^^ - -:dp:`fls_4e19116glgtv` -A :t:`function type` is either a :t:`closure type` or a -:t:`function item type`. - -.. _fls_gzybxk1gosm6: - -function-like macro -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_psnab9cuq4bu` -A :t:`function-like macro` is a :t:`procedural macro` that consumes a stream of -:t:`[token]s` and produces a stream of :t:`[token]s`. - -.. _fls_OFMoUA3eFtuC: - -fundamental -^^^^^^^^^^^ - -:dp:`fls_e0dRD4NTE0UP` -A :t:`trait` or :t:`type` is :t:`fundamental` when its -:t:`implementation coherence` rules are relaxed and the :t:`trait` or :t:`type` -is always treated as if it was a :t:`local trait` or a :t:`local type`. - -.. _fls_yxzpexco8ag3: - -future -^^^^^^ - -:dp:`fls_pvigospl4n3g` -A :t:`future` represents a :t:`value` of a :t:`type` that implements the -:std:`core::future::Future` :t:`trait` which may not have finished computing -yet. - -.. _fls_dvk8ccb46abk: - -future operand -^^^^^^^^^^^^^^ - -:dp:`fls_fold1inh5jev` -A :t:`future operand` is an :t:`operand` whose :t:`future` is being awaited by -an :t:`await expression`. - -.. _fls_j1cyhud0h65t: - -generic argument -^^^^^^^^^^^^^^^^ - -:dp:`fls_meimxi20p51a` -A :t:`generic argument` supplies a static input for an -:t:`associated trait type` or a :t:`generic parameter`. - -.. _fls_nooYIxMnV8Ps: - -generic associated type -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_O4wckPZPmree` -A :t:`generic associated type` is an :t:`associated type` with -:t:`[generic parameter]s`. - -.. _fls_3uFg0NK5fYQ6: - -generic conformance -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_PfvELNsNySLT` -:t:`Generic conformance` measures the compatibility between a set of -:t:`[generic parameter]s` and a set of :t:`[generic argument]s`. - -.. _fls_3tj3i83eoi36: - -generic enum -^^^^^^^^^^^^ - -:dp:`fls_pnu8w26uexaq` -A :t:`generic enum` is an :t:`enum` with :t:`[generic parameter]s`. - -.. _fls_votx8gvy5utg: - -generic function -^^^^^^^^^^^^^^^^ - -:dp:`fls_rfkbc967d48h` -A :t:`generic function` is a :t:`function` with :t:`[generic parameter]s`. - -.. _fls_1xjbrp376niw: - -generic implementation -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_jic937ujpnar` -A :t:`generic implementation` is an :t:`implementation` with -:t:`[generic parameter]s`. - -.. _fls_s2syghgn74e2: - -generic parameter -^^^^^^^^^^^^^^^^^ - -:dp:`fls_61e6br8jy1v2` -A :t:`generic parameter` is a placeholder for a :t:`constant`, a :t:`lifetime`, -or a :t:`type`, whose :t:`constant`, :t:`lifetime`, or :t:`type` is supplied -statically by a :t:`generic argument`. - -.. _fls_CzudKdaYbfBF: - -generic parameter scope -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_e2tICijmLkj4` -A :t:`generic parameter scope` is a :t:`scope` for :t:`[generic parameter]s`. - -.. _fls_cgtu4v2vxvh: - -generic struct -^^^^^^^^^^^^^^ - -:dp:`fls_mcb2mlklith8` -A :t:`generic struct` is a :t:`struct` with :t:`[generic parameter]s`. - -.. _fls_VBEBshUrAOKE: - -generic substitution -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Led1Nxfcd70K` -A :t:`generic substitution` is the replacement of a :t:`generic parameter` -with a :t:`generic argument`. - -.. _fls_hppo1v3ia4wu: - -generic trait -^^^^^^^^^^^^^ - -:dp:`fls_h515f11akr91` -A :t:`generic trait` is a :t:`trait` with :t:`[generic parameter]s`. - -.. _fls_3Ss6jDgtF1of: - -generic type -^^^^^^^^^^^^ - -:dp:`fls_Zn2pIsMZoTry` -A :t:`generic type` is a :t:`type` with a :t:`generic parameter`. - -.. _fls_18ow0q8at1pi: - -generic type alias -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_zgxsqq4vu7e3` -A :t:`generic type alias` is a :t:`type alias` with :t:`[generic parameter]s`. - -.. _fls_xn9mla1vm6iv: - -generic union -^^^^^^^^^^^^^ - -:dp:`fls_93rxr0yjx1e7` -A :t:`generic union` is a :t:`union` with :t:`[generic parameter]s`. - -.. _fls_euukteybsbi: - -glob import -^^^^^^^^^^^ - -:dp:`fls_90qsib7g8e9j` -A :t:`glob import` is a :t:`use import` that brings all :t:`entities ` -exported by the :t:`module` or :t:`enum` its :t:`import path prefix` resolves to -into :t:`scope`. - -.. _fls_g6g8c58bilen: - -global path -^^^^^^^^^^^ - -:dp:`fls_msg8jw9momfw` -A :t:`global path` is a :t:`path` that starts with :t:`namespace qualifier` -``::``. - -.. _fls_hy1clqvaewnp: - -global type variable -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_pvt4nayq006s` -A :t:`global type variable` is a :t:`type variable` that can refer to any -:t:`type`. - -.. _fls_g4n20dy3utzy: - -greater-than expression -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_j7x5qii6rhwj` -A :t:`greater-than expression` is a :t:`comparison expression` that tests for -a greater-than relationship. - -.. _fls_mxz589rq4hiy: - -greater-than-or-equals expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_wvspqc2otn6v` -A :t:`greater-than-or-equals expression` is a :t:`comparison expression` that -tests for a greater-than-or-equals relationship. - -.. _fls_fquvoglio1jz: - -half-open range pattern -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_tymjispfgp7u` -A :t:`half-open range pattern` is a :t:`range pattern` with only a -:t:`range pattern low bound`. - -.. _fls_5uiij8eqln5g: - -hexadecimal literal -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_8b6njsi8g68i` -A :t:`hexadecimal literal` is an :t:`integer literal` in base 16. - -.. _fls_h87i5nbeuxky: - -higher-ranked trait bound -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_lpyc4omcthv` -A :t:`higher-ranked trait bound` is a :t:`bound` that specifies an infinite -list of :t:`[bound]s` for all possible :t:`[lifetime]s` specified by the -:s:`ForGenericParameterList`. - -.. _fls_GuMMjhEMMLvF: - -hygiene -^^^^^^^ - -:dp:`fls_AQg0MqAQZqkz` -The :t:`hygiene` of :t:`[macro]s` and :t:`[identifier]s` that appear within -them is a property that aims to eliminate the syntactic interference between a -:t:`macro` and its environment. - -.. _fls_95h0aWZ7xx6U: - -hygienic -^^^^^^^^ - -:dp:`fls_hiDddAkNH5Ms` -An :t:`identifier` is :t:`hygienic` when it has :t:`definition site hygiene`. - -.. _fls_obiv2a6ywfhh: - -i8 -^^ - -:dp:`fls_1y9ulxnz8qba` -:dc:`i8` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ -:sup:`7`) to 2\ :sup:`7` - 1, all inclusive. - -.. _fls_rvcjp656gzlm: - -i16 -^^^ - -:dp:`fls_ci9jl55wxwdg` -:dc:`i16` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ -:sup:`15`) to 2\ :sup:`15` - 1, all inclusive. - -.. _fls_l1h9g4ntf3c: - -i32 -^^^ - -:dp:`fls_yh8wzhhso4xc` -:dc:`i32` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ -:sup:`31`) to 2\ :sup:`31` - 1, all inclusive. - -.. _fls_tid10guzn9sq: - -i64 -^^^ - -:dp:`fls_4bpatxp8yelv` -:dc:`i64` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ -:sup:`63`) to 2\ :sup:`63` - 1, all inclusive. - -.. _fls_py2whbcrndmz: - -i128 -^^^^ - -:dp:`fls_p75kpbtonb8z` -:dc:`i128` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ -:sup:`127`) to 2\ :sup:`127` - 1, all inclusive. - -.. _fls_kpsyz8yopova: - -identifier -^^^^^^^^^^ - -:dp:`fls_14zc5bcm9d8o` -An :t:`identifier` is a :t:`lexical element` that refers to a :t:`name`. - -.. _fls_1g9xxx8s498u: - -identifier pattern -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_f2va67gvpqe0` -An :t:`identifier pattern` is a :t:`pattern` that binds the :t:`value` it -matches to a :t:`binding`. - -.. _fls_al9gtcy5b5og: - -if expression -^^^^^^^^^^^^^ - -:dp:`fls_rk0661mtdvsi` -An :t:`if expression` is an :t:`expression` that evaluates either a -:t:`block expression` or an :t:`else expression` depending on the :t:`value` -of its :t:`subject expression`. - -.. _fls_j9wb2wtqp5u8: - -if let expression -^^^^^^^^^^^^^^^^^ - -:dp:`fls_ky6ng7jy1g6z` -An :t:`if let expression` is an :t:`expression` that evaluates either a -:t:`block expression` or an :t:`else expression` depending on whether its -:t:`pattern` can be matched against its :t:`subject let expression`. - -.. _fls_xiocbknerufq: - -immutable -^^^^^^^^^ - -:dp:`fls_sttdfynyqr5h` -A :t:`value` is :t:`immutable` when it cannot be modified. - -.. _fls_utucrvtzjhoc: - -immutable borrow -^^^^^^^^^^^^^^^^ - -:dp:`fls_p0abqkiuk7y9` -An :t:`immutable borrow` is an :t:`immutable reference` produced by -:t:`borrowing`. - -.. _fls_pqunxp6io1n9: - -immutable borrow expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_dojod5pg4r7l` -An :t:`immutable borrow expression` is a :t:`borrow expression` that lacks -:t:`keyword` ``mut``. - -.. _fls_TXQzFM77s4uj: - -immutable place expression -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_MXBEZjzBxw5Z` -An :t:`immutable place expression` is a :t:`place expression` whose memory -location cannot be modified. All :t:`[place expression]s` that are not -:t:`[mutable place expression]s` are :t:`[immutable place expression]s`. - -.. _fls_O0924m8mSfIa: - -immutable place expression context -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_UvrQ49dSoQGc` -An :t:`immutable place expression context` is a :t:`place expression context` -that may evaluate its :t:`operand` as an immutable memory location. All -:t:`[place expression context]s` that are not -:t:`[mutable place expression context]s` are -:t:`[immutable place expression context]s`. - -.. _fls_RghQKP3lsXEb: - -immutable raw pointer type -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_2GzYItDXvMhB` -An :t:`immutable raw pointer type` is a :t:`raw pointer type` subject to -:t:`keyword` ``const``. - -.. _fls_bhx0l676dmgc: - -immutable reference -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_u9kne5zfmhoe` -An :t:`immutable reference` is a :t:`value` of a :t:`shared reference type`, -and prevents the mutation of its :t:`referent`. - -.. _fls_my7jjwi0ncen: - -immutable static -^^^^^^^^^^^^^^^^ - -:dp:`fls_eonlhz79ur3d` -An :t:`immutable static` is a :t:`static` whose :t:`value` cannot be modified. - -.. _fls_8xrhfwgep3nk: - -immutable variable -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_sdg35i92taip` -An :t:`immutable variable` is a :t:`variable` whose :t:`value` cannot be -modified. - -.. _fls_L9XTxPSujx4v: - -impl header lifetime elision -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_PvYGu85UAyFb` -:t:`Impl header lifetime elision` is a form of :t:`lifetime elision` that -applies to the :t:`implementing type` and :t:`implemented trait` (if any) of an -:t:`implementation`. - -.. _fls_l20o3hutbfpf: - -impl trait type -^^^^^^^^^^^^^^^ - -:dp:`fls_rdctgmnfncnd` -An :t:`impl trait type` is a :t:`type` that implements a :t:`trait`, where the -:t:`type` is known at compile time. - -.. _fls_bj1u4k3akecp: - -implementation -^^^^^^^^^^^^^^ - -:dp:`fls_pjulppit1r6` -An :t:`implementation` is an :t:`item` that supplements an -:t:`implementing type` by extending its functionality. - -.. _fls_vofxuHcXpt6X: - -implementation body -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_1iS30Nv9myEd` -An :t:`implementation body` is a :t:`construct` that encapsulates the -:t:`[associated item]s`, :t:`[inner attribute]s`, and -:t:`[inner doc comment]s` of an :t:`implementation`. - -.. _fls_41GLrzVxcOV6: - -implementation coherence -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_hAmKcuYT9hHi` -A :t:`trait implementation` exhibits :t:`implementation coherence` when it is -valid and does not overlap with another :t:`trait implementation`. - -.. _fls_SBkTVa8bzGDx: - -implementation conformance -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Gpq4EP1SsYJR` -A :t:`trait implementation` exhibits :t:`implementation conformance` when it -satisfies the constraints of its :t:`implemented trait`. - -.. _fls_c0xxvivt8t1u: - -implemented trait -^^^^^^^^^^^^^^^^^ - -:dp:`fls_7twlizi3v8cb` -An :t:`implemented trait` is a :t:`trait` whose functionality has been -implemented by an :t:`implementing type`. - -.. _fls_ow4b5iqas115: - -implementing type -^^^^^^^^^^^^^^^^^ - -:dp:`fls_vs5ia3uupdcc` -An :t:`implementing type` is the :t:`type` that the :t:`[associated item]s` of -an :t:`implementation` are associated with. - -.. _fls_wa7t6cqgjksd: - -implicit borrow -^^^^^^^^^^^^^^^ - -:dp:`fls_q2v9ejpcvtwg` -An :t:`implicit borrow` is a :t:`borrow` that is not present syntactically in -program text. An :t:`implicit borrow` occurs in the following contexts: - -.. _fls_i3iB9xP8h8Ci: - -implicitly declared entity -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_VQs1jd4Nx3qR` -An :t:`implicitly declared entity` is an :t:`entity` that lacks an explicit -:t:`declaration`. The following :t:`entities ` are -:t:`implicitly declared entities `: - -.. _fls_43CCrG952l5i: - -implied bound -^^^^^^^^^^^^^ - -:dp:`fls_t77d8xwG1l9Q` -An :t:`implied bound` is a :t:`bound` that is not expressed in syntax, but is -is the byproduct of relations between :t:`[lifetime parameter]s` and -:t:`[function parameter]s`, between :t:`[lifetime parameter]s` and a -:t:`return type`, and between :t:`[lifetime parameter]s` and :t:`[field]s`. - -.. _fls_3lo8ygoyxxyf: - -in scope -^^^^^^^^ - -:dp:`fls_sy380geqvf2l` -A :t:`scope` is a region of program text where an :t:`entity` can be referred -to. An :t:`entity` is :t:`in scope` when it can be referred to. - -.. _fls_nscfxu6huw6q: - -inclusive range pattern -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_olfeuvwkosse` -An :t:`inclusive range pattern` is a :t:`range pattern` with both a -:t:`range pattern low bound` and a :t:`range pattern high bound`. - -.. _fls_j44ow2k5va3s: - -incomplete associated constant -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_bq48gl84bul0` -An :t:`incomplete associated constant` is an :t:`associated constant` without -a :t:`constant initializer`. - -.. _fls_ga2n4nbm1pkk: - -incomplete associated function -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_iboondra204w` -An :t:`incomplete associated function` is an :t:`associated function` without -a :t:`function body`. - -.. _fls_n99acc2tr9qm: - -incomplete associated type -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_tka0gth8rc9x` -An :t:`incomplete associated type` is an :t:`associated type` without an -:t:`initialization type`. - -.. _fls_6tysvlg2ifr3: - -index expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_1f7e9q8n431n` -An :t:`index expression` is an :t:`expression` that indexes into a :t:`value` -of an :t:`indexable type`. - -.. _fls_S0pnJKPJPU0i: - -indexable type -^^^^^^^^^^^^^^ - -:dp:`fls_AdVGyKZFvvUS` -An :t:`indexable type` is a :t:`type` that implements the -:std:`core::ops::Index` :t:`trait`. - -.. _fls_qs654p61ivpx: - -indexed deconstructor -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_q7eta38vw0ig` -An :t:`indexed deconstructor` is a :t:`construct` that matches the position of -a :t:`field`. - -.. _fls_bu46dg60o8us: - -indexed field selector -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_u6mh5yediub` -An :t:`indexed field selector` is a :t:`field selector` where the selected -:t:`field` is indicated by an index. - -.. _fls_rua2ni3p9qz2: - -indexed initializer -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_oonqolgqyrq1` -An :t:`indexed initializer` is a :t:`construct` that specifies the index and -initial :t:`value` of a :t:`field` in a :t:`struct expression`. - -.. _fls_irp9ive4e66r: - -indexed operand -^^^^^^^^^^^^^^^ - -:dp:`fls_dvmm47wnl33e` -An :t:`indexed operand` is an :t:`operand` which indicates the :t:`value` -being indexed into by an :t:`index expression`. - -.. _fls_a350zwl1or4g: - -indexing operand -^^^^^^^^^^^^^^^^ - -:dp:`fls_ipw4tfrserbu` -An :t:`indexing operand` is an :t:`operand` which specifies the index of an -:t:`index expression`. - -.. _fls_k9kuxgte6vxn: - -indirection type -^^^^^^^^^^^^^^^^ - -:dp:`fls_8so1phpdjyk8` -An :t:`indirection type` is a :t:`type` whose :t:`[value]s` refer to memory -locations. - -.. _fls_gccnknktzp7g: - -inert attribute -^^^^^^^^^^^^^^^ - -:dp:`fls_o4e3tyjz7l1h` -An :t:`inert attribute` is an :t:`attribute` that remains with the :t:`item` -it decorates. - -.. _fls_z5593p7wfab: - -inferred type -^^^^^^^^^^^^^ - -:dp:`fls_9xgfexeqr4ed` -An :t:`inferred type` is a placeholder for a :t:`type` deduced by -:t:`type inference`. - -.. _fls_kg9aeyrw822m: - -infinite loop -^^^^^^^^^^^^^ - -.. _fls_o2eei5aqgds6: - -infinite loop expression -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_mvplpa4t1f2p` -An :t:`infinite loop expression` is a :t:`loop expression` that continues to -evaluate its :t:`loop body` indefinitely. - -.. _fls_o57p4yhjci61: - -inherent implementation -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_6fpicw8ss4h3` -An :t:`inherent implementation` is an :t:`implementation` that adds direct -functionality. - -.. _fls_c1wbumq0bumj: - -initialization -^^^^^^^^^^^^^^ - -:dp:`fls_xi07ycze6mo0` -:t:`Initialization` is the act of supplying an initial :t:`value` to a -:t:`constant`, a :t:`static`, or a :t:`variable`. - -.. _fls_ctusGvpQvJue: - -initialization expression -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_KUeiSByPUc4w` -An :t:`initialization expression` is either a :t:`constant initializer` or a -:t:`static initializer`. - -.. _fls_pd30dl2envjn: - -initialization type -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_crn87nne7k38` -An :t:`initialization type` is the :t:`type` a :t:`type alias` defines a -:t:`name` for. - -.. _fls_lbL2b9wyg6es: - -inline assembly -^^^^^^^^^^^^^^^ - -:dp:`fls_1MtaLEA7YfSv` -:t:`Inline assembly` is hand-written assembly code that is integrated into a -Rust program. - -.. _fls_c54lmkluwbwr: - -inline module -^^^^^^^^^^^^^ - -:dp:`fls_tbldwtisl9vc` -An :t:`inline module` is a :t:`module` with an :s:`InlineModuleSpecification`. - -.. _fls_joxepyv84ajz: - -inner attribute -^^^^^^^^^^^^^^^ - -:dp:`fls_l7kxkav42l5d` -An :t:`inner attribute` is an :t:`attribute` that applies to an enclosing -:t:`item`. - -.. _fls_chbp2je32okc: - -inner block doc -^^^^^^^^^^^^^^^ - -:dp:`fls_f4nqkybpwj1a` -An :t:`inner block doc` is a :t:`block comment` that applies to an enclosing -:t:`non-[comment]` :t:`construct`. - -.. _fls_vR1ucGTBKjlH: - -inner doc comment -^^^^^^^^^^^^^^^^^ - -:dp:`fls_6KunKwZf9QaF` -An :t:`inner doc comment` is either an :t:`inner block doc` or an -:t:`inner line doc`. - -.. _fls_xgm53126q9c4: - -inner line doc -^^^^^^^^^^^^^^ - -:dp:`fls_vtwavwjhgvlz` -An :t:`inner line doc` is a :t:`line comment` that applies to an enclosing -:t:`non-[comment]` :t:`construct`. - -.. _fls_DTb5xegDqm9S: - -input register -^^^^^^^^^^^^^^ - -:dp:`fls_dTvdQaFpncCj` -An :t:`input register` is a :t:`register` whose :t:`register name` is used in -a :t:`register argument` subject to :t:`direction modifier` ``in``, ``inout``, -or ``inlateout``. - -.. _fls_Tmju2kXErYhJ: - -input register expression -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rvbuHSgg2RHt` -An :t:`input register expression` is an :t:`expression` that provides the -initial :t:`value` of a :t:`register`. - -.. _fls_y9EOkstHPckB: - -input-output register expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_lLQw3EFl7x5z` -An :t:`input-output register expression` is a :t:`construct` that specifies -both an :t:`input register expression` and an :t:`output register expression`. - -.. _fls_e2kizieowvuh: - -integer literal -^^^^^^^^^^^^^^^ - -:dp:`fls_23a1fjpf15qv` -An :t:`integer literal` is a :t:`numeric literal` that denotes a whole number. - -.. _fls_bhvh8qwqy8ve: - -integer suffix -^^^^^^^^^^^^^^ - -:dp:`fls_qazh8f8rs528` -An :t:`integer suffix` is a component of an :t:`integer literal` that -specifies an explicit :t:`integer type`. - -.. _fls_nu1cnk2b9qx5: - -integer type -^^^^^^^^^^^^ - -:dp:`fls_nhfqdhf26ym3` -An :t:`integer type` is a :t:`numeric type` whose :t:`[value]s` denote whole -numbers. - -.. _fls_ctuvilpb30gq: - -integer type variable -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_e3ed1tyrjsy4` -An :t:`integer type variable` is a :t:`type variable` that can refer only to -:t:`[integer type]s`. - -.. _fls_mb3xnplwdw9l: - -interior mutability -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_e0173dd09znl` -:t:`Interior mutability` is a property of :t:`[type]s` whose :t:`[value]s` can -be modified through :t:`[immutable reference]s`. - -.. _fls_7rj914fhginh: - -intermediate match arm -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_l6pemxmdllvl` -An :t:`intermediate match arm` is any :t:`non-[final match arm]` of a -:t:`match expression`. - -.. _fls_fgmvmcw2kw5i: - -irrefutable constant -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_hd02jah50qzl` -An :t:`irrefutable constant` is a :t:`constant` of a :t:`type` that has at most -one :t:`value`. - -.. _fls_ckz7pujdnuo5: - -irrefutable pattern -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_y421hdrbs6ak` -An :t:`irrefutable pattern` is a :t:`pattern` that always matches any :t:`value` of its :t:`type`. - -.. _fls_vt44bvhm4duk: - -isize -^^^^^ - -:dp:`fls_6x617i9zcj7o` -:dc:`isize` is a :t:`signed integer type` with the same number of bits as the -platform's :t:`pointer type`, and is at least 16-bits wide. - -.. _fls_yh2a7e3d3894: - -item -^^^^ - -:dp:`fls_2ghaujiqkhyy` -An :t:`item` is the most basic semantic element in program text. An :t:`item` -defines the compile- and run-time semantics of a program. - -.. _fls_wojJZZ4gYGfl: - -item scope -^^^^^^^^^^ - -:dp:`fls_mW7IwWGSjrl2` -An :t:`item scope` is a :t:`scope` for :t:`[item]s`. - -.. _fls_yaurxo4ogfsh: - -item statement -^^^^^^^^^^^^^^ - -:dp:`fls_r0crucpuhtj` -An :t:`item statement` is a :t:`statement` that is expressed as an :t:`item`. - -.. _fls_orde7iunolyx: - -iteration expression -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_suz163n1x1xm` -An :t:`iteration expression` is an :t:`expression` that provides the criterion -of a :t:`while loop expression`. - -.. _fls_yjs58mp5fkxz: - -keyword -^^^^^^^ - -:dp:`fls_z3825koc9c1w` -A :t:`keyword` is a word in program text that has special meaning. - -.. _fls_uVUoHmNtPRtS: - -label -^^^^^ - -:dp:`fls_iAAf2rLmgmGQ` -A :t:`label` is the :t:`name` of a :t:`loop expression`. - -.. _fls_dw5s7jhk4v8s: - -label indication -^^^^^^^^^^^^^^^^ - -:dp:`fls_sso322p7adt0` -A :t:`label indication` is a :t:`construct` that indicates a :t:`label`. - -.. _fls_P0on44EAB3cn: - -label scope -^^^^^^^^^^^ - -:dp:`fls_2H6HkQ102hVS` -A :t:`label scope` is a :t:`scope` for :t:`[label]s`. - -.. _fls_w5gslebevlya: - -layout -^^^^^^ - -:dp:`fls_qk602dmhc0d6` -A :t:`layout` specifies the :t:`alignment`, :t:`size`, and the relative offset -of :t:`[field]s` in a :t:`type`. - -.. _fls_bputdgkeezfs: - -lazy and expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_v2e6t73uk6nt` -A :t:`lazy and expression` is a :t:`lazy boolean expression` that uses short -circuit and arithmetic. - -.. _fls_4a6yhxj783a1: - -lazy boolean expression -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_jpv7l86sdh6i` -A :t:`lazy boolean expression` is an :t:`expression` that performs short -circuit Boolean arithmetic. - -.. _fls_9mvrfhsegwp0: - -lazy or expression -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_aln8bbvx9kzm` -A :t:`lazy or expression` is a :t:`lazy boolean expression` that uses short -circuit or arithmetic. - -.. _fls_x6vo9pysmex2: - -left operand -^^^^^^^^^^^^ - -:dp:`fls_m821x5195ac9` -A :t:`left operand` is an :t:`operand` that appears on the left-hand side of a -:t:`binary operator`. - -.. _fls_ulmspewtlo57: - -less-than expression -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_9ttxqxt9ui4t` -A :t:`less-than expression` is a :t:`comparison expression` that tests for a -less-than relationship. - -.. _fls_es169x7ars9a: - -less-than-or-equals expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_8pya58ug180j` -A :t:`less-than-or-equals expression` is a :t:`comparison expression` that -tests for a less-than-or-equals relationship. - -.. _fls_DdZ1ZwjLZTeG: - -let binding -^^^^^^^^^^^ - -:dp:`fls_sw6HrsxsnG2y` -A :t:`let binding` is the :t:`binding` introduced by a :t:`let statement`, an :t:`if let expression`, or a :t:`while let loop expression`. - -.. _fls_hqj80jHcxEBB: - -let initializer -^^^^^^^^^^^^^^^ - -:dp:`fls_jtTpBZ4ujZRc` -A :t:`let initializer` is a :t:`construct` that provides the :t:`value` of -the :t:`[binding]s` of the :t:`let statement` using an :t:`expression`, or -alternatively executes a :t:`block expression`. - -.. _fls_39k0ebr7snb0: - -let statement -^^^^^^^^^^^^^ - -:dp:`fls_yh7hn6jjv3ur` -A :t:`let statement` is a :t:`statement` that introduces new :t:`[binding]s` -produced by its :t:`pattern-without-alternation` that are optionally -initialized to a :t:`value`. - -.. _fls_h2tqtmm5686y: - -lexical element -^^^^^^^^^^^^^^^ - -:dp:`fls_nrxnbkatn63n` -A :t:`lexical element` is the most basic syntactic element in program -text. - -.. _fls_r1sk7vdgckym: - -library crate -^^^^^^^^^^^^^ - -:dp:`fls_3m8lg4mdc2x0` -A :t:`library crate` is a :t:`crate` whose :t:`crate type` is ``lib``, ``rlib``, -``staticlib``, ``dylib``, or ``cdylib``. - -.. _fls_vdhaa61g6kah: - -lifetime -^^^^^^^^ - -:dp:`fls_il3n0w4m084b` -A :t:`lifetime` specifies the expected longevity of a :t:`value`. - -.. _fls_d0s6bk7ljqrb: - -lifetime argument -^^^^^^^^^^^^^^^^^ - -:dp:`fls_oaf87yjb3xjs` -A :t:`lifetime argument` is a :t:`generic argument` that supplies the -:t:`lifetime` of a :t:`lifetime parameter`. - -.. _fls_ca9pu348r9jm: - -lifetime bound -^^^^^^^^^^^^^^ - -:dp:`fls_u6xfs8fg558` -A :t:`lifetime bound` is a :t:`bound` that imposes a constraint on the -:t:`[lifetime]s` of :t:`[generic parameter]s`. - -.. _fls_fV8sP0roRyBN: - -lifetime bound predicate -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_AHftLKgSP9Xk` -A :t:`lifetime bound predicate` is a :t:`construct` that specifies -:t:`[lifetime bound]s` on a :t:`lifetime parameter`. - -.. _fls_al39r9uz2zmy: - -lifetime elision -^^^^^^^^^^^^^^^^ - -:dp:`fls_dq5wkd61ry3l` -:t:`Lifetime elision` is a set of rules that automatically insert -:t:`[lifetime parameter]s` and/or :t:`[lifetime argument]s` when they are -elided in the source code. - -.. _fls_md7ii59zobrc: - -lifetime parameter -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_7g0iu68nrsd4` -A :t:`lifetime parameter` is a :t:`generic parameter` for a :t:`lifetime`. - -.. _fls_joDjnHu1L9Lp: - -lifetime variable -^^^^^^^^^^^^^^^^^ - -:dp:`fls_ucZnCBWxXl6n` -A :t:`lifetime variable` is a placeholder used during :t:`type inference` to -stand in for an undetermined :t:`lifetime` of a :t:`type`. - -.. _fls_8qputmx0i7ku: - -line -^^^^ - -:dp:`fls_oqf2439j3y7b` -A :t:`line` is a sequence of zero or more characters followed by an end of -line. - -.. _fls_k5ycqijslkxh: - -line comment -^^^^^^^^^^^^ - -:dp:`fls_3e7asah7lkqj` -A :t:`line comment` is a :t:`comment` that spans exactly one :t:`line`. - -.. _fls_z850pyf9r1f4: - -literal -^^^^^^^ - -:dp:`fls_ckbyt11pku9j` -A :t:`literal` is a fixed :t:`value` in program text. - -.. _fls_b57clq8jhw5w: - -literal expression -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_otaauusc24v5` -A :t:`literal expression` is an :t:`expression` that denotes a :t:`literal`. - -.. _fls_bo2tv8ky1jc: - -literal pattern -^^^^^^^^^^^^^^^ - -:dp:`fls_5s9b4bza13xf` -A :t:`literal pattern` is a :t:`pattern` that matches a :t:`literal`. - -.. _fls_bYpBl5zfTibF: - -local trait -^^^^^^^^^^^ - -:dp:`fls_I9JaKZelMiby` -A :t:`local trait` is a :t:`trait` that is defined in the current :t:`crate`. - -.. _fls_cexgUIGUUKS4: - -local type -^^^^^^^^^^ - -:dp:`fls_HvGPB3CsN4Ah` -A :t:`local type` is a :t:`type` that is defined in the current :t:`crate`. - -.. _fls_lkxiws55xhpq: - -local variable -^^^^^^^^^^^^^^ - -.. _fls_kdqa8zs8tk6g: - -loop -^^^^ - -.. _fls_5vt0Ph5BfDnU: - -loop body -^^^^^^^^^ - -:dp:`fls_fRWcWPeKgx9g` -A :t:`loop body` is the :t:`block expression` of a :t:`loop expression`. - -.. _fls_an1s2hnapd59: - -loop expression -^^^^^^^^^^^^^^^ - -:dp:`fls_2yypq3m1kquj` -A :t:`loop expression` is an :t:`expression` that evaluates a -:t:`block expression` continuously as long as some criterion holds true. - -.. _fls_sdkcn1exc9da: - -macro -^^^^^ - -:dp:`fls_bt16qi8g2js5` -A :t:`macro` is a custom definition that extends Rust by defining callable -syntactic transformations. The effects of a :t:`macro` are realized through -:t:`[macro invocation]s` or :t:`attribute` use. :t:`[Macro]s` come in two -distinct forms: - -.. _fls_td4jm76u9m03: - -macro expansion -^^^^^^^^^^^^^^^ - -:dp:`fls_t383uo1l4h8x` -:t:`Macro expansion` is the process of statically executing a -:t:`macro invocation` and replacing it with the produced output of the -:t:`macro invocation`. - -.. _fls_o5jy1u64nyiy: - -macro implementation function -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_xy4t1suhrn46` -A :t:`macro implementation function` is the :t:`function` that encapsulates -the syntactic transformations of a :t:`procedural macro`. - -.. _fls_20x9eqa7xeui: - -macro invocation -^^^^^^^^^^^^^^^^ - -:dp:`fls_5qtwcp5ns5vz` -A :t:`macro invocation` is a call of a :t:`declarative macro` or -:t:`function-like macro` that is expanded statically and replaced with the -result of the :t:`macro`. - -.. _fls_boanb1ipzc9: - -macro match -^^^^^^^^^^^ - -:dp:`fls_q0ve6nd287ta` -A :t:`macro match` is the most basic form of a satisfied :t:`macro matcher`. - -.. _fls_4h4snjd4thsv: - -macro matcher -^^^^^^^^^^^^^ - -:dp:`fls_sqncf88chnsy` -A :t:`macro matcher` is a :t:`construct` that describes a syntactic pattern -that a :t:`macro` must match. - -.. _fls_ao7GhE0C8MQO: - -macro matching -^^^^^^^^^^^^^^ - -:dp:`fls_RrDmFXuZrhFT` -:t:`Macro matching` is the process of performing :t:`rule matching` and -:t:`token matching`. - -.. _fls_kddW7EirSn0g: - -macro repetition -^^^^^^^^^^^^^^^^ - -:dp:`fls_sDomcFWIeUAT` -A :t:`macro repetition` is either a :t:`macro repetition in matching` or a -:t:`macro repetition in transcription`. - -.. _fls_a5j2hztrjfv5: - -macro repetition in matching -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_wio0e9qzstjh` -A :t:`macro repetition in matching` allows for a syntactic pattern to be -matched zero or multiple times during :t:`macro matching`. - -.. _fls_sqv126lwdz23: - -macro repetition in transcription -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ex9vd3w0t4wo` -A :t:`macro repetition in transcription` allows for a syntactic pattern to be -transcribed zero or multiple times during :t:`macro transcription`. - -.. _fls_gw31cagmzx26: - -macro rule -^^^^^^^^^^ - -:dp:`fls_7gfdqggs33id` -A :t:`macro rule` is a :t:`construct` that consists of a :t:`macro matcher` -and a :t:`macro transcriber`. - -.. _fls_i4yf4lt8qvkt: - -macro statement -^^^^^^^^^^^^^^^ - -:dp:`fls_yhh9k9epv3g6` -A :t:`macro statement` is a :t:`statement` expressed as a -:t:`terminated macro invocation`. - -.. _fls_76o6rjh6lrqd: - -macro transcriber -^^^^^^^^^^^^^^^^^ - -:dp:`fls_ug79qf3p693h` -A :t:`macro transcriber` is a :t:`construct` that describes the replacement -syntax of a :t:`macro`. - -.. _fls_vdq3cphhpxmg: - -macro transcription -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_nouiggbpipg` -:t:`Macro transcription` is the process of producing the expansion of a -:t:`declarative macro`. - -.. _fls_MJ1YWiOpxAa8: - -main function signature -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_QijObGZEIykU` -A :t:`main function signature` is the :t:`function signature` required for the -:t:`program entry point` function named ``main``. - -.. _fls_fizf1byuspv2: - -match arm -^^^^^^^^^ - -:dp:`fls_z5qsy5z2zak3` -A :t:`match arm` is a :t:`construct` that consists of a :t:`match arm matcher` -and a :t:`match arm body`. - -.. _fls_q7lcdtxuy1ac: - -match arm body -^^^^^^^^^^^^^^ - -:dp:`fls_33e7oefx0xqm` -A :t:`match arm body` is the :t:`operand` of a :t:`match arm`. - -.. _fls_aa1x6ajl4zid: - -match arm guard -^^^^^^^^^^^^^^^ - -:dp:`fls_uhn07jmvv9ea` -A :t:`match arm guard` is a :t:`construct` that provides additional filtering -to a :t:`match arm matcher`. - -.. _fls_i3omadaygum2: - -match arm matcher -^^^^^^^^^^^^^^^^^ - -:dp:`fls_paz9358w4cpu` -A :t:`match arm matcher` is a :t:`construct` that consists of a :t:`pattern` -and a :t:`match arm guard`. - -.. _fls_w15uouo0sjao: - -match expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_2ohrphptjny6` -A :t:`match expression` is an :t:`expression` that tries to match one of -its multiple :t:`[pattern]s` against its :t:`subject expression` and if it -succeeds, evaluates an :t:`operand`. - -.. _fls_xo9uyazcfuq3: - -metavariable -^^^^^^^^^^^^ - -:dp:`fls_fu1esz5i9mt` -A :t:`metavariable` is a :t:`macro match` that describes a :t:`variable`. - -.. _fls_5P2594jy7uDE: - -metavariable indication -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_r1FxbWffC9Wt` -A :t:`metavariable indication` is a :t:`construct` that indicates a -:t:`metavariable`. - -.. _fls_bi3g8xkk9ekf: - -method -^^^^^^ - -:dp:`fls_n4opbiofu9q6` -A :t:`method` is an :t:`associated function` with a :t:`self parameter`. - -.. _fls_l4wel2551cw9: - -method call expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_367sod24edts` -A :t:`method call expression` is an :t:`expression` that invokes a :t:`method` -of a :t:`variable`. - -.. _fls_l6eJxvmplLqQ: - -method operand -^^^^^^^^^^^^^^ - -:dp:`fls_VLLAFjAxCfkE` -A :t:`method operand` is an :t:`operand` that denotes the :t:`method` being -invoked by a :t:`method call expression`. - -.. _fls_05yFh5Ud0YkW: - -method resolution -^^^^^^^^^^^^^^^^^ - -:dp:`fls_LbW4z6OTuD1l` -:t:`Method resolution` is a kind of :t:`resolution` that applies to a -:t:`method call expression`. - -.. _fls_2FFRdj5cO0ks: - -mixed site hygiene -^^^^^^^^^^^^^^^^^^ - -* :dp:`fls_uyvnq88y9gk3` - :t:`mixed site hygiene` is a hygiene category that resolves to a - :s:`MacroRulesDeclaration` site for :t:`[label]s`, :t:`[variable]s`, and the - ``$crate`` :t:`metavariable`, and to the :s:`MacroInvocation` site otherwise, - and is considered :t:`partially hygienic`. - -.. _fls_5hoe1v960xfi: - -modifying operand -^^^^^^^^^^^^^^^^^ - -:dp:`fls_9wt2l5gg06pb` -A :t:`modifying operand` is an :t:`operand` that supplies the :t:`value` that -is used in the calculation of a :t:`compound assignment expression`. - -.. _fls_kbxk78vm564e: - -module -^^^^^^ - -:dp:`fls_ujlsg58bskl5` -A :t:`module` is a container for zero or more :t:`[item]s`. - -.. _fls_gnucgrytswa4: - -move type -^^^^^^^^^ - -:dp:`fls_ri37ez31gai8` -A :t:`move type` is a :t:`type` that implements the :std:`core::marker::Sized` -:t:`trait` and is not a :t:`copy type`. - -.. _fls_iw2vYgmLhlsg: - -multi segment path -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_T4Xd6W6EqPSb` -A :t:`multi segment path` is a :t:`path` consisting of more than one -:t:`path segment`. - -.. _fls_lpSCLhnaxeCg: - -multiplication assignment -^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. _fls_yo4k6lk0tizn: - -multiplication assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_eo9gx05n5ru3` -A :t:`multiplication assignment expression` is a -:t:`compound assignment expression` that uses multiplication. - -.. _fls_bgtznqqgtmd8: - -multiplication expression -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_324qh8wz474b` -A :t:`multiplication expression` is an :t:`arithmetic expression` that uses -multiplication. - -.. _fls_yM11Bcxn4p7c: - -mutability -^^^^^^^^^^ - -:dp:`fls_lBrXj9lo4s6o` -:t:`mutability` determines whether a :t:`construct` can modify a :t:`value`. - -.. _fls_wvejcadmzt5p: - -mutable -^^^^^^^ - -:dp:`fls_dqm58deu1orn` -A :t:`value` is :t:`mutable` when it can be modified. - -.. _fls_TEVPHHiCMByO: - -mutable assignee expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_0RSlFbwrB3gp` -A :t:`mutable assignee expression` is an :t:`assignee expression` whose -:t:`value` can be modified. - -.. _fls_ntaA0NtJ9z5h: - -mutable binding -^^^^^^^^^^^^^^^ - -:dp:`fls_v2pGKVaQjtcl` -A :t:`mutable binding` is a :t:`binding` whose :t:`value` can be modified. - -.. _fls_iku91jwdtdr1: - -mutable borrow -^^^^^^^^^^^^^^ - -:dp:`fls_5knwbyz4fd9z` -A :t:`mutable borrow` is a :t:`mutable reference` produced by :t:`borrowing`. - -.. _fls_kw3oiotr98tt: - -mutable borrow expression -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_80kcc4y21hu6` -A :t:`mutable borrow expression` is a :t:`borrow expression` that has -:t:`keyword` ``mut``. - -.. _fls_7eyza445ew53: - -mutable place expression -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_kq877s3vij70` -A :t:`mutable place expression` is a :t:`place expression` whose memory -location can be modified. The following :t:`[place expression]s` are -:t:`[mutable place expression]s`: - -.. _fls_x5BKVLc4KDlK: - -mutable place expression context -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_2ixH8LWGHi3k` -A :t:`mutable place expression context` is a :t:`place expression context` that -may evaluate its :t:`operand` as a mutable memory location. The following -:t:`[construct]s` are :t:`[mutable place expression context]s`: - -.. _fls_wOvlW47jKEWF: - -mutable raw pointer type -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_86SFxSDRcC06` -A :t:`mutable raw pointer type` is a :t:`raw pointer type` subject to -:t:`keyword` ``mut``. - -.. _fls_jtzj092hyjkz: - -mutable reference -^^^^^^^^^^^^^^^^^ - -:dp:`fls_wujjrhm1d338` -A :t:`mutable reference` is a :t:`value` of a :t:`mutable reference type`, and -allows the mutation of its :t:`referent`. - -.. _fls_8iq0wcczl465: - -mutable reference type -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_q06p9tclwaaw` -A :t:`mutable reference type` is a :t:`reference type` subject to :t:`keyword` -``mut``. - -.. _fls_omgyj7yxwgua: - -mutable static -^^^^^^^^^^^^^^ - -:dp:`fls_3ss4bokujaby` -A :t:`mutable static` is a :t:`static` with :t:`keyword` ``mut`` whose -:t:`value` can be modified. - -.. _fls_n7h4xr40xwgb: - -mutable variable -^^^^^^^^^^^^^^^^ - -:dp:`fls_kjjv9jvdpf2o` -A :t:`mutable variable` is a :t:`variable` whose :t:`value` can be modified. - -.. _fls_kad7fzn94x4d: - -name -^^^^ - -:dp:`fls_jjpzrs38vs3y` -A :t:`name` is an :t:`identifier` that refers to an :t:`entity`. - -.. _fls_CxzbzLu4pWPY: - -named block expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ivFb8uAMVY3Q` -A :t:`named block expression` is a :t:`block expression` with a :t:`label`. - -.. _fls_dgs9y3nan69v: - -named deconstructor -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_g3k1hy3j4qn9` -A :t:`named deconstructor` is a :t:`construct` that matches the :t:`name` of -a :t:`field`. - -.. _fls_cvxdoycoytc5: - -named field selector -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_cczpgxqdyh1e` -A :t:`named field selector` is a :t:`field selector` where the selected -:t:`field` is indicated by an :t:`identifier`. - -.. _fls_kp0mbopkbjer: - -named initializer -^^^^^^^^^^^^^^^^^ - -:dp:`fls_xwvz8i4jim7a` -A :t:`named initializer` is a :t:`construct` that specifies the name and -initial :t:`value` of a :t:`field` in a :t:`struct expression`. - -.. _fls_biwn3hxza37n: - -named loop expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_440dr5qix3ns` -A :t:`named loop expression` is a :t:`loop expression` with a :t:`label`. - -.. _fls_WT1ZdxTZwUUE: - -named register argument -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_QBWHppNO8FPk` -A :t:`named register argument` is a :t:`register argument` whose configuration -is bound to an :t:`identifier`. - -.. _fls_GesmsWSVhv3f: - -namespace -^^^^^^^^^ - -:dp:`fls_er8lcvnEqxa5` -A :t:`namespace` is a logical grouping of :t:`[name]s` such that the -occurrence of a :t:`name` in one :t:`namespace` does not conflict with an -occurrence of the same :t:`name` in another :t:`namespace`. - -.. _fls_z3lxbjF4gaqV: - -NaN-boxing -^^^^^^^^^^ - -:dp:`fls_s956sJGwOa6z` -:t:`NaN-boxing` is a technique for encoding :t:`[value]s` using the low order -bits of the mantissa of a 64-bit IEEE floating-point ``NaN``. - -.. _fls_3sp4twvfvb32: - -negation expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_pmn6cjamdt0a` -A :t:`negation expression` is an :t:`expression` that negates its :t:`operand`. - -.. _fls_6rlvd0u4w6h2: - -nesting import -^^^^^^^^^^^^^^ - -:dp:`fls_nhkqkdqo32xs` -A :t:`nesting import` is a :t:`use import` that provides a common -:t:`simple path prefix` for its nested :t:`[use import]s`. - -.. _fls_cwcbtnzbqmq2: - -never type -^^^^^^^^^^ - -:dp:`fls_m9v5j6detob4` -The :t:`never type` is a :t:`type` that represents the result of a computation -that never completes. - -.. _fls_3vhflvajgqzd: - -non-reference pattern -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_tejled5izyue` -A :t:`non-reference pattern` is any :t:`pattern` except -:t:`non-[binding pattern]s`, :t:`[path pattern]s`, :t:`[reference pattern]s`, -and :t:`[underscore pattern]s`. - -.. _fls_5u8ihVDp4mdb: - -not configuration predicate -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_BVMlBterkFYq` -A :t:`not configuration predicate` is a :t:`configuration predicate` that -negates the Boolean :t:`value` of its nested :t:`configuration predicate`. - -.. _fls_shgatqvpdqkg: - -not-equals expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_2hmynl94uusk` -A :t:`not-equals expression` is a :t:`comparison expression` that tests for -inequality. - -.. _fls_gqw1bzwexxt0: - -null -^^^^ - -:dp:`fls_8sh17t37b2ml` -A :dc:`null` :t:`value` denotes the address ``0``. - -.. _fls_a0qsojiymgjy: - -numeric literal -^^^^^^^^^^^^^^^ - -:dp:`fls_978ndaqdv4r` -A :t:`numeric literal` is a :t:`literal` that denotes a number. - -.. _fls_CmvuNXmowCz8: - -numeric literal pattern -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_azqQ3JxD5Lt7` -A :t:`numeric literal pattern` is a :t:`pattern` that matches a :t:`numeric -literal`. - -.. _fls_rayjriyofmpa: - -numeric type -^^^^^^^^^^^^ - -:dp:`fls_cpdsj94l57af` -A :t:`numeric type` is a :t:`type` whose :t:`[value]s` denote numbers. - -.. _fls_a226qzrb4iq9: - -object safe -^^^^^^^^^^^ - -:dp:`fls_oa2jiklr5nl2` -A :t:`trait` is :t:`object safe` when: - -.. _fls_vomlqv7i1fc4: - -object safety -^^^^^^^^^^^^^ - -:dp:`fls_vqmng1l9ab8a` -:t:`Object safety` is the process of determining whether a :t:`trait` can be -used as a :t:`trait object type`. - -.. _fls_bo889w63y7oi: - -obsolete range pattern -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ave42vwb45zb` -An :t:`obsolete range pattern` is a :t:`range pattern` that uses obsolete -syntax to express an :t:`inclusive range pattern`. - -.. _fls_q47u2zq6clon: - -octal literal -^^^^^^^^^^^^^ - -:dp:`fls_pf4341vnqiin` -An :t:`octal literal` is an :t:`integer literal` in base 8. - -.. _fls_pv4lok5qcn8y: - -operand -^^^^^^^ - -:dp:`fls_3mnn1au9ob6q` -An :t:`operand` is an :t:`expression` nested within an :t:`expression`. - -.. _fls_smk8mi72lt57: - -operator expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_6ev01xwcfow1` -An :t:`operator expression` is an :t:`expression` that involves an operator. - -.. _fls_C5DiCsvsaBsj: - -opt-out trait bound -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_wS4EzN0N1GDP` -An :t:`opt-out trait bound` is a :t:`trait bound` with :s:`Punctuation` ``?`` -that nullifies an implicitly added :t:`trait bound`. - -.. _fls_LnPDQW3bnNUw: - -or-pattern -^^^^^^^^^^ - -:dp:`fls_LnPDQW3bnNUw` -An :t:`or-pattern` is a :t:`pattern` that matches on one of two or more :t:`[pattern-without-alternation]s` and or-s them using character 0x7C (vertical line). - -.. _fls_gllzixm9yt9w: - -outer attribute -^^^^^^^^^^^^^^^ - -:dp:`fls_gffxnbilsqly` -An :t:`outer attribute` is an :t:`attribute` that applies to a subsequent -:t:`item`. - -.. _fls_toncretg92qh: - -outer block doc -^^^^^^^^^^^^^^^ - -:dp:`fls_531ggn1f8f6u` -An :t:`outer block doc` is a :t:`block comment` that applies to a subsequent -:t:`non-[comment]` :t:`construct`. - -.. _fls_PuTD100sWO5N: - -outer doc comment -^^^^^^^^^^^^^^^^^ - -:dp:`fls_mgSEUNUPcPBs` -An :t:`outer doc comment` is either an :t:`outer block doc` or an -:t:`outer line doc`. - -.. _fls_eqjbv8sovvfl: - -outer line doc -^^^^^^^^^^^^^^ - -:dp:`fls_m3u30fu8uac3` -An :t:`outer line doc` is a :t:`line comment` that applies to a subsequent -:t:`non-[comment]` :t:`construct`. - -.. _fls_de935b1pzd28: - -outline module -^^^^^^^^^^^^^^ - -:dp:`fls_xhe5gmr0r9zn` -An :t:`outline module` is a :t:`module` with an -:s:`OutlineModuleSpecification`. - -.. _fls_5LhIr1kOIEO5: - -outlives bound -^^^^^^^^^^^^^^ - -:dp:`fls_J5dt34II7Pm6` -An :t:`outlives bound` is a :t:`trait bound` which requires that a -:t:`lifetime parameter` or :t:`type` outlives a :t:`lifetime parameter`. - -.. _fls_XsGnaA47Nen0: - -output register -^^^^^^^^^^^^^^^ - -:dp:`fls_4METI8qE9JiY` -An :t:`output register` is a :t:`register` whose :t:`register name` is -used in a :t:`register argument` subject to :t:`direction modifier` ``out``, -``lateout``, ``inout``, or ``inlateout``. - -.. _fls_t79aKPilX8jk: - -output register expression -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_w95YRZ4JjBxl` -An :t:`output register expression` is an :t:`expression` that is assigned the -:t:`value` of a :t:`register`. - -.. _fls_nhamq7xtz384: - -overlap -^^^^^^^ - -:dp:`fls_itkz9y19923k` -Two :t:`[value]s` :t:`overlap` when - -.. _fls_ke52l9lsvyu2: - -owner -^^^^^ - -:dp:`fls_7vwwhberexeb` -An :t:`owner` is a :t:`variable` that holds a :t:`value`. - -.. _fls_1gmetz8qtr0l: - -ownership -^^^^^^^^^ - -:dp:`fls_tu4zt8twucsz` -:t:`Ownership` is a property of :t:`[value]s` that is central to the resource -management model of Rust. - -.. _fls_wzpivxkhpln: - -panic -^^^^^ - -:dp:`fls_t3kpbnmohtp6` -A :t:`panic` is an abnormal program state caused by invoking :t:`macro` -:std:`core::panic`. - -.. _fls_fl56jfxbj0f: - -parenthesized expression -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_yu1x2rr7cewa` -A :t:`parenthesized expression` is an :t:`expression` that groups other -:t:`[expression]s`. - -.. _fls_ww6nyinsw1lr: - -parenthesized pattern -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_7j12dwsx9ghg` -A :t:`parenthesized pattern` is a :t:`pattern` that controls the precedence of -its :t:`[subpattern]s`. - -.. _fls_gilx8zikdq9k: - -parenthesized type -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_pamypc7t7l5n` -A :t:`parenthesized type` is a :t:`type` that disambiguates the interpretation -of :t:`[lexical element]s`. - -.. _fls_fULM1oCKSakS: - -partially hygienic -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Qh8V0Y08dNoa` -An :t:`identifier` is :t:`partially hygienic` when it has -:t:`mixed site hygiene`. - -.. _fls_wqbd5lxki2al: - -passing convention -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_eqgsg8j9btic` -A :t:`passing convention` is the mechanism that defines how a :t:`value` is -transferred between :t:`[place]s`. - -.. _fls_9zl72vtkgkuo: - -path -^^^^ - -:dp:`fls_u3jyud6mhy1f` -A :t:`path` is a sequence of :t:`[path segment]s` logically separated by -:t:`namespace qualifier` ``::`` that resolves to an :t:`entity`. - -.. _fls_1xdj34py8zc3: - -path expression -^^^^^^^^^^^^^^^ - -:dp:`fls_4ik66nmvx5hn` -A :t:`path expression` is an :t:`expression` that denotes a :t:`path`. - -.. _fls_EIFtIeLGZNy5: - -path expression resolution -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_WYcEVyc3SHuK` -:t:`Path expression resolution` is a form of :t:`path resolution` that applies -to a :t:`unqualified path expression`. - -.. _fls_ptikwcw3b20l: - -path pattern -^^^^^^^^^^^^ - -:dp:`fls_vacvk3t26ctg` -A :t:`path pattern` is a :t:`pattern` that matches a :t:`constant`, a -:t:`unit enum variant`, or a :t:`unit struct constant` indicated by a -:t:`path`. - -.. _fls_J8kiBhcawvnj: - -path resolution -^^^^^^^^^^^^^^^ - -:dp:`fls_uy9Ai9vwTkjB` -:t:`Path resolution` is a form of :t:`resolution` that applies to a :t:`path`. - -.. _fls_xb54s9cs7h08: - -path segment -^^^^^^^^^^^^ - -:dp:`fls_gsumebjc2bsp` -A :t:`path segment` is an element of a :t:`path`. - -.. _fls_uj1o721im5lb: - -pattern -^^^^^^^ - -:dp:`fls_9wwt9k1xlm6n` -A :t:`pattern` is a :t:`construct` that matches a :t:`value` which satisfies all -the criteria of the :t:`pattern`. - -.. _fls_48mv0zecb0un: - -pattern matching -^^^^^^^^^^^^^^^^ - -:dp:`fls_y3oputy9e0sz` -:t:`Pattern matching` is the process of matching a :t:`pattern` against a :t:`value`. - -.. _fls_cptagvgpgnze: - -pattern-without-alternation -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_brussjs3wo6r` -A :t:`pattern-without-alternation` is a :t:`pattern` that cannot be alternated. - -.. _fls_yeQOZKPoNzw3: - -pattern-without-range -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_LSEOvAwUM7g6` -A :t:`pattern-without-range` is a :t:`pattern-without-alternation` that -excludes :t:`[range pattern]s`. - -.. _fls_5zjHBZMsCqJZ: - -place -^^^^^ - -:dp:`fls_uCTiUBWHMPY9` -A :t:`place` is a location where a :t:`value` resides. - -.. _fls_7x6jhh0sz2f: - -place expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_z6mgu2mk142r` -A :t:`place expression` is an :t:`expression` that represents a memory -location. The following :t:`[expression]s` are :t:`[place expression]s`: - -.. _fls_tshbqttxdox1: - -place expression context -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_fqcx8suiy5k` -A :t:`place expression context` is a :t:`construct` that may evaluate its -:t:`operand` as a memory location. - -.. _fls_dr6wbsqjd2qm: - -plane -^^^^^ - -:dp:`fls_x1wbguoqdsf9` -In :t:`Unicode`, a :t:`plane` is a continuous group of 65,536 -:t:`[code point]s`. - -.. _fls_HnJEHyUiTpb1: - -pointer -^^^^^^^ - -:dp:`fls_DRjhMWo9mjoF` -A :t:`pointer` is a :t:`value` of a :t:`pointer type`. - -.. _fls_o5o1ssqqD7Jg: - -pointer type -^^^^^^^^^^^^ - -:dp:`fls_F2dUxEa4nheL` -A :t:`pointer type` is a :t:`type` whose :t:`[value]s` indicate memory locations. - -.. _fls_Q0r8JkqAP6Of: - -positional register argument -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_GJd6i52P3KM3` -A :t:`positional register argument` is a :t:`register argument` whose -configuration is not bound to an :t:`identifier`. - -.. _fls_ukvdoqo68y5b: - -precedence -^^^^^^^^^^ - -:dp:`fls_sz93844rqc4r` -:t:`Precedence` is the order by which :t:`[expression]s` are evaluated in the -presence of other :t:`[expression]s`. - -.. _fls_8Gn72FJBarfb: - -prelude -^^^^^^^ - -:dp:`fls_D0PJioOZjKNN` -A :t:`prelude` is a collection of :t:`entities ` that are -automatically brought :t:`in scope` of every :t:`module` in a :t:`crate`. - -.. _fls_AWySDxPgypiw: - -prelude entity -^^^^^^^^^^^^^^ - -:dp:`fls_2lU7RUjzFlsz` -A :t:`prelude entity` is an :t:`entity` declared in a :t:`prelude`. - -.. _fls_FYn5JqPOhiIs: - -prelude name -^^^^^^^^^^^^ - -:dp:`fls_6Jk7fUAK122A` -A :t:`prelude name` is a :t:`name` of a :t:`prelude entity`. - -.. _fls_fikexts17v7a: - -primitive representation -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_bydly1rt63pf` -:t:`Primitive representation` is the :t:`type representation` of individual -:t:`[integer type]s`. :t:`Primitive representation` applies only to an -:t:`enum type` that is not a :t:`zero-variant enum type`. It is possible to -combine :t:`C representation` and :t:`primitive representation`. - -.. _fls_mk3sa7OvtJvB: - -principal trait -^^^^^^^^^^^^^^^ - -:dp:`fls_YtYOHoPaMPFX` -The :t:`principal trait` of :t:`trait object type` is the first :t:`trait bound`. - -.. _fls_v1u1mevpj0kj: - -private visibility -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_duop22hyaweq` -:t:`Private visibility` is a kind of :t:`visibility` that allows a :t:`name` -to be referred to only by the current :t:`module` of the :t:`entity`, and its -descendant :t:`[module]s`. - -.. _fls_kCA6SW8bUq5x: - -proc-macro crate -^^^^^^^^^^^^^^^^ - -.. _fls_AjjdLZWiL9Tq: - -:dp:`fls_DfTszT1PjV7o` -A :t:`proc-macro crate` is a :t:`crate` whose :t:`crate type` is ``proc-macro``. - -.. _fls_sp5wdsxwmxf: - -procedural macro -^^^^^^^^^^^^^^^^ - -:dp:`fls_u4utpx4zgund` -A :t:`procedural macro` is a :t:`macro` that encapsulates syntactic -transformations in a :t:`function`. :t:`[Procedural macro]s` consume one or more -streams of :t:`[token]s` and produce a stream of :t:`[token]s`. - -.. _fls_SIFecOZqloyx: - -program entry point -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_9m37hN9zgEQf` -A :t:`program entry point` is a :t:`function` that is invoked at the start of -a Rust program. - -.. _fls_v2rjlovqsdyr: - -public visibility -^^^^^^^^^^^^^^^^^ - -:dp:`fls_6cfxqtl921ko` -:t:`Public visibility` is a kind of :t:`visibility` that allows for a :t:`name` -to be referred to from arbitrary :t:`module` ``M`` as long as the ancestor -:t:`[module]s` of the related :t:`entity` can be referred to from ``M``. - -.. _fls_hdwmw3jbwefi: - -punctuator -^^^^^^^^^^ - -:dp:`fls_gwqgi0b7jxmu` -A :t:`punctuator` is a character or a sequence of characters in category -:s:`Punctuation`. - -.. _fls_sgwvmnoio1ql: - -pure identifier -^^^^^^^^^^^^^^^ - -:dp:`fls_6pez8fyiew0k` -A :t:`pure identifier` is an :t:`identifier` that does not include -:t:`[weak keyword]s`. - -.. _fls_O6CFtnpN3UEE: - -qualified path expression -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_wKAS6FxqGmTf` -A :t:`qualified path expression` is a :t:`path expression` that resolves -through a :t:`qualified type`. - -.. _fls_Qv0UvhSfwBuM: - -qualified type -^^^^^^^^^^^^^^ - -:dp:`fls_e7YyZXOFo6ei` -A :t:`qualified type` is a :t:`type` that is restricted to a set of -:t:`[implementation]s` that exhibit :t:`implementation conformance` to a -:t:`qualifying trait`. - -.. _fls_koVlQq8aPdPv: - -qualified type path -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_S0QT9ib38i8E` -A :t:`qualified type path` is a :t:`type path` that resolves through a -:t:`qualified type`. - -.. _fls_B0m82A8jIerQ: - -qualifying trait -^^^^^^^^^^^^^^^^ - -:dp:`fls_zKY1dWBMrqXZ` -A :t:`qualifying trait` is a :t:`trait` that imposes a restriction on a -:t:`qualified type`. - -.. _fls_tbvugpuvcluj: - -range expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_bffrbucfwu7` -A :t:`range expression` is an :t:`expression` that constructs a range. - -.. _fls_mdvdxr6u13fw: - -range expression high bound -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_c70pj8w15nmc` -A :t:`range expression high bound` is an :t:`operand` that specifies the end -of a range. - -.. _fls_smvgd160eynr: - -range expression low bound -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_t10o1p950u00` -A :t:`range expression low bound` is an :t:`operand` that specifies the start -of a range. - -.. _fls_6pxg401r6juc: - -range pattern -^^^^^^^^^^^^^ - -:dp:`fls_vf42zdyq23lc` -A :t:`range pattern` is a :t:`pattern` that matches :t:`[value]s` which fall -within a range. - -.. _fls_3ls9xlgt8ei1: - -range pattern bound -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_l9xq96bjs4o2` -A :t:`range pattern bound` is a constraint on the range of a -:t:`range pattern`. - -.. _fls_y4rv5cbowvwg: - -range pattern high bound -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_arp7y7yme7yp` -A :t:`range pattern high bound` is a :t:`range pattern bound` that specifies -the end of a range. - -.. _fls_laev4lmmv0cw: - -range pattern low bound -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rt7q0msh3op4` -A :t:`range pattern low bound` is a :t:`range pattern bound` that specifies -the start of a range. - -.. _fls_iqpxlg7w3cvf: - -range-from expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_6enyv2oa4abq` -A :t:`range-from expression` is a :t:`range expression` that specifies an -included :t:`range expression low bound`. - -.. _fls_125h4p4zt86q: - -range-from-to expression -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_nzf6y64jz83f` -A :t:`range-from-to expression` is a :t:`range expression` that specifies an -included :t:`range expression low bound` and an excluded -:t:`range expression high bound`. - -.. _fls_8z8nrblarxrv: - -range-full expression -^^^^^^^^^^^^^^^^^^^^^ - -.. _fls_tie80ejz8s19: - -range-inclusive expression -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_9vja0wev84a7` -A :t:`range-inclusive expression` is a :t:`range expression` that specifies an -included :t:`range expression low bound` and an included -:t:`range expression high bound`. - -.. _fls_etvgkb8zcfpd: - -range-to expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_urnfp1j9d5v4` -A :t:`range-to expression` is a :t:`range expression` that specifies an -excluded :t:`range expression high bound`. - -.. _fls_ap5754dfltt5: - -range-to-inclusive expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_t4fjanjvkd69` -A :t:`range-to-inclusive expression` is a :t:`range expression` that specifies -an included :t:`range expression high bound`. - -.. _fls_YLhE2qpzYXRK: - -raw borrow expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Fe39wLb0vvEg` -A :t:`raw borrow expression` is an :t:`expression` that creates a :t:`raw pointer` to the memory location of its :t:`operand` without incurring a :t:`borrow`. - -.. _fls_ipeh92kh17ze: - -raw byte string literal -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_8v5k3wemy4tl` -A :t:`raw byte string literal` is a :t:`simple byte string literal` that does -not recognize :t:`[escaped character]s`. - -.. _fls_yGGvg3e0nPOh: - -raw c string literal -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_qhWBzqoYZL0e` -A :t:`raw c string literal` is a :t:`simple c string literal` that does not -recognize :t:`[escaped character]s`. - -.. _fls_uv4dyt4gi32x: - -raw pointer -^^^^^^^^^^^ - -:dp:`fls_rbdilcmt2cns` -A :t:`raw pointer` is a pointer of a :t:`raw pointer type`. - -.. _fls_9los8hwh60z0: - -raw pointer type -^^^^^^^^^^^^^^^^ - -:dp:`fls_wspawcoqxfbh` -A :t:`raw pointer type` is an :t:`indirection type` without validity guarantees. - -.. _fls_echjohx6fjc: - -raw string literal -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_48t4v316951j` -A :t:`raw string literal` is a :t:`simple string literal` that does not -recognize :t:`[escaped character]s`. - -.. _fls_sAe1HaaVSPvP: - -reachable control flow path -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_IxrvzuBg8j3E` -A :t:`reachable control flow path` is a control flow path that can be -taken by the execution of a program between two given points in the program. - -.. _fls_nfb3ciarl50w: - -receiver operand -^^^^^^^^^^^^^^^^ - -:dp:`fls_odbg4bizvqxq` -A :t:`receiver operand` is an :t:`operand` that denotes the :t:`value` whose -:t:`method` is being invoked by a :t:`method call expression`. - -.. _fls_Kpkm0J40xq5J: - -receiver type -^^^^^^^^^^^^^ - -:dp:`fls_vgQmMlpFas5t` -A :t:`receiver type` is the :t:`type` of the :t:`receiver operand` -of a :t:`method call expression`. - -.. _fls_nG6ikjLsCW7m: - -record enum variant -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_NWyvPQmOIjo2` -A :t:`record enum variant` is an :t:`enum variant` with a -:s:`RecordStructFieldList`. - -.. _fls_jdd6h8pdp30x: - -record struct -^^^^^^^^^^^^^ - -:dp:`fls_qyd7kqnpjs2` -A :t:`record struct` is a :t:`struct` with a :s:`RecordStructFieldList`. - -.. _fls_hzkwzbk5wp54: - -record struct field -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_lb0t10evec6z` -A :t:`record struct field` is a :t:`field` of a :t:`record struct type`. - -.. _fls_at2caaqlpva1: - -record struct pattern -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_q7njznxhmmw` -A :t:`record struct pattern` is a :t:`pattern` that matches a -:t:`enum variant value`, a :t:`struct value`, or a :t:`union value`. - -.. _fls_uthd12hz3h4v: - -record struct type -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_mgrz3o51gbis` -A :t:`record struct type` is the :t:`type` of a :t:`record struct`. - -.. _fls_cPs5C1chWmce: - -record struct value -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_SMBIc0JMck1H` -A :t:`record struct value` is a :t:`value` of a :t:`record struct type`. - -.. _fls_94fkxohlnq9i: - -recursive type -^^^^^^^^^^^^^^ - -:dp:`fls_2t8qom6dhcjb` -A :t:`recursive type` is a :t:`type` whose contained :t:`[type]s` refer back to -the containing :t:`type`, either directly or by referring to another :t:`type` -which refers back to the original :t:`recursive type`. - -.. _fls_onv3cs5tckgo: - -reference -^^^^^^^^^ - -:dp:`fls_s82y4hsuytiq` -A :t:`reference` is a :t:`value` of a :t:`reference type`. A :t:`reference` -can be obtained explicitly by using a :t:`borrow expression` or implicitly in -certain scenarios. - -.. _fls_1XGsXRZIFnqL: - -reference identifier pattern -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_jQs6oJ4RFBPN` -A :t:`reference identifier pattern` is an :t:`identifier pattern` with -:t:`keyword` ``ref``. - -.. _fls_kiy6b1wbn0a3: - -reference pattern -^^^^^^^^^^^^^^^^^ - -:dp:`fls_ebshqnhmwgow` -A :t:`reference pattern` is a :t:`pattern` that dereferences a :t:`pointer` -that is being matched. - -.. _fls_uw32xmrfgzcd: - -reference type -^^^^^^^^^^^^^^ - -:dp:`fls_l3knopsdlyf2` -A :t:`reference type` is an :t:`indirection type` with :t:`ownership`. - -.. _fls_h8x0u32wfz8v: - -referent -^^^^^^^^ - -:dp:`fls_78ipj8avpwzl` -A :t:`referent` is the :t:`value` pointed-to by a :t:`reference`. - -.. _fls_bkwy183h9ygt: - -refutability -^^^^^^^^^^^^ - -:dp:`fls_gzjrfx19fg40` -:t:`refutability` is a property of :t:`[pattern]s` that expresses the ability to -match all possible values of a :t:`type`. - -.. _fls_v99joc4m6cup: - -refutable constant -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_mc6hsomq08uu` -A :t:`refutable constant` is a :t:`constant` of a :t:`refutable type`. - -.. _fls_srdcx5oi4dcp: - -refutable pattern -^^^^^^^^^^^^^^^^^ - -:dp:`fls_re7qz78koman` -A :t:`refutable pattern` is a :t:`pattern` that has a possibility of not -matching the :t:`value` it is being matched against. - -.. _fls_dkq1h6p9yaar: - -refutable type -^^^^^^^^^^^^^^ - -:dp:`fls_l2yz6jeehm52` -A :t:`refutable type` is a :t:`type` that has more than one :t:`value`. - -.. _fls_T84qaJMZzMbb: - -register -^^^^^^^^ - -:dp:`fls_fVdSybu8DW8w` -A :t:`register` is a hardware component capable of holding data that can be -read and written. - -.. _fls_ISWWmgKjfYwt: - -register argument -^^^^^^^^^^^^^^^^^ - -:dp:`fls_rNoFdCKbVmRC` -A :t:`register argument` is a :t:`construct` that configures the input -and output of a :t:`register`, and optionally binds the configuration to an -:t:`identifier`. - -.. _fls_2qKUiHcfmZQ6: - -register class -^^^^^^^^^^^^^^ - -:dp:`fls_2H0OYS733VJl` -A :t:`register class` represents a set of :t:`[register]s`. - -.. _fls_8gC17CgCS9n1: - -register class argument -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ksLXAyPLx9IL` -A :t:`register class argument` is a :t:`register argument` that uses a -:t:`register class name`. - -.. _fls_xZTkANlRsKRt: - -register class name -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_QsSFoL0UyRRB` -A :t:`register class name` is a target-specific string that identifies a -:t:`register class`. - -.. _fls_7KIReJZLKdeK: - -register expression -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_2cVy6XfOQ4QG` -A :t:`register expression` is either an :t:`input-output register expression`, a :t:`simple register expression` or a :t:`const register expression`. - -.. _fls_kbBK666iBS2X: - -register name -^^^^^^^^^^^^^ - -:dp:`fls_U5r8Ypnjah5E` -A :t:`register name` is either the :t:`explicit register name` of a -:t:`register`, or the :t:`register class name` of the :t:`register class` a -:t:`register` belongs to. - -.. _fls_foh6xELWBsY9: - -register parameter -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_JicHMIj5dlxJ` -A :t:`register parameter` is a substring delimited by characters 0x7B (left -curly bracket) and 0x7D (right curly bracket) that is substituted with a -:t:`register argument` in an :t:`assembly instruction`. - -.. _fls_NDpKXnlmnN7M: - -register parameter modifier -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_8BdOnxHZS0Qi` -A :t:`register parameter modifier` is a substring that starts with character -0x3A (colon), follows a :t:`register parameter`, and changes the formatting of -the related :t:`register parameter`. - -.. _fls_JnhUWipah0nO: - -remainder assignment -^^^^^^^^^^^^^^^^^^^^ - -.. _fls_mio7pagghcks: - -remainder assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_en7ytqvefw7j` -A :t:`remainder assignment expression` is a -:t:`compound assignment expression` that uses remainder division. - -.. _fls_f15h4919ln3k: - -remainder expression -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_l6muwnclm1do` -A :t:`remainder expression` is an :t:`arithmetic expression` that uses -remainder division. - -.. _fls_8ibsdx4dx6s7: - -renaming -^^^^^^^^ - -:dp:`fls_cp8u9kq44o8a` -A :t:`renaming` provides an alternative :t:`name` for an existing name. - -.. _fls_b35oy3nnzixm: - -repeat operand -^^^^^^^^^^^^^^ - -:dp:`fls_ol2y1og2jwss` -A :t:`repeat operand` is an :t:`operand` that specifies the element being -repeated in an :t:`array repetition constructor`. - -.. _fls_r2yjjhrvr9qi: - -repetition operator -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_67907pk7uogl` -A :t:`repetition operator` is a :t:`construct` that indicates the number -of times a :t:`macro repetition in matching` or a -:t:`macro repetition in transcription` can be repeated. - -.. _fls_o34kkn5pi0sh: - -representation -^^^^^^^^^^^^^^ - -.. _fls_TSbBt6WzropN: - -representation modifier -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_BCvXL7HkXqdZ` -A :t:`representation modifier` is a :t:`construct` that modifies the -:t:`alignment` of a :t:`type`. - -.. _fls_x7yd6o4akrrg: - -reserved keyword -^^^^^^^^^^^^^^^^ - -:dp:`fls_b67hj7fdbq4s` -A :t:`reserved keyword` is a :t:`keyword` that is not yet in use. - -.. _fls_O5iuGATZgyBu: - -resolution -^^^^^^^^^^ - -:dp:`fls_PQjEvLs5cE4y` -:t:`resolution` is the process of finding a unique interpretation for a -:t:`field access expression`, a :t:`method call expression`, a :t:`call -expression` or a :t:`path`. - -.. _fls_uuo1qvrz1i0k: - -rest pattern -^^^^^^^^^^^^ - -:dp:`fls_xngp3h1znw9o` -A :t:`rest pattern` is a :t:`pattern` that matches zero or more elements that -have not already been matched. - -.. _fls_7tl9qo8yj8xh: - -return expression -^^^^^^^^^^^^^^^^^ - -:dp:`fls_vnupfc6s0s7b` -A :t:`return expression` is an :t:`expression` that optionally yields a -:t:`value` and causes control flow to return to the end of the enclosing -:t:`control flow boundary`. - -.. _fls_b8dbm1bs65kw: - -return type -^^^^^^^^^^^ - -:dp:`fls_cwucgbmmhnnm` -A :t:`return type` is the :t:`type` of the result a :t:`function`, :t:`closure type` or :t:`function pointer type` returns. - -.. _fls_76o7m8vny72n: - -right operand -^^^^^^^^^^^^^ - -:dp:`fls_e1j9s4odze9b` -A :t:`right operand` is an :t:`operand` that appears on the right-hand side of -a :t:`binary operator`. - -.. _fls_9u67noriaxfe: - -rule matching -^^^^^^^^^^^^^ - -:dp:`fls_dux9js5oixjd` -:t:`Rule matching` is the process of consuming a :s:`TokenTree` in an attempt -to fully satisfy the :t:`macro matcher` of a :t:`macro rule` that belongs to a -resolved :t:`declarative macro`. - -.. _fls_fki32ns69q4j: - -rustc -^^^^^ - -:dp:`fls_zdgbeixirjfm` -:t:`rustc` is a compiler that implements the FLS. - -.. _fls_Q4MRIo7cWv5K: - -safety invariant -^^^^^^^^^^^^^^^^ - -:dp:`fls_wRZfAmTmMGTX` -A :t:`safety invariant` is an invariant that when violated may result in -:t:`undefined behavior`. - -.. _fls_XeMNghZZOBqL: - -scalar type -^^^^^^^^^^^ - -:dp:`fls_GgBqFW2NywoA` -A :t:`scalar type` is either a :c:`bool` :t:`type`, a :c:`char` :t:`type`, or -a :t:`numeric type`. - -.. _fls_fj8mdxi967px: - -scope -^^^^^ - -:dp:`fls_fachaj550cq1` -A :t:`scope` is a region of program text where an :t:`entity` can be referred -to. An :t:`entity` is :t:`in scope` when it can be referred to. - -.. _fls_xZUiNkBN5e00: - -scope hierarchy -^^^^^^^^^^^^^^^ - -:dp:`fls_Spcc3L9X939d` -The :t:`scope hierarchy` reflects the nesting of :t:`[scope]s` as introduced -by :t:`[scoping construct]s`. An inner :t:`scope` introduced by a nested -:t:`scoping construct` is the child of an outer :t:`scope` introduced by an -enclosing :t:`scoping construct`. - -.. _fls_rfk06mm3pdxg: - -selected field -^^^^^^^^^^^^^^ - -:dp:`fls_8otlvwlqrd4e` -A :t:`selected field` is a :t:`field` that is selected by a -:t:`field access expression`. - -.. _fls_9o2hcy6t7dac: - -Self -^^^^ - -:dp:`fls_q6whqbfusswf` -:dc:`Self` is either an implicit :t:`type parameter` in :t:`[trait]s` or an -implicit :t:`type alias` in :t:`[implementation]s`. :c:`Self` refers to the -:t:`type` that implements a :t:`trait`. - -.. _fls_6wjlbzmlx9n4: - -self parameter -^^^^^^^^^^^^^^ - -:dp:`fls_ksne48eip15` -A :t:`self parameter` is a :t:`function parameter` expressed by :t:`keyword` -``self``. - -.. _fls_jq213cesxhyp: - -self public modifier -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ln3bzqgctfym` -A :t:`self public modifier` is a :t:`visibility modifier` that grants a -:t:`name` :t:`private visibility`. A :t:`self public modifier` is equivalent -to a :t:`simple path public modifier` where the :t:`simple path` denotes -:t:`keyword` ``self``. - -.. _fls_exMZlNMxQvP7: - -Self scope -^^^^^^^^^^ - -:dp:`fls_pSvqWGRmFmH0` -A :t:`Self scope` is a :t:`scope` for :c:`Self`. - -.. _fls_8spw41g0dbqw: - -send type -^^^^^^^^^ - -:dp:`fls_qfkng98dw6yy` -A :t:`send type` is a :t:`type` that implements the :std:`core::marker::Send` -:t:`trait`. - -.. _fls_at8q1svh3isg: - -separator -^^^^^^^^^ - -:dp:`fls_128xny4qfcj5` -A :t:`separator` is a character or a string that separates adjacent :t:`[lexical -element]s`. A :t:`whitespace string` is a :t:`separator`. - -.. _fls_rtgis2k7by2r: - -sequence type -^^^^^^^^^^^^^ - -:dp:`fls_lk1oslxh8h9p` -A :t:`sequence type` is a :t:`type` that represents a sequence of elements. - -.. _fls_HUklMSWzx8Mg: - -shadowing -^^^^^^^^^ - -:dp:`fls_li3NXOPEH9cL` -:t:`shadowing` is a property of :t:`[name]s`. A :t:`name` is shadowed when -another :t:`name` with the same characters is introduced in the same -:t:`scope` within the same :t:`namespace`, effectively hiding it. - -.. _fls_c9xwhhg639u5: - -shared borrow -^^^^^^^^^^^^^ - -:dp:`fls_gmbskxin90zi` -A :t:`shared borrow` is a :t:`borrow` produced by evaluating an -:t:`immutable borrow expression`. - -.. _fls_18xazs7sp4: - -shared reference -^^^^^^^^^^^^^^^^ - -:dp:`fls_cspa4c5mscnw` -A :t:`shared reference` is a :t:`value` of a :t:`shared reference type`. - -.. _fls_antrblstppyf: - -shared reference type -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_8z9wb3eu5yp1` -A :t:`shared reference type` is a :t:`reference type` not subject to -:t:`keyword` ``mut``. - -.. _fls_o8EVuKgr0Y98: - -shift left assignment -^^^^^^^^^^^^^^^^^^^^^ - -.. _fls_29n0oe4d7lwa: - -shift left assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_j15ke2p8cjfp` -A :t:`shift left assignment expression` is a -:t:`compound assignment expression` that uses bit shift left arithmetic. - -.. _fls_sru4wi5jomoe: - -shift left expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_phiv6k4emauc` -A :t:`shift left expression` is a :t:`bit expression` that uses bit shift left -arithmetic. - -.. _fls_V5LMAe8ijiMQ: - -shift right assignment -^^^^^^^^^^^^^^^^^^^^^^ - -.. _fls_cqfzbsasnd1t: - -shift right assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_1jpnp7hatlmu` -A :t:`shift right assignment expression` is a -:t:`compound assignment expression` that uses bit shift right arithmetic. - -.. _fls_dj6epbraptqn: - -shift right expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_j6itily0u0k9` -A :t:`shift right expression` is a :t:`bit expression` that uses bit shift -right arithmetic. - -.. _fls_5sxhx0w3d63z: - -shorthand deconstructor -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_22yxrde244w8` -A :t:`shorthand deconstructor` is a :t:`construct` that matches the :t:`name` -of a :t:`field` and binds the :t:`value` of the matched :t:`field` to a -:t:`binding`. - -.. _fls_oa4p10yles30: - -shorthand initializer -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_bgxxg48snck1` -A :t:`shorthand initializer` is a :t:`construct` that specifies the :t:`name` -of a :t:`field` in a :t:`struct expression`. - -.. _fls_nmw95nc951iu: - -signed integer type -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_vcronf7l2bhy` -A :t:`signed integer type` is an :t:`integer type` whose :t:`[value]s` denote -signed whole numbers. - -.. _fls_4GvXiDfcPlRD: - -simple byte string literal -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_XpbU4Up0Aza8` -A :t:`simple byte string literal` is a :t:`byte string literal` that consists -of multiple :s:`[AsciiCharacter]s`. - -.. _fls_fx2hhB0HHSUG: - -simple c string literal -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_qoHXrmds9SgI` -A :t:`simple c string literal` is a :t:`c string literal` where the characters are -:t:`Unicode` characters. - -.. _fls_6mcm7xdcyn40: - -simple import -^^^^^^^^^^^^^ - -:dp:`fls_jrlzpoauui9g` -A :t:`simple import` is a :t:`use import` that brings all :t:`entities ` -it refers to into scope, optionally with a different -:t:`name` than they are declared with by using a :t:`renaming`. - -.. _fls_o5kv9lrtz4fq: - -simple path -^^^^^^^^^^^ - -:dp:`fls_db91duoug4eb` -A :t:`simple path` is a :t:`path` whose :t:`[path segment]s` consist of either -:t:`[identifier]s` or certain :t:`[keyword]s` as defined in the syntax rules -above. - -.. _fls_23G6TAntJXqa: - -simple path prefix -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ijc2yHQuIltY` -A :t:`simple path prefix` is the leading :t:`simple path` of a -:t:`glob import` or a :t:`nesting import`. - -.. _fls_sgy9q06yt6cl: - -simple path public modifier -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_mby9r0jm6uyv` -A :t:`simple path public modifier` is a :t:`visibility modifier` that grants a -:t:`name` :t:`public visibility` within the provided :t:`simple path` only. - -.. _fls_gT5rZ4qC3pHo: - -simple path resolution -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_CQlepoN6PmKq` -:t:`simple path resolution` is a kind of :t:`path resolution` that applies to -a :t:`simple path`. - -.. _fls_k5uqt5oj7wvl: - -simple public modifier -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ce1ounn1g68` -A :t:`simple public modifier` is a :t:`visibility modifier` that grants a -:t:`name` :t:`public visibility`. - -.. _fls_JDB3eBO0DY4o: - -simple register expression -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_4Yp4R7gXucL2` -A :t:`simple register expression` is either an :t:`expression` or an -:t:`underscore expression`. - -.. _fls_dpod2gc7a0u: - -simple string literal -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_p6qyyptz8w8w` -A :t:`simple string literal` is a :t:`string literal` where the characters are -:t:`Unicode` characters. - -.. _fls_JS91BDzd03Qj: - -single segment path -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Hun5BCZsqd6k` -A :t:`single segment path` is a :t:`path` consisting of exactly one -:t:`path segment`. - -.. _fls_oy5xy5pm1enx: - -size -^^^^ - -:dp:`fls_3obnilqhkjux` -The :t:`size` of a :t:`type` is the offset in bytes between successive elements -in :t:`array type` ``[T, N]`` where ``T`` is the :t:`type` of the :t:`value`, -including any padding for :t:`alignment`. :t:`Size` is a multiple of the -:t:`alignment`. - -.. _fls_2y5oyon3y1za: - -size operand -^^^^^^^^^^^^ - -:dp:`fls_srajsqi5i3py` -A :t:`size operand` is a :t:`constant expression` or an :t:`inferred constant` -that specifies the length of an :t:`array type`. - -.. _fls_oiaoWEQQDE7I: - -sized type -^^^^^^^^^^ - -:dp:`fls_pwcgsRCNSwKn` -A :t:`sized type` is a :t:`type` that implements the -:std:`core::marker::Sized` :t:`trait`. - -.. _fls_srkftses9sxn: - -slice -^^^^^ - -:dp:`fls_p1sv01ml2ark` -A :t:`slice` is a :t:`value` of a :t:`slice type`. - -.. _fls_1s3a31o9zx1a: - -slice pattern -^^^^^^^^^^^^^ - -:dp:`fls_7613qu4igwiw` -A :t:`slice pattern` is a :t:`pattern` that matches :t:`[array]s` of fixed -size and :t:`[slice]s` of dynamic size. - -.. _fls_x3kr88m5gvwv: - -slice type -^^^^^^^^^^ - -:dp:`fls_bvpszep1w90g` -A :t:`slice type` is a :t:`sequence type` that provides a view into a sequence -of elements. - -.. _fls_wlwwxzpnhk6i: - -source file -^^^^^^^^^^^ - -:dp:`fls_nh737q4mn27u` -A :t:`source file` contains the program text consisting of :t:`[inner -attribute]s`, :t:`[inner doc comment]s`, and :t:`[item]s`. The location of a -:t:`source file` is tool defined. - -.. _fls_e7cvo0usw86i: - -statement -^^^^^^^^^ - -:dp:`fls_faijgwg4lhp9` -A :t:`statement` is a :t:`construct` described by :s:`Statement`. - -.. _fls_tpazbmuq9hag: - -static -^^^^^^ - -:dp:`fls_srx4v1e20yxa` -A :t:`static` is a :t:`value` that is associated with a specific memory -location. - -.. _fls_x331kxllyzim: - -static initializer -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_6jjbfni87tax` -A :t:`static initializer` is a :t:`construct` that provides the :t:`value` of -its related :t:`static`. - -.. _fls_jCqiKgW9g8n5: - -static lifetime elision -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_NbVewjYRnQPF` -:t:`static lifetime elision` is a form of :t:`lifetime elision` that applies to -the :t:`type ascription` of :t:`[constant]s` and :t:`[static]s`. - -.. _fls_1ricdj86o457: - -str -^^^ - -:dp:`fls_6977zxb0resa` -:dc:`str` is a :t:`sequence type` that represents a :t:`slice` of 8-bit -unsigned bytes. - -.. _fls_bzhaq3q378ay: - -strict keyword -^^^^^^^^^^^^^^ - -:dp:`fls_hza9spr6behn` -A :t:`strict keyword` is a :t:`keyword` that always holds its special meaning. - -.. _fls_cck2tmyzmpja: - -string literal -^^^^^^^^^^^^^^ - -:dp:`fls_dphk5br0ag35` -A :t:`string literal` is a :t:`literal` that consists of multiple characters. - -.. _fls_yphnf56fa58r: - -struct -^^^^^^ - -:dp:`fls_rufylj7qxs1w` -A :t:`struct` is an :t:`abstract data type` declared with a -:s:`StructDeclaration`. - -.. _fls_dxfyejkbiz3p: - -struct expression -^^^^^^^^^^^^^^^^^ - -:dp:`fls_m8n9e0sxyb95` -A :t:`struct expression` is an :t:`expression` that constructs an -:t:`enum value`, a :t:`struct value`, or a :t:`union value`. - -.. _fls_OT6dJ7CWkSTG: - -struct field -^^^^^^^^^^^^ - -:dp:`fls_8Z9YWMnrHXJS` -A :t:`struct field` is a :t:`field` declared in a :t:`struct type`. - -.. _fls_ook43xes5t34: - -struct pattern -^^^^^^^^^^^^^^ - -:dp:`fls_xbtoiwegp8gu` -A :t:`struct pattern` is a :t:`pattern` that matches an :t:`enum value`, a -:t:`struct value`, or a :t:`union value`. - -.. _fls_pzj88ust6qrq: - -struct type -^^^^^^^^^^^ - -:dp:`fls_7v4dhh3nl8h9` -A :t:`struct type` is an :t:`abstract data type` that is a product of other -:t:`[type]s`. - -.. _fls_GOnQHAsYw1oi: - -struct value -^^^^^^^^^^^^ - -:dp:`fls_YmZfW9kWlbIX` -A :t:`struct value` is a :t:`value` of a :t:`struct type`. - -.. _fls_P7920ALJisrH: - -structurally equal -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_glRZUKhmaWmP` -A :t:`type` is :t:`structurally equal` when its :t:`[value]s` can be compared -for equality by structure. - -.. _fls_feZ3iDff05Cb: - -subexpression -^^^^^^^^^^^^^ - -:dp:`fls_bNSHwD4Kpfm0` -A :t:`subexpression` is an :t:`expression` nested within another -:t:`expression`. - -.. _fls_wee9stfk0abp: - -subject expression -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_xisqke87ert` -A :t:`subject expression` is an :t:`expression` that controls -:t:`[for loop]s`, :t:`[if expression]s`, and :t:`[match expression]s`. - -.. _fls_dc5ibvnnhs7e: - -subject let expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_b3ckv6zgnaeb` -A :t:`subject let expression` is an :t:`expression` that controls -:t:`[if let expression]s` and :t:`[while let loop]s`. - -.. _fls_k7ro8n23wtdc: - -subpattern -^^^^^^^^^^ - -:dp:`fls_942ulj9qsdes` -A :t:`subpattern` is a :t:`pattern` nested within another pattern. - -.. _fls_0hf1gNf90qKr: - -subtraction assignment -^^^^^^^^^^^^^^^^^^^^^^ - -.. _fls_a4iu72zn4h0: - -subtraction assignment expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_4pb85nl4r7vs` -A :t:`subtraction assignment expression` is a -:t:`compound assignment expression` that uses subtraction. - -.. _fls_25ru96mfdcsn: - -subtraction expression -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_caamjgpw59id` -A :t:`subtraction expression` is an :t:`arithmetic expression` that uses -subtraction. - -.. _fls_qw3fn1116se9: - -subtrait -^^^^^^^^ - -:dp:`fls_wnj95vozis6n` -A :t:`subtrait` is a :t:`trait` with a :t:`supertrait`. - -.. _fls_pu4zqJ1tGrfH: - -subtype -^^^^^^^ - -:dp:`fls_pmkjOWsieQog` -A :t:`subtype` is a :t:`type` that may be used in place of another :t:`type` -according to :t:`subtyping`. - -.. _fls_f5dxz8pvs1kz: - -subtyping -^^^^^^^^^ - -:dp:`fls_bo5xzjsdd3lj` -:t:`subtyping` is the relation that determines when one :t:`type` may be used -in place of another. - -.. _fls_qar9v52smi9j: - -suffixed float -^^^^^^^^^^^^^^ - -:dp:`fls_7reb4jp0x1wf` -A :t:`suffixed float` is a :t:`float literal` with a :t:`float suffix`. - -.. _fls_bmbu11ycjpor: - -suffixed integer -^^^^^^^^^^^^^^^^ - -:dp:`fls_ltzetxu3sq7k` -A :t:`suffixed integer` is an :t:`integer literal` with an :t:`integer suffix`. - -.. _fls_12bluakt0jnj: - -super public modifier -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_vry5mhs3a5wv` -A :t:`super public modifier` is a :t:`visibility modifier` that grants a -:t:`name` :t:`public visibility` within the parent :t:`module` only. A -:t:`super public modifier` is equivalent to a :t:`simple path public modifier` -where the :t:`simple path` denotes :t:`keyword` ``super``. - -.. _fls_1axcyv628aov: - -supertrait -^^^^^^^^^^ - -:dp:`fls_s4chur1wutwh` -A :t:`supertrait` is a transitive :t:`trait` that a :t:`type` must -additionally implement. - -.. _fls_r4eoz3ohvpdi: - -sync type -^^^^^^^^^ - -:dp:`fls_rpc0c8qx3nbo` -A :t:`sync type` is a :t:`type` that implements the :std:`core::marker::Sync` -:t:`trait`. - -.. _fls_44djv0wocacs: - -syntactic category -^^^^^^^^^^^^^^^^^^ - -* :dp:`fls_ceb5a8t6cakr` - A :t:`syntactic category` is a grammar symbol denoted in PascalCase, for example: - -.. _fls_psd2ll10ixs: - -tail expression -^^^^^^^^^^^^^^^ - -:dp:`fls_6k873f1knasi` -A :t:`tail expression` is the last :t:`expression` within a -:t:`block expression`. - -.. _fls_4omay4i65dwz: - -temporary -^^^^^^^^^ - -:dp:`fls_fathkxu9kxvw` -A :t:`temporary` is an anonymous :t:`variable` produced by some intermediate -computation. - -.. _fls_ihv02usuziw8: - -terminated -^^^^^^^^^^ - -:dp:`fls_med1l8vheb83` -A :t:`loop expression` is :t:`terminated` when its :t:`block expression` is no -longer evaluated. - -.. _fls_ef03n3ehz372: - -terminated macro invocation -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_542es82wfzco` -A :t:`terminated macro invocation` is a :t:`macro invocation` that may be used -as a :t:`statement`. - -.. _fls_AVZGZPd6WXXO: - -textual macro scope -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_xyeYk6vrmlWp` -A :t:`textual macro scope` is a :t:`scope` for :t:`[declarative macro]s`. - -.. _fls_mdcbhy96hrau: - -textual type -^^^^^^^^^^^^ - -:dp:`fls_lv1pdtzf6f58` -A :t:`textual type` is a :t:`type` class that includes type :c:`char` and type -:c:`str`. - -.. _fls_lfsgf6u142yb: - -thin pointer -^^^^^^^^^^^^ - -:dp:`fls_i2j0u4v5o1bs` -A :t:`thin pointer` is a :t:`value` of a :t:`thin pointer type`. - -.. _fls_7ksqpi9j8ba9: - -thin pointer type -^^^^^^^^^^^^^^^^^ - -:dp:`fls_33rka3kyxgrk` -A :t:`thin pointer type` is an :t:`indirection type` that refers to a -:t:`fixed sized type`. - -.. _fls_tzoko74t5t6n: - -token matching -^^^^^^^^^^^^^^ - -:dp:`fls_a19q6lhvakcm` -:t:`Token matching` is the process of consuming a :s:`TokenTree` in an attempt -to fully satisfy a :t:`macro match` of a selected :t:`macro matcher` that -belongs to a resolved :t:`declarative macro`. - -.. _fls_ma3vs7yoj285: - -tokens -^^^^^^ - -:dp:`fls_v23kqvyvscd7` -:t:`[Token]s` are a subset of :t:`[lexical element]s` consumed by -:t:`[macro]s`. - -.. _fls_cad25qns4164: - -trait -^^^^^ - -:dp:`fls_mf4x9g70o5z6` -A :t:`trait` is an :t:`item` that describes an interface a :t:`type` can -implement. - -.. _fls_5hNydsQDrICq: - -trait body -^^^^^^^^^^ - -:dp:`fls_u221Me58aZmY` -A :t:`trait body` is a :t:`construct` that encapsulates the -:t:`[associated item]s`, :t:`[inner attribute]s`, and -:t:`[inner doc comment]s` of a :t:`trait`. - -.. _fls_868cgnb1soeh: - -trait bound -^^^^^^^^^^^ - -:dp:`fls_95zx8unuxxpq` -A :t:`trait bound` is a :t:`bound` that imposes a constraint on the -:t:`[trait]s` of :t:`[generic parameter]s`. - -.. _fls_kflieu6uottg: - -trait implementation -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_5v7kbg144pr8` -A :t:`trait implementation` is an :t:`implementation` that adds functionality -specified by a :t:`trait`. - -.. _fls_TCIzYoMeGtub: - -trait object lifetime elision -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rALP9b6qjlp9` -:t:`Trait object lifetime elision` is a form of :t:`lifetime elision` that -applies to :t:`[trait object type]s`. - -.. _fls_7qtbro7ipndr: - -trait object type -^^^^^^^^^^^^^^^^^ - -:dp:`fls_lo2fzzdwxy1l` -A :t:`trait object type` is a :t:`type` that implements a :t:`trait`, where -the :t:`type` is not known at compile time. - -.. _fls_nfdfeFVZRC5F: - -trait type -^^^^^^^^^^ - -:dp:`fls_JQsQnQ0dTHlS` -A :t:`trait type` is either an :t:`impl trait type` or a -:t:`trait object type`. - -.. _fls_sl62718i1kkn: - -transparent representation -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_hb3e72rhzpnv` -:t:`Transparent representation` applies only to an :t:`enum type` with a -single :t:`enum variant` or a :t:`struct type` where the :t:`struct type` or -:t:`enum variant` has a single :t:`field` of non-zero :t:`size` and any number -of :t:`[field]s` of :t:`size` zero and :t:`alignment` one. - -.. _fls_soqkluvirlsd: - -trivial predicate -^^^^^^^^^^^^^^^^^ - -:dp:`fls_db5njwrjolhs` -A :t:`trivial predicate` is a :t:`where clause predicate` that does not use -the :t:`[generic parameter]s` or :t:`[higher-ranked trait bound]s` of the related -:t:`construct`. - -.. _fls_si70t19ox07e: - -tuple -^^^^^ - -:dp:`fls_yhcfqz6p0059` -A :t:`tuple` is a :t:`value` of a :t:`tuple type`. - -.. _fls_1XEHpJOK9DKB: - -tuple enum variant -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_eduQhUYBEkVx` -A :t:`tuple enum variant` is an :t:`enum variant` with a -:s:`TupleStructFieldList`. - -.. _fls_sP7uHoLxGfRO: - -tuple enum variant value -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ORURxipGqNrZ` -A :t:`tuple enum variant value` is a :t:`value` of a :t:`tuple enum variant`. - -.. _fls_udl6ujjg1jae: - -tuple expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_x7m4u1dx4eli` -A :t:`tuple expression` is an :t:`expression` that constructs a :t:`tuple`. - -.. _fls_bf1v4e1s5xj6: - -tuple field -^^^^^^^^^^^ - -:dp:`fls_8rq1gbzij5tk` -A :t:`tuple field` is a :t:`field` of a :t:`tuple type`. - -.. _fls_zfvvbf7ncrhj: - -tuple initializer -^^^^^^^^^^^^^^^^^ - -:dp:`fls_94hg6re11zl5` -A :t:`tuple initializer` is an :t:`operand` that provides the :t:`value` of a -:t:`tuple field` in a :t:`tuple expression`. - -.. _fls_7f2sx37kg4ca: - -tuple pattern -^^^^^^^^^^^^^ - -:dp:`fls_al2q3vh1rg6e` -A :t:`tuple pattern` is a :t:`pattern` that matches a :t:`tuple` which -satisfies all criteria defined by its :t:`[subpattern]s`. - -.. _fls_245idp9hpqf6: - -tuple struct -^^^^^^^^^^^^ - -:dp:`fls_pdcpmapiq491` -A :t:`tuple struct` is a :t:`struct` with a :s:`TupleStructFieldList`. - -.. _fls_UYCpeq4Z87My: - -tuple struct call expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_DQaCUkskfXzk` -A :t:`tuple struct call expression` is a :t:`call expression` where the -:t:`call operand` resolves to a :t:`tuple struct` or a :t:`tuple enum variant`. - -.. _fls_xx4slbg8s63e: - -tuple struct field -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ndeb1a2hm9d8` -A :t:`tuple struct field` is a :t:`field` of a :t:`tuple struct type`. - -.. _fls_u2j18nl1t12f: - -tuple struct pattern -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_gu1mfurivnfz` -A :t:`tuple struct pattern` is a :t:`pattern` that matches a -:t:`tuple enum variant value` or a :t:`tuple struct value`. - -.. _fls_qx8j2lvqigqk: - -tuple struct type -^^^^^^^^^^^^^^^^^ - -:dp:`fls_hhikx5ajx3bl` -A :t:`tuple struct type` is the :t:`type` of a :t:`tuple struct`. - -.. _fls_x4ALCJKhVDZF: - -tuple struct value -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_xz1p4pss2Ocn` -A :t:`tuple struct value` is a :t:`value` of a :t:`tuple struct type`. - -.. _fls_k4yz7i2pf9wp: - -tuple type -^^^^^^^^^^ - -:dp:`fls_q0ulqfvnxwni` -A :t:`tuple type` is a :t:`sequence type` that represents a heterogeneous list -of other :t:`[type]s`. - -.. _fls_wzupssn435n: - -type -^^^^ - -:dp:`fls_nhlh7vvgsbwo` -A :t:`type` defines a set of :t:`[value]s` and a set of operations that act on -those :t:`[value]s`. - -.. _fls_vaklivoy2ix2: - -type alias -^^^^^^^^^^ - -:dp:`fls_8pcsxodv1xp5` -A :t:`type alias` is an :t:`item` that defines a :t:`name` for a :t:`type`. - -.. _fls_89ollsdjx3uy: - -type argument -^^^^^^^^^^^^^ - -:dp:`fls_152lk7hrtd11` -A :t:`type argument` is a :t:`generic argument` that supplies the :t:`type` of -a :t:`type parameter`. - -.. _fls_1n50v16et5e6: - -type ascription -^^^^^^^^^^^^^^^ - -:dp:`fls_pm5jytclqn7y` -A :t:`type ascription` specifies the :t:`type` of a :t:`construct`. - -.. _fls_zDdXv5I4bW9H: - -type bound predicate -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_j6WKoybB4cep` -A :t:`type bound predicate` is a :t:`construct` that specifies -:t:`[lifetime bound]s` and :t:`[trait bound]s` on a :t:`type`. - -.. _fls_k24jb967nu1q: - -type cast expression -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_j6zo3rir1x76` -A :t:`type cast expression` is an :t:`expression` that changes the :t:`type` -of an :t:`operand`. - -.. _fls_6j08yuafv0vl: - -type coercion -^^^^^^^^^^^^^ - -:dp:`fls_mt36qehtqova` -:t:`Type coercion` is an implicit operation that changes the :t:`type` of a -:t:`value`. Any implicit conversion allowed by :t:`type coercion` can be made -explicit using a :t:`type cast expression`. - -.. _fls_7fpvb2gvqng8: - -type inference -^^^^^^^^^^^^^^ - -:dp:`fls_ky8epvf9834e` -:t:`Type inference` is the process of automatically determining the :t:`type` of -:t:`[expression]s` and :t:`[pattern]s` within a :t:`type inference root`. - -.. _fls_0jri0m3F1fAT: - -type inference root -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_hLI7lCixs48z` -A :t:`type inference root` is an :t:`expression` whose inner :t:`[expression]s` -and :t:`[pattern]s` are subject to :t:`type inference` independently of those -found in other :t:`[type inference root]s`. - -.. _fls_uv2damik654e: - -type parameter -^^^^^^^^^^^^^^ - -:dp:`fls_5t6510wkb67x` -A :t:`type parameter` is a :t:`generic parameter` for a :t:`type`. - -.. _fls_Fq2zTHYRpK2V: - -type parameter initializer -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Xpz47JLNsOXI` -A :t:`type parameter initializer` is a :t:`construct` that provides the -default :t:`value` of its related :t:`type parameter`. - -.. _fls_HghjWqvyj5bN: - -type parameter type -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_EuHHxwHd0RHV` -A :t:`type parameter type` is a placeholder :t:`type` of a :t:`type parameter` -to be substituted by :t:`generic substitution`. - -.. _fls_QDCiXh7uSj9r: - -type path -^^^^^^^^^ - -:dp:`fls_UBR5czHrMTrx` -A :t:`type path` is a :t:`path` that acts as a :t:`type specification`. - -.. _fls_wa3biT0rQ102: - -type path resolution -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_Xv6JbfdIyvA3` -:t:`Type path resolution` is a form of :t:`path resolution` that applies to -a :t:`type path`. - -.. _fls_u1zkh2m8p92: - -type representation -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_rv80nyxwj2z8` -:t:`Type representation` specifies the :t:`layout` of :t:`[field]s` of -:t:`[abstract data type]s`. :t:`Type representation` changes the bit padding -between :t:`[field]s` of :t:`[abstract data type]s` as well as their order, but -does not change the :t:`layout` of the :t:`[field]s` themselves. - -.. _fls_ukua6gbye6ot: - -type specification -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_tdjhjg9zhnv5` -A :t:`type specification` describes the structure of a :t:`type`. - -.. _fls_qoehu9p00q56: - -type unification -^^^^^^^^^^^^^^^^ - -:dp:`fls_3vyodut341b5` -:t:`Type unification` is the process by which :t:`type inference` propagates -known :t:`[type]s` across the :t:`type inference root` and assigns concrete -:t:`[type]s` to :t:`[type variable]s`, as well as a general mechanism to check -for compatibility between two :t:`[type]s` during :t:`method resolution`. - -.. _fls_6zhffgxtytku: - -type variable -^^^^^^^^^^^^^ - -:dp:`fls_j9eusnwze4rz` -A :t:`type variable` is a placeholder used during :t:`type inference` to stand -in for an undetermined :t:`type` of an :t:`expression` or a :t:`pattern`. - -.. _fls_44uvj9l7q98z: - -u8 -^^ - -:dp:`fls_umf9zfeghy6` -:dc:`u8` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to -2\ :sup:`8` - 1, all inclusive. - -.. _fls_eh24kdjdze5j: - -u16 -^^^ - -:dp:`fls_8vi7bm2895y0` -:dc:`u16` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to -2\ :sup:`16` - 1, all inclusive. - -.. _fls_jybcgdujzpqy: - -u32 -^^^ - -:dp:`fls_pw90erui8vkk` -:dc:`u32` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to -2\ :sup:`32` - 1, all inclusive. - -.. _fls_1z1e3chuejzz: - -u64 -^^^ - -:dp:`fls_pbcmhznqft9m` -:dc:`u64` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to -2\ :sup:`64` - 1, all inclusive. - -.. _fls_5hn9e3ce1smp: - -u128 -^^^^ - -:dp:`fls_8yv891ur2av5` -:dc:`u128` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to -2\ :sup:`128` - 1, all inclusive. - -.. _fls_p032easjag3d: - -unary operator -^^^^^^^^^^^^^^ - -:dp:`fls_p6mk2zrwgwem` -A :t:`unary operator` is an operator that operates on one :t:`operand`. - -.. _fls_WuLL4SvSKavZ: - -undefined behavior -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_WpwmltUMQGZa` -:t:`Undefined behavior` is a situation that results in an unbounded error. - -.. _fls_X6XjWwYeTnVR: - -under resolution -^^^^^^^^^^^^^^^^ - -:dp:`fls_BppwXSVUWtEu` -A :t:`construct` that is being resolved is said to be :t:`under resolution`. - -.. _fls_57kis2vnt3cv: - -underscore expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ukl1sefb99gj` -An :t:`underscore expression` is an :t:`expression` that acts as a placeholder -in a :t:`destructuring assignment`. - -.. _fls_fhwqe6afup2o: - -underscore pattern -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_f6yroesif1q4` -An :t:`underscore pattern` is a :t:`pattern` that matches any single -:t:`value`. - -.. _fls_HpUSWMvNS5f4: - -unhygienic -^^^^^^^^^^ - -:dp:`fls_0t4lFZLkNieR` -An :t:`identifier` is :t:`unhygienic` when it has :t:`call site hygiene`. - -.. _fls_kafgmevvzl5t: - -Unicode -^^^^^^^ - -:dp:`fls_y7gwku7pe1f4` -:t:`Unicode` is the universal character encoding standard for written -characters and text described in the Unicode Standard by the Unicode -Consortium. - -.. _fls_y7m6AentM6Ik: - -unifiable -^^^^^^^^^ - -.. _fls_u03p4rvz1jhs: - -unifiable types -^^^^^^^^^^^^^^^ - -:dp:`fls_jsbggfitv9xk` -Two types that :t:`unify` are said to be :t:`[unifiable type]s`. - -.. _fls_9RfuDiI6qrzZ: - -unified type -^^^^^^^^^^^^ - -:dp:`fls_tqRwIe6z3a4j` -A :t:`unified type` is a :t:`type` produced by :t:`type unification`. - -.. _fls_da6ssnmmsevo: - -unify -^^^^^ - -:dp:`fls_mango4gffb9e` -A :t:`type` is said to :t:`unify` with another :t:`type` when the domains, -ranges, and structures of both :t:`[type]s` are compatible according to the -rules detailed below. - -.. _fls_8qljy9e1jjcb: - -union -^^^^^ - -:dp:`fls_x3oibk39dvem` -A :t:`union` is an :t:`item` that declares a :t:`union type`. - -.. _fls_71xvazpwi8p0: - -union field -^^^^^^^^^^^ - -:dp:`fls_6t2fbnlndz8y` -A :t:`union field` is a :t:`field` of a :t:`union type`. - -.. _fls_nrgyga1rztb3: - -union type -^^^^^^^^^^ - -:dp:`fls_af2sscrep7mc` -A :t:`union type` is an :t:`abstract data type` that is a sum of other -:t:`[type]s`. - -.. _fls_2QRQMeA3OSVl: - -union value -^^^^^^^^^^^ - -:dp:`fls_9BPrxky3a4nE` -A :t:`union value` is a :t:`value` of a :t:`union type`. - -.. _fls_Is9hWLC6Q0g5: - -unique immutable reference -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_eXrivAmNxzmv` -A :t:`unique immutable reference` is an :t:`immutable reference` produced by -:t:`capturing` what is asserted to be the only live :t:`reference` to a -:t:`value` while the :t:`reference` exists. - -.. _fls_Rwtgq904NoaL: - -unit enum variant -^^^^^^^^^^^^^^^^^ - -:dp:`fls_y6fI5L3Tghie` -A :t:`unit enum variant` is an :t:`enum variant` without a :t:`field list`. - -.. _fls_f3hmx9qya258: - -unit struct -^^^^^^^^^^^ - -:dp:`fls_9t7fu8fcak6k` -A :t:`unit struct` is a :t:`struct` without a :t:`field list`. - -.. _fls_jdvEnl8F7I8R: - -unit struct constant -^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_lLGn4JqddeAg` -A :t:`unit struct constant` is a :t:`constant` implicitly created by a -:t:`unit struct`. - -.. _fls_6j2wnOmBILJa: - -unit struct type -^^^^^^^^^^^^^^^^ - -:dp:`fls_oIzmvACNeQpE` -A :t:`unit struct type` is the :t:`type` of a :t:`unit struct`. - -.. _fls_CXp8fgPrBVUe: - -unit struct value -^^^^^^^^^^^^^^^^^ - -:dp:`fls_Kr9nGIjx3N4R` -A :t:`unit struct value` is a :t:`value` of a :t:`unit struct type`. - -.. _fls_wmn9mcqae88q: - -unit tuple -^^^^^^^^^^ - -:dp:`fls_vo1jw6rmu4yy` -A :t:`unit tuple` is a :t:`value` of the :t:`unit type`. - -.. _fls_t32yfzmpid5a: - -unit type -^^^^^^^^^ - -:dp:`fls_jtdtv3q2ls05` -The :t:`unit type` is a :t:`tuple type` of zero :t:`arity`. - -.. _fls_vxt0ifseehv9: - -unit value -^^^^^^^^^^ - -:dp:`fls_ycdv4nvsdyx` -The :t:`unit value` is the :t:`value` of a :t:`unit type`. - -.. _fls_u78ng1tleh0w: - -unnamed constant -^^^^^^^^^^^^^^^^ - -:dp:`fls_ufj01cxxsv1w` -An :t:`unnamed constant` is a :t:`constant` declared with character 0x5F (low -line). - -.. _fls_r8567aozbyxl: - -unnamed lifetime -^^^^^^^^^^^^^^^^ - -:dp:`fls_4iy6zpq66mit` -An :t:`unnamed lifetime` is the ``'_`` :t:`lifetime`. - -.. _fls_cDVmvrVhUBmr: - -unqualified path expression -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_9xKgP8uVsOaR` -An :t:`unqualified path expression` is a :t:`path expression` without a :t:`qualified type`. - -.. _fls_6349nvapfj9d: - -unsafe block -^^^^^^^^^^^^ - -.. _fls_u8sdp2fxz9pn: - -unsafe block expression -^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_et2h89jyivhs` -An :t:`unsafe block expression` is a :t:`block expression` that is specified -with :t:`keyword` ``unsafe``. - -.. _fls_5m85wlr2qw78: - -unsafe context -^^^^^^^^^^^^^^ - -:dp:`fls_qn1s845ejbu0` -An :t:`unsafe context` is either an :t:`unsafe block` or an -:t:`unsafe function`. - -.. _fls_pre02nas9dad: - -unsafe external block -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_pkfgas34msas` -An :t:`unsafe external block` is an :t:`external block` subject to keyword ``unsafe``. - -.. _fls_ua64pv82skaw: - -unsafe function -^^^^^^^^^^^^^^^ - -:dp:`fls_2ht13dgtxi1o` -An :t:`unsafe function` is a :t:`function` subject to an :s:`ItemSafety` with :t:`keyword` ``unsafe``. - -.. _fls_y1iruf62p856: - -unsafe function item type -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_r91tuwi55nu7` -An :t:`unsafe function item type` is a :t:`function item type` where the -related :t:`function` is an :t:`unsafe function`. - -.. _fls_bokqlokua059: - -unsafe function pointer type -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_tiluwa2v4l6d` -An :t:`unsafe function pointer type` is a function pointer type subject to -:t:`keyword` ``unsafe``. - -.. _fls_e2wyfbem6vwn: - -unsafe operation -^^^^^^^^^^^^^^^^ - -:dp:`fls_34h60ubicgsj` -An :t:`unsafe operation` is an operation that may result in -:t:`undefined behavior` that is not diagnosed as a static error. - -.. _fls_4f6mppoenj3b: - -unsafe Rust -^^^^^^^^^^^ - -.. _fls_38ae1t48h9cb: - -unsafe trait -^^^^^^^^^^^^ - -:dp:`fls_w6zlsf2ye457` -An :t:`unsafe trait` is a :t:`trait` declared with :t:`keyword` ``unsafe``. - -.. _fls_h62dfjfyqcbn: - -unsafe trait implementation -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_kqwcv076dzie` -An :t:`unsafe trait implementation` is a :t:`trait implementation` subject to -:t:`keyword` ``unsafe``. - -.. _fls_pst7yov6vnr9: - -unsafety -^^^^^^^^ - -:dp:`fls_742ycx5181n` -:t:`unsafety` is the presence of :t:`[unsafe operation]s` and :t:`[unsafe trait -implementation]s` in program text. - -.. _fls_4jc74lz245z3: - -unsigned integer type -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_dxnf79qemlg6` -An :t:`unsigned integer type` is an :t:`integer type` whose :t:`values ` -denote zero and positive whole numbers. - -.. _fls_pjup0piqlxe3: - -unsized coercion -^^^^^^^^^^^^^^^^ - -:dp:`fls_olt5qhyvhmtq` -An :t:`unsized coercion` is a :t:`type coercion` that converts a :t:`sized type` -into an :t:`unsized type`. :t:`Unsized coercion` from a source :t:`type` to a -target :t:`type` is allowed to occur when: - -.. _fls_KiVgO7I3UUhh: - -unsized type -^^^^^^^^^^^^ - -:dp:`fls_M9NpzBH8Wf4z` -An :t:`unsized type` is a :t:`type` that does not implement the -:std:`core::marker::Sized` :t:`trait`. - -.. _fls_4ph9cact2scc: - -unsuffixed float -^^^^^^^^^^^^^^^^ - -:dp:`fls_7wp6y0xeqqve` -An :t:`unsuffixed float` is a :t:`float literal` without a :t:`float suffix`. - -.. _fls_d18nctsj8wu5: - -unsuffixed integer -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_t419z3zder0q` -An :t:`unsuffixed integer` is an :t:`integer literal` without an -:t:`integer suffix`. - -.. _fls_Z8qvOkP4Zfj5: - -use capture -^^^^^^^^^^^ - -:dp:`fls_eZyPXG27Zwcg` -An :t:`use capture` is a :t:`generic parameter` referenced within an :t:`anonymous return type`. - -.. _fls_fow1bnvduafi: - -use import -^^^^^^^^^^ - -:dp:`fls_uccv9zthh5vt` -A :t:`use import` brings :t:`entities ` :t:`in scope` within the -:t:`block expression` of an :t:`expression-with-block` or :t:`module` where the -:t:`use import` resides. - -.. _fls_gvjm5mms9ahz: - -usize -^^^^^ - -:dp:`fls_r22k1l8799k6` -:dc:`usize` is an :t:`unsigned integer type` with the same number of bits as -the platform's :t:`pointer type`, and is at least 16-bits wide. - -.. _fls_A5K8aOBsI3BG: - -validity invariant -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_3ebC3l839ajF` -A :t:`validity invariant` is an invariant that when violated results in -immediate :t:`undefined behavior`. - -.. _fls_tg866bc926ms: - -value -^^^^^ - -:dp:`fls_h8jn338b51yu` -A :t:`value` is either a :t:`literal` or the result of a computation, that may -be stored in a memory location, and interpreted based on some :t:`type`. - -.. _fls_h03noz6jzpyl: - -value expression -^^^^^^^^^^^^^^^^ - -:dp:`fls_mn6tcuz5j3p` -A :t:`value expression` is an :t:`expression` that represents a :t:`value`. -All :t:`[expression]s` that are not :t:`[place expression]s` are -:t:`[value expression]s`. - -.. _fls_7xiaXXSwy4GP: - -value expression context -^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_NGGZEbmoLRbD` -A :t:`value expression context` is an expression context that is not a -:t:`place expression context`. - -.. _fls_a5xof9jlpc2e: - -value operand -^^^^^^^^^^^^^ - -:dp:`fls_x4seemjknk2z` -A :t:`value operand` is an :t:`operand` that supplies the :t:`value` that is -assigned to an :t:`assignee operand` by an :t:`assignment expression`. - -.. _fls_donq6w1906lw: - -variable -^^^^^^^^ - -:dp:`fls_9ab12k4vwsio` -A :t:`variable` is a placeholder for a :t:`value` that is allocated on the -stack. - -.. _fls_RIe80XOF8VlA: - -variadic part -^^^^^^^^^^^^^ - -:dp:`fls_ePnTyLoqJ1i7` -A :t:`variadic part` indicates the presence of :t:`C`-like optional -parameters. - -.. _fls_q0xplb4tbzpq: - -variance -^^^^^^^^ - -:dp:`fls_il0krrsf09f8` -:t:`Variance` is a property of :t:`[lifetime parameter]s` and -:t:`[type parameter]s` that describes the circumstances under which a -:t:`generic type` is a :t:`subtype` of an instantiation of itself with -different :t:`[generic argument]s`. - -.. _fls_svx87y4p8fdx: - -visibility -^^^^^^^^^^ - -:dp:`fls_sadmsqhptlho` -:t:`Visibility` is a property of :t:`[field]s` and :t:`[item]s` that determines -which :t:`[module]s` can refer to the :t:`name` of the :t:`field` or :t:`item`. - -.. _fls_xqjk8avt7t51: - -visibility modifier -^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_ze7befho4jhs` -A :t:`visibility modifier` sets the :t:`visibility` of a :t:`name`. - -.. _fls_dLlUt8PrXAls: - -visible emptiness -^^^^^^^^^^^^^^^^^ - -:dp:`fls_shXDYqnUy2Pb` -:t:`Visible emptiness ` is a property of :t:`[type]s` and :t:`[enum variant]s` that have no :t:`[value]s` that are fully observable. - -.. _fls_EnT5zRuwviWM: - -visible empty enum variant -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_MQiPWNwdk95I` -A :t:`visible empty enum variant` is an :t:`enum variant` subject to :t:`visible emptiness`. - -.. _fls_HYWQ0lJS3TET: - -visible empty type -^^^^^^^^^^^^^^^^^^ - -:dp:`fls_OLVD0u9w68Gl` -A :t:`visible empty type` is a :t:`type` subject to :t:`visible emptiness`. - -.. _fls_iplp3gvfbcpw: - -weak keyword -^^^^^^^^^^^^ - -:dp:`fls_4hiznltf5wlu` -A :t:`weak keyword` is a :t:`keyword` whose special meaning depends on the -context. - -.. _fls_ew2gsg72rjxk: - -where clause -^^^^^^^^^^^^ - -:dp:`fls_prljyrhontzn` -A :t:`where clause` is a :t:`construct` that specifies :t:`[bound]s` on -:t:`[lifetime parameter]s` and :t:`[type]s` that have -to hold for the :t:`construct` subject to the :t:`where clause` to be valid. - -.. _fls_myNeYCm4VI0R: - -where clause predicate -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_0LACQVmZpDQF` -A :t:`where clause predicate` is either a :t:`lifetime bound predicate` or a -:t:`type bound predicate`. - -.. _fls_8hcsablipi17: - -while let loop -^^^^^^^^^^^^^^ - -.. _fls_gme4odk59x6d: - -while let loop expression -^^^^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_g35gn7n88acp` -A :t:`while let loop expression` is a :t:`loop expression` that continues to -evaluate its :t:`loop body` as long as its :t:`subject let expression` yields a -:t:`value` that can be matched against its :t:`pattern`. - -.. _fls_od59yim9kasi: - -while loop -^^^^^^^^^^ - -.. _fls_1qxi3h3qmgso: - -while loop expression -^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_fq0zyup4djyh` -A :t:`while loop expression` is a :t:`loop expression` that continues to -evaluate its :t:`loop body` as long as its :t:`iteration expression` holds -true. - -.. _fls_cxm8nw6qiryr: - -whitespace string -^^^^^^^^^^^^^^^^^ - -:dp:`fls_nljkmadklwdp` -A :t:`whitespace string` is a string that consists of one or more -:t:`[whitespace character]s`. - -.. _fls_a5lrxgucl3be: - -zero-sized type -^^^^^^^^^^^^^^^ - -:dp:`fls_rmd6pearrhr8` -A :t:`zero-sized type` is a :t:`fixed sized type` with :t:`size` zero. - -.. _fls_pix563lfbpm: - -zero-variant enum type -^^^^^^^^^^^^^^^^^^^^^^ - -:dp:`fls_84gqz3vwi5mj` -A :t:`zero-variant enum type` is an :t:`enum type` without any -:t:`[enum variant]s`. +.. include:: glossary.rst.inc diff --git a/src/glossary.rst.inc b/src/glossary.rst.inc new file mode 100644 index 00000000..93815f4f --- /dev/null +++ b/src/glossary.rst.inc @@ -0,0 +1,8601 @@ +.. SPDX-License-Identifier: MIT OR Apache-2.0 + SPDX-FileCopyrightText: The Ferrocene Developers + SPDX-FileCopyrightText: The Rust Project Contributors + +.. _fls_6b549afeb5fb: + +ABI +^^^ + +:dp:`fls_ab32acfcc89b` +An :t:`ABI` is an :t:`Application Binary Interface`. + +.. _fls_0b4e7999ad55: + +ABI clobber +^^^^^^^^^^^ + +:dp:`fls_5b3bfa040ffb` +An :t:`ABI clobber` is an argument to :t:`macro` :std:`core::arch::asm` which +indicates that the :t:`[value]s` of selected :t:`[register]s` might be +overwritten during the :t:`execution` of an :t:`assembly code block`. + +.. _fls_a70c1148e77a: + +ABI kind +^^^^^^^^ + +:dp:`fls_8bd30f7b7e1d` +The :t:`ABI kind` indicates the :t:`ABI` of a :t:`construct`. + +.. _fls_ec33acc32e53: + +Abort +^^^^^ + +:dp:`fls_b4ff0a209d3d` +:t:`Abort` is the immediate termination of a program. + +.. _fls_7f1bddac70e0: + +abstract data type +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_6444f8ca5407` +An :t:`abstract data type` is a collection of other :t:`[type]s`. + +.. _fls_38639d604665: + +active +^^^^^^ + +:dp:`fls_39d8b5cf68bd` +A :t:`reference` is :t:`active` from the point of obtaining its :t:`referent` +upto the last use of the :t:`reference`, prior to another assignment to the +:t:`reference` or the end of the :t:`scope` of the :t:`reference`. + +.. _fls_d990cebc3b26: + +active attribute +^^^^^^^^^^^^^^^^ + +:dp:`fls_238a7b6d7c6d` +An :t:`active attribute` is an :t:`attribute` that is removed from the :t:`item` +it decorates. + +.. _fls_354a8278a4bc: + +addition assignment +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_67f855ee173e` +An :t:`addition assignment` is an :t:`addition assignment expression`. + +.. _fls_2a649790d2d0: + +addition assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2017a4fffa30` +An :t:`addition assignment expression` is a :t:`compound assignment expression` +that uses addition. + +.. _fls_ec4ee75f37a7: + +addition expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_146b46d67ade` +An :t:`addition expression` is an :t:`arithmetic expression` that uses addition. + +.. _fls_9699fdb50b33: + +address-to-pointer cast +^^^^^^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_59mpteeczzo` + An :t:`operand` of :t:`integer type` and :t:`target type` ``*const V`` or + ``*mut V`` where ``V`` implements the :std:`core::marker::Sized` :t:`trait` + perform :t:`address-to-pointer cast`. An :t:`address-to-pointer cast` + produces a :t:`pointer` that interprets the integer as a machine address. + +.. _fls_0d9c137afc04: + +adjusted call operand +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f30844bf566c` +An :t:`adjusted call operand` is the :t:`call operand` after any implicit +adjustments required by :t:`call resolution`. + +.. _fls_2d550077e820: + +alignment +^^^^^^^^^ + +:dp:`fls_0271489f659d` +The :t:`alignment` of a :t:`value` specifies which addresses are valid for +storing the :t:`value`. :t:`Alignment` is measured in bytes, is at least one, +and always a power of two. A :t:`value` of :t:`alignment` ``N`` is stored at an +address that is a multiple of ``N``. + +.. _fls_d0885736fc40: + +all configuration predicate +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_86670c062726` +An :t:`all configuration predicate` is a :t:`configuration predicate` that +models existential quantifier ALL. + +.. _fls_46b4b95fc699: + +allocated object +^^^^^^^^^^^^^^^^ + +:dp:`fls_ffad8cc4080e` +An :t:`allocated object` is a :t:`value` stored at some memory address. + +.. _fls_11dcef7bac7b: + +anonymous loop expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_62a65679c0dc` +An :t:`anonymous loop expression` is a :t:`loop expression` without a +:t:`label`. + +.. _fls_4772912913dd: + +anonymous return type +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0bcff85aeaf4` +An :t:`anonymous return type` is an :t:`impl trait type` ascribed to a +:t:`function` :t:`return type`. + +.. _fls_a141b5f01b1b: + +anonymous type parameter +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0f5be8a4ca06` +An :t:`anonymous type parameter` is an :t:`impl trait type` ascribed to a +:t:`function parameter`. + +.. _fls_5d6439908357: + +any configuration predicate +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_34b5dda3245a` +An :t:`any configuration predicate` is a :t:`configuration predicate` that +models existential quantifier ANY. + +.. _fls_19f1ff4a3198: + +Application Binary Interface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e519e9d7d465` +An :t:`Application Binary Interface` is a set of conventions that dictate how +data and computation cross language boundaries. + +.. _fls_91beab605ccb: + +argument operand +^^^^^^^^^^^^^^^^ + +:dp:`fls_08a104dba02b` +An :t:`argument operand` is an :t:`operand` which is used as an argument in a +:t:`call expression` or a :t:`method call expression`. + +.. _fls_d8e14d24afd3: + +arithmetic expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_57a1a32e4469` +An :t:`arithmetic expression` is an :t:`expression` that computes a :t:`value` +from two :t:`[operand]s` using arithmetic. + +.. _fls_590637310941: + +arithmetic operator +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2047e3317739` +An :t:`arithmetic operator` is an operator used in an :t:`arithmetic expression`. + +.. _fls_bb93822f882f: + +arithmetic overflow +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7a830f6312b4` +An :t:`arithmetic overflow` occurs when an :t:`operator expression` computes a +:t:`value` of a :t:`scalar type` that lies outside of the range of valid +:t:`[value]s` for the :t:`scalar type` or when one or more :t:`operand` of an +:t:`operator expression` lies outside of the range of valid :t:`[value]s` for +the operation. + +.. _fls_415d5cf60b1f: + +arity +^^^^^ + +:dp:`fls_a37d2a246b74` +The :t:`arity` of a :t:`tuple type` is the number of :t:`[tuple field]s` in its +:s:`TupleFieldList`. + +.. _fls_c7278d6eb0bc: + +array +^^^^^ + +:dp:`fls_80e9999fbf9c` +An :t:`array` is a :t:`value` of an :t:`array type`. + +.. _fls_d1571d14653b: + +array element constructor +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_018e4af40be4` +An :t:`array element constructor` is an :t:`array expression` that lists all +elements of the :t:`array` being constructed. + +.. _fls_3d0fb7b0216e: + +array expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_e43259b10f68` +An :t:`array expression` is an :t:`expression` that constructs an :t:`array`. + +.. _fls_1a7b3c539f42: + +array repetition constructor +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ae96be795ff5` +An :t:`array repetition constructor` is an :t:`array expression` that specifies +how many times an element is repeated in the :t:`array` being constructed. + +.. _fls_20217996edec: + +array type +^^^^^^^^^^ + +:dp:`fls_32c24886c1d5` +An :t:`array type` is a :t:`sequence type` that represents a fixed sequence +of elements. + +.. _fls_a8e69abef86b: + +assembly code block +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_6a12c2a61ad1` +An :t:`assembly code block` is a sequence of :t:`[assembly instruction]s`. + +.. _fls_a989328e8e5e: + +assembly directive +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_8490c9c1f536` +An :t:`assembly directive` is a request to the assembler to perform a +particular action or change a setting. + +.. _fls_0bd8bc641152: + +assembly instruction +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_aac3c04ba8ca` +An :t:`assembly instruction` is a :t:`string literal` that represents a +low-level assembly operation or an :t:`assembly directive`. + +.. _fls_0ec6aa71a05d: + +assembly option +^^^^^^^^^^^^^^^ + +:dp:`fls_784f2261d8de` +An :t:`assembly option` is used to specify a characteristic of or a restriction +on the related :t:`assembly code block`. + +.. _fls_60bde58c8d28: + +assigned operand +^^^^^^^^^^^^^^^^ + +:dp:`fls_99c8eccdb6c5` +An :t:`assigned operand` is the target :t:`operand` of a +:t:`compound assignment expression`. + +.. _fls_04e489b16874: + +assignee expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3b76c607fb0f` +An :t:`assignee expression` is an :t:`expression` that appears as the +:t:`left operand` of an :t:`assignment expression`. The following +:t:`[expression]s` are :t:`[assignee expression]s`: + +.. _fls_abc9cf3ba73e: + +assignee operand +^^^^^^^^^^^^^^^^ + +:dp:`fls_fa21dbfb12ed` +An :t:`assignee operand` is the target :t:`operand` of an +:t:`assignment expression`. + +.. _fls_bf93c4189e37: + +assignee pattern +^^^^^^^^^^^^^^^^ + +:dp:`fls_53d0cd9660f4` +The :t:`assignee operand` of a :t:`destructuring assignment` is treated as an +:t:`assignee pattern` depending on its kind, as follows: + +.. _fls_88b3f42d2820: + +assignment +^^^^^^^^^^ + +:dp:`fls_a60750b7ab3e` +For :t:`assignment`, see :t:`assignment expression`. + +.. _fls_4972cb4b6179: + +assignment expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5531ed4afaaf` +An :t:`assignment expression` is an :t:`expression` that assigns the :t:`value` +of a :t:`value operand` to an :t:`assignee operand`. + +.. _fls_2adfd16b7207: + +associated constant +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7687fa8905cb` +An :t:`associated constant` is a :t:`constant` that appears as an +:t:`associated item`. + +.. _fls_45cc0bb132f4: + +associated function +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_23daf7e1c951` +An :t:`associated function` is a :t:`function` that appears as an +:t:`associated item`. + +.. _fls_4f9eb34618da: + +associated implementation constant +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_89505d04288b` +An :t:`associated implementation constant` is an :t:`associated constant` that +appears within an :t:`implementation`. + +.. _fls_9bf6d43b965f: + +associated implementation function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4abb3cce58b6` +An :t:`associated implementation function` is an :t:`associated function` that +appears within an :t:`implementation`. + +.. _fls_c6c26e201c9b: + +associated implementation type +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_362e4c444578` +An :t:`associated implementation type` is an :t:`associated type` that appears +within an :t:`implementation`. + +.. _fls_bf17ea9b87b9: + +associated item +^^^^^^^^^^^^^^^ + +:dp:`fls_d797db0a5f7f` +An :t:`associated item` is an :t:`item` that appears within an +:t:`implementation` or a :t:`trait`. + +.. _fls_d025c90339ad: + +associated trait constant +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_626dd6a419fb` +An :t:`associated trait constant` is an :t:`associated constant` that appears +within a :t:`trait`. + +.. _fls_dc24565f63bc: + +associated trait function +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_fabe83ca4231` +An :t:`associated trait function` is an :t:`associated function` that appears +within a :t:`trait`. + +.. _fls_6e0d1c93eb27: + +associated trait implementation function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_55204981f265` +An :t:`associated trait implementation function` is an :t:`associated function` +that appears within a :t:`trait implementation`. + +.. _fls_e2c11c86c219: + +associated trait implementation item +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_41cd5beeec5e` +An :t:`associated trait implementation item` is an :t:`associated item` that +appears within a :t:`trait implementation`. + +.. _fls_d6b3eaa6b5d7: + +associated trait item +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_04cd8219c73b` +An :t:`associated trait item` is an :t:`associated item` that appears +within a :t:`trait`. + +.. _fls_7e763841e21f: + +associated trait type +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_89fccd88187d` +An :t:`associated trait type` is an :t:`associated type` that appears within +a :t:`trait`. + +.. _fls_8934db21ccce: + +associated type +^^^^^^^^^^^^^^^ + +:dp:`fls_5b4db87518ae` +An :t:`associated type` is a :t:`type alias` that appears as an +:t:`associated item`. + +.. _fls_debe06824e56: + +associated type projection +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_79fae0d0115b` +An :t:`associated type projection` is a :t:`qualified type path` of the form +``::associated_type``, where ``type`` is a :t:`type`, ``trait`` +is a :t:`qualifying trait`, and ``associated type`` is an :t:`associated type`. + +.. _fls_e216b0f0c341: + +Associativity +^^^^^^^^^^^^^ + +:dp:`fls_4ee114a8837a` +:t:`Associativity` is the order by which :t:`[operand]s` are evaluated within a +single :t:`expression`. + +.. _fls_1387c379dfd7: + +async block +^^^^^^^^^^^ + +:dp:`fls_0a67aa594341` +An :t:`async block` is an :t:`async block expression`. + +.. _fls_ad98a3b498fd: + +async block expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e0f734479ecc` +An :t:`async block expression` is a :t:`block expression` that is specified +with :t:`keyword` ``async`` and encapsulates behavior which is executed in +an asynchronous manner. + +.. _fls_1c7cd7335aa7: + +async closure expression +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0f4ff9e025af` +An :t:`async closure expression` is a :t:`closure expression` subject to keyword ``async`` that defines an :t:`async closure type` and constructs a value of that :t:`type`. + +.. _fls_2191fb61ae4f: + +async closure type +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_787ebb4f3934` +An :t:`async closure type` is the :t:`closure type` defined by an +:t:`async closure expression`. + +.. _fls_302777238b01: + +async control flow boundary +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ab81ae681985` +An :t:`async control flow boundary` is a :t:`control flow boundary` introduced +by an :t:`async block expression`, :t:`async function`, or +:t:`async closure expression`. + +.. _fls_421b05620571: + +async function +^^^^^^^^^^^^^^ + +:dp:`fls_8848f92ecf8d` +An :t:`async function` is a :t:`function` subject to :t:`keyword` ``async``. An +:t:`async function` of the form + +.. _fls_70795fe2aed5: + +atomic +^^^^^^ + +:dp:`fls_9034dc860a45` +For :t:`atomic`, see :t:`atomic type`. + +.. _fls_3dc811a223f0: + +atomic type +^^^^^^^^^^^ + +:dp:`fls_920f10425f5d` +An :t:`atomic type` is a :t:`type` defined in :t:`module` +:std:`core::sync::atomic`. :t:`[Atomic type]s` provide primitive shared-memory +communication between threads. + +.. _fls_d7582e9f5107: + +att_syntax +^^^^^^^^^^ + +:dp:`fls_6b9686a9d2c4` +:t:`Assembly option` :c:`att_syntax` is applicable only to x86 architectures +and causes the assembler to use the ``.att_syntax`` prefix mode which prefixes +:t:`[register]s` with ``%``. + +.. _fls_5d16703c7ee9: + +attribute +^^^^^^^^^ + +:dp:`fls_7e620ba23d05` +An :t:`attribute` is a general, free-form metadatum that is interpreted based on +its :t:`name`, convention, language, and tool. + +.. _fls_2d784c565906: + +attribute content +^^^^^^^^^^^^^^^^^ + +:dp:`fls_5bed16598891` +An :t:`attribute content` is a :t:`construct` that provides the content of +an :t:`attribute`. + +.. _fls_b8805e87a98c: + +attribute macro +^^^^^^^^^^^^^^^ + +:dp:`fls_0e708d75843e` +An :t:`attribute macro` is a :t:`procedural macro` that consumes two streams +of :t:`[token]s` to produce a single stream of :t:`[token]s`, and defines a +new :t:`outer attribute` that can be attached to :t:`[item]s`. +:t:`[Attribute macro]s` are used to replace :t:`[item]s` with other +:t:`[item]s`. + +.. _fls_3e087f0222fc: + +auto trait +^^^^^^^^^^ + +:dp:`fls_dc72820bb030` +An :t:`auto trait` is a :t:`trait` that is implicitly and automatically +implemented by a :t:`type` when the types of its constituent :t:`[field]s` +implement the :t:`trait`. + +.. _fls_4d850f21567c: + +automatically_derived +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f16ff5979775` +:t:`Attribute` :c:`automatically_derived` is automatically added to +:t:`[implementation]s` that are created by :t:`attribute` :c:`derive` for +:t:`[built-in trait]s`. + +.. _fls_48f49407b576: + +await expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_2882ebb28756` +An :t:`await expression` is an :t:`expression` that polls a :t:`future`, +suspending the :t:`execution` of the :t:`future` until the :t:`future` is ready. + +.. _fls_09aa03bf318d: + +base address +^^^^^^^^^^^^ + +:dp:`fls_7c950ed172fa` +The :t:`base address` of an :t:`allocated object` is the memory address where +the object is stored. + +.. _fls_369fc0f273d2: + +base initializer +^^^^^^^^^^^^^^^^ + +:dp:`fls_db092a62d076` +A :t:`base initializer` is a :t:`construct` that specifies an :t:`enum value`, or +a :t:`struct value` to be used as a base for +construction in a :t:`struct expression`. + +.. _fls_8a07413be279: + +basic assignment +^^^^^^^^^^^^^^^^ + +:dp:`fls_511175893a15` +A :t:`basic assignment` is an :t:`assignment expression` that is not a +:t:`destructuring assignment`. + +.. _fls_06e712830c69: + +binary crate +^^^^^^^^^^^^ + +:dp:`fls_a7fba8347e16` +A :t:`binary crate` is a :t:`crate` whose :t:`crate type` is ``bin``. + +.. _fls_6f5c729236c4: + +binary literal +^^^^^^^^^^^^^^ + +:dp:`fls_ebccc3ac89f0` +A :t:`binary literal` is an :t:`integer literal` in base 2. + +.. _fls_8b8b007c79e3: + +binary operator +^^^^^^^^^^^^^^^ + +:dp:`fls_6c802faf4014` +A :t:`binary operator` is an operator that combines a :t:`left operand` and a +:t:`right operand`. + +.. _fls_ca2ae0d722db: + +binding +^^^^^^^ + +:dp:`fls_c2e9e3b7aba9` +A :t:`binding` of a :t:`binding pattern` binds a matched :t:`value` to a +:t:`name`. + +.. _fls_140bf9673ec7: + +binding argument +^^^^^^^^^^^^^^^^ + +:dp:`fls_d1b013f2e2a8` +A :t:`binding argument` is a :t:`generic argument` that supplies the :t:`type` +of an :t:`associated trait type`. + +.. _fls_69889844a115: + +binding bound argument +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b6111f8595cc` +A :t:`binding bound argument` is a :t:`generic argument` that further imposes +:t:`[bound]s` on an :t:`associated trait type`. + +.. _fls_f42fac3790d1: + +binding mode +^^^^^^^^^^^^ + +:dp:`fls_2e9377847a08` +A :t:`binding mode` describes whether a :t:`binding` captures a matched +:t:`value` by value, by reference, or by mutable reference. + +.. _fls_2329c07d3964: + +binding pattern +^^^^^^^^^^^^^^^ + +:dp:`fls_ba1bc4c4548f` +A :t:`binding pattern` is either an :t:`identifier pattern` or a +:t:`shorthand deconstructor`. + +.. _fls_4098615253a8: + +binding scope +^^^^^^^^^^^^^ + +:dp:`fls_4ca2ac0bdc4e` +A :t:`binding scope` is a :t:`scope` for :t:`[binding]s`. + +.. _fls_0ba26ae96f79: + +bit and assignment +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7e28b170dbe2` +An :t:`bit and assignment` is a :t:`bit and assignment expression`. + +.. _fls_4156a61fe589: + +bit and assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b232cec5cce9` +A :t:`bit and assignment expression` is a :t:`compound assignment expression` +that uses bit and arithmetic. + +.. _fls_b121cdf25354: + +bit and expression +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_29ccb2526be4` +A :t:`bit and expression` is a :t:`bit expression` that uses bit and arithmetic. + +.. _fls_756f14b348f2: + +bit expression +^^^^^^^^^^^^^^ + +:dp:`fls_53c53ce935f0` +A :t:`bit expression` is an :t:`expression` that computes a :t:`value` from two +:t:`[operand]s` using bit arithmetic. + +.. _fls_403647cec19d: + +bit or assignment +^^^^^^^^^^^^^^^^^ + +:dp:`fls_d062fdf993b8` +An :t:`bit or assignment` is a :t:`bit or assignment expression`. + +.. _fls_d6b6005f05f5: + +bit or assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3602caa81be3` +A :t:`bit or assignment expression` is a :t:`compound assignment expression` +that uses bit or arithmetic. + +.. _fls_4a2471fdb050: + +bit or expression +^^^^^^^^^^^^^^^^^ + +:dp:`fls_6d34d15e7fa6` +A :t:`bit or expression` is a :t:`bit expression` that uses bit or arithmetic. + +.. _fls_a4bd79127ca4: + +bit xor assignment +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3cc7fbea2710` +An :t:`bit xor assignment` is a :t:`bit xor assignment expression`. + +.. _fls_8e314a58c971: + +bit xor assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d30926eb62a8` +A :t:`bit xor assignment expression` is a :t:`compound assignment expression` +that uses bit exclusive or arithmetic. + +.. _fls_b3b424e10c5d: + +bit xor expression +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e56947e0929a` +A :t:`bit xor expression` is a :t:`bit expression` that uses bit exclusive or +arithmetic. + +.. _fls_c00de6f15161: + +block comment +^^^^^^^^^^^^^ + +:dp:`fls_c57af1ced5f3` +A :t:`block comment` is a :t:`comment` that spans one or more :t:`[line]s`. + +.. _fls_97555cde59bc: + +block expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_fbcf2937c290` +A :t:`block expression` is an :t:`expression` that sequences :t:`[expression]s` +and :t:`[statement]s`. + +.. _fls_06149609dd1d: + +bool +^^^^ + +:dp:`fls_e6c37088e036` +:t:`bool` is a :t:`type` whose :t:`[value]s` denote the truth :t:`[value]s` of +logic and Boolean algebra. + +.. _fls_a7486941231e: + +boolean literal +^^^^^^^^^^^^^^^ + +:dp:`fls_9c5a02501e66` +A :t:`boolean literal` is a :t:`literal` that denotes the truth :t:`[value]s` of +logic and Boolean algebra. + +.. _fls_412698b5b129: + +borrow +^^^^^^ + +:dp:`fls_4f714e7057e2` +A :t:`borrow` is a :t:`reference` produced by :t:`borrowing`. + +.. _fls_07c5c919beb9: + +borrow expression +^^^^^^^^^^^^^^^^^ + +:dp:`fls_9a0282d7fc39` +A :t:`borrow expression` is an :t:`expression` that borrows the :t:`value` of +its :t:`operand` and creates a :t:`reference` to the memory location of its +:t:`operand`. + +.. _fls_40d02bbf9577: + +borrowed +^^^^^^^^ + +:dp:`fls_ce0ca738c840` +A :t:`value` is :t:`borrowed` when it is associated with an active +:t:`borrow`. + +.. _fls_868be9fefffb: + +Borrowing +^^^^^^^^^ + +:dp:`fls_794a39307052` +:t:`Borrowing` is the process of temporarily associating a :t:`reference` with a +:t:`value` without transferring :t:`ownership` permanently. + +.. _fls_047de6d26318: + +bound +^^^^^ + +:dp:`fls_8586b93eec5e` +A :t:`bound` imposes a constraint on a :t:`generic parameter` by limiting the +set of possible :t:`[generic substitution]s`. + +.. _fls_d0b51581801e: + +bound pattern +^^^^^^^^^^^^^ + +:dp:`fls_827601590e22` +A :t:`bound pattern` is a :t:`pattern` that imposes a constraint on a related +:t:`identifier pattern`. + +.. _fls_65fc0c2e6d89: + +break expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_613eaf6e4403` +A :t:`break expression` is an :t:`expression` that terminates a +:t:`loop expression` or a :t:`named block expression`. + +.. _fls_efa65ac3cf01: + +Break type +^^^^^^^^^^ + +:dp:`fls_8321fb5e71ee` +:t:`Break type` is the :t:`type` of the :t:`operand` of a :t:`break expression`. + +.. _fls_b7e3809a4072: + +Break value +^^^^^^^^^^^ + +:dp:`fls_76bd7f1ad689` +:t:`Break value` is the :t:`value` of the :t:`operand` of a +:t:`break expression`. + +.. _fls_146cc4e0e0f8: + +built-in attribute +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_76731db65e5e` +A :t:`built-in attribute` is a language-defined :t:`attribute`. + +.. _fls_76804e095ed6: + +built-in trait +^^^^^^^^^^^^^^ + +:dp:`fls_6c70d411b797` +A :t:`built-in trait` is a language-defined :t:`trait` with special meaning to +the compiler. + +.. _fls_2b9826fe2ed6: + +by copy +^^^^^^^ + +:dp:`fls_97ece330fda4` +A :t:`value` of a :t:`copy type` is :t:`passed ` +:t:`by copy`. Passing :t:`by copy` does not change the :t:`owner` of the +:t:`value`. + +.. _fls_18f59a235247: + +by immutable reference capture +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5dccc584f422` +A :t:`captured` :t:`capture target` with :t:`capture mode` +:t:`by immutable reference capture` binds an :t:`immutable reference` to the +:t:`capture target` and passes the :t:`immutable reference` into the +:t:`capturing environment`. + +.. _fls_f41fd5f66b87: + +by move +^^^^^^^ + +:dp:`fls_7ed4b7d50978` +A :t:`value` of a :t:`move type` is :t:`passed ` +:t:`by move`. Passing :t:`by move` changes the :t:`owner` of the :t:`value`. + +.. _fls_ab73d8f181f8: + +by mutable reference +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3db2f2a707d5` +A :t:`binding` with :t:`binding mode` :t:`by mutable reference` binds a +:t:`mutable reference` to the matched :t:`value` to the :t:`name`. + +.. _fls_49415f6f1d79: + +by mutable reference capture +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e85ee2634f42` +A :t:`captured` :t:`capture target` with :t:`capture mode` +:t:`by mutable reference capture` binds a :t:`mutable reference` to the +:t:`capture target` and passes the :t:`mutable reference` into the +:t:`capturing environment`. + +.. _fls_a1a118f9098a: + +by reference +^^^^^^^^^^^^ + +:dp:`fls_5df3a2580861` +A :t:`binding` with :t:`binding mode` :t:`by reference` binds an +:t:`immutable reference` to the matched :t:`value` to the :t:`name`. + +.. _fls_1d00f0064987: + +by unique immutable reference capture +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0ff5ddb6357d` +A :t:`captured` :t:`capture target` with :t:`capture mode` +:t:`by unique immutable reference capture` binds a +:t:`unique immutable reference` to the :t:`capture target` and passes the +:t:`mutable reference` into the :t:`capturing environment`. + +.. _fls_5e87c4b26ab9: + +by value +^^^^^^^^ + +:dp:`fls_1e5eb968d325` +A :t:`binding` with :t:`binding mode` :t:`by value` binds the matched +:t:`value` by :t:`passing ` the :t:`value` to the :t:`place` +indicated by the :t:`name`. + +.. _fls_65ded86608b0: + +by value capture +^^^^^^^^^^^^^^^^ + +:dp:`fls_c153bcd66de2` +A :t:`captured` :t:`capture target` with :t:`capture mode` :t:`by value capture` +:t:`passes ` the :t:`value` of the :t:`capture target` into +the :t:`capturing environment`. + +.. _fls_000bea159b02: + +byte literal +^^^^^^^^^^^^ + +:dp:`fls_48497135a5a1` +A :t:`byte literal` is a :t:`literal` that denotes a fixed byte :t:`value`. + +.. _fls_34d28a6439f8: + +byte string literal +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1c6045264635` +A :t:`byte string literal` is a :t:`literal` that consists of multiple +:s:`[AsciiCharacter]s`. + +.. _fls_674cdd37d1c1: + +C +^ + +:dp:`fls_3d511e169fe1` +In this specification, :t:`C` refers to the C programming language used for +foreign function interfaces. + +.. _fls_ee44ff1f1558: + +C representation +^^^^^^^^^^^^^^^^ + +:dp:`fls_c435cbb746c4` +:t:`C representation` lays out a :t:`type` such that the :t:`type` is +interoperable with the :t:`C` language. + +.. _fls_eb2699419b53: + +C signed int type +^^^^^^^^^^^^^^^^^ + +:dp:`fls_2048ec4c4e09` +:t:`C signed int type` is the `signed int` :t:`type` of the :t:`C` language. + +.. _fls_eb0899c3d016: + +c string literal +^^^^^^^^^^^^^^^^ + +:dp:`fls_65d967386e2d` +A :t:`c string literal` is a :t:`literal` that consists of multiple characters +with an implicit 0x00 byte appended to it. + +.. _fls_830ae67eb52c: + +call conformance +^^^^^^^^^^^^^^^^ + +:dp:`fls_beaf226be03d` +A :t:`call conformance` is the requirement that a :t:`call expression` uses +the :t:`ABI` of the invoked :t:`function`. + +.. _fls_e558ed556ed8: + +call expression +^^^^^^^^^^^^^^^ + +:dp:`fls_de67fb0a014d` +A :t:`call expression` is an :t:`expression` that invokes a :t:`function` or +constructs a :t:`tuple enum variant value` or a :t:`tuple struct value`. + +.. _fls_808f07c5c2b6: + +call operand +^^^^^^^^^^^^ + +:dp:`fls_75c43532341a` +A :t:`call operand` is the :t:`function` being invoked or the +:t:`tuple enum variant value` or the :t:`tuple struct value` being constructed +by a :t:`call expression`. + +.. _fls_9f1339b5fc9b: + +call resolution +^^^^^^^^^^^^^^^ + +:dp:`fls_47fc591f4f17` +:t:`call resolution` is a form of :t:`resolution` that applies to a +:t:`call expression`. + +.. _fls_d4464062859f: + +call site hygiene +^^^^^^^^^^^^^^^^^ + +* :dp:`fls_puqhytfzfsg6` + :t:`call site hygiene`, which resolves to a :s:`MacroInvocation` site. + :t:`[Identifier]s` with :t:`call site hygiene` can reference the environment + of the :s:`MacroRulesDeclaration`, can reference the environment of the + :s:`MacroInvocation`, and are considered :t:`unhygienic`. + +.. _fls_c712a4c61be3: + +callee type +^^^^^^^^^^^ + +:dp:`fls_7ac0f8def095` +A :t:`callee type` is either a :t:`function item type`, a +:t:`function pointer type`, a :t:`tuple enum variant`, a +:t:`tuple struct type`, or a :t:`type` that implements any of the +:std:`core::ops::Fn`, :std:`core::ops::FnMut`, or :std:`core::ops::FnOnce` +:t:`[trait]s`. + +.. _fls_93de0f45562f: + +candidate callee type +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_12a87a98fe01` +A :t:`candidate callee type` is the :t:`type` of the :t:`call operand` +of a :t:`call expression` :t:`under resolution`. + +.. _fls_e1fd2d29a647: + +candidate callee type chain +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_06c2f134d3a0` +A :t:`candidate callee type chain` is a sequence of :t:`[candidate callee type]s`. +The :t:`candidate callee type chain` starts with the :t:`type` of the :t:`call +operand` of the:t:`call expression` :t:`under resolution`. From then on, the +:t:`candidate callee type chain` is treated as a :t:`dereference type chain`. + +.. _fls_1e4c09186f5f: + +candidate container type +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a5fc9ff9ea11` +A :t:`candidate container type` is the :t:`type` of the :t:`container operand` +of a :t:`field access expression` :t:`under resolution`. + +.. _fls_e796c026f855: + +candidate container type chain +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a8ac6bd6be34` +A :t:`candidate container type chain` is a sequence of +:t:`[candidate container type]s`. The :t:`candidate container type chain` +starts with the :t:`type` of the :t:`container operand` of the +:t:`field access expression` :t:`under resolution`. From then on, the +:t:`candidate container type chain` is treated as a +:t:`dereference type chain`. + +.. _fls_6b0842323e9b: + +candidate direct entity +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d1c3bf09f1f0` +A :t:`candidate direct entity` is an :t:`entity` that is visible from the +location of a :t:`path` :t:`under resolution` and is located by first examining +:t:`[textual macro scope]s`, followed by examining the :t:`scope hierarchy` +from the innermost :t:`scope` enclosing the :t:`path` to the outermost +:t:`scope`, followed by examining :t:`[prelude]s`. + +.. _fls_23902a888e31: + +candidate external prelude entity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_113c9b689fb0` +A :t:`candidate external prelude entity` is an :t:`entity` that is visible +from the location of a :t:`path` :t:`under resolution` and is located by +examining the :t:`external prelude`. + +.. _fls_2d1549cfdfbf: + +candidate field +^^^^^^^^^^^^^^^ + +:dp:`fls_2c84e96b969f` +A :t:`candidate field` is a :t:`field` of a :t:`candidate container type` +that is visible from the location of the :t:`field access expression` +:t:`under resolution`. + +.. _fls_f23a170e7ec8: + +candidate indexed field +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_945aa77f9bd2` +A :t:`candidate indexed field` is a :t:`candidate field` whose position in the +:t:`type` of the :t:`container operand` matches the index of an +:t:`indexed field selector`. + +.. _fls_30e9037e87fb: + +candidate method +^^^^^^^^^^^^^^^^ + +:dp:`fls_686b34ed88ac` +A :t:`candidate method` is a method of a :t:`candidate receiver type` that +is visible from the location of the :t:`method call expression` +:t:`under resolution`. + +.. _fls_732bfc9ed5c6: + +candidate named field +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_06ed080c6356` +A :t:`candidate named field` is a :t:`candidate field` whose :t:`name` matches +the characters of a :t:`named field selector`. + +.. _fls_45430d7e0517: + +candidate receiver type +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a6f4c008eb91` +A :t:`candidate receiver type` is the :t:`type` of the :t:`receiver operand` +of a :t:`method call expression` :t:`under resolution`. + +.. _fls_9255e2e621fc: + +candidate receiver type chain +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5fcaf9f8f7e7` +A :t:`candidate receiver type chain` is a sequence of +:t:`[candidate receiver type]s`. The :t:`candidate receiver type chain` starts +with the :t:`type` of the :t:`receiver operand` of the +:t:`method call expression` :t:`under resolution`. From then on, the +:t:`candidate receiver type chain` is treated as a :t:`dereference type chain`. + +.. _fls_6912a330531e: + +candidate selected entity +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d82a32c9a648` +A :t:`candidate selected entity` is an :t:`entity` that is visible from +the location of a :t:`path` :t:`under resolution` and is located within a +:t:`resolution context`. + +.. _fls_39c3013a5884: + +capture mode +^^^^^^^^^^^^ + +:dp:`fls_288580fa9312` +:t:`capture mode` is the mechanism by which a :t:`capture target` is captured. + +.. _fls_121a5a3cff18: + +capture target +^^^^^^^^^^^^^^ + +:dp:`fls_812cc399c1c4` +A :t:`capture target` is either a :t:`variable` or a :t:`field` of a +:t:`variable`. + +.. _fls_7b1cfed0f918: + +captured +^^^^^^^^ + +:dp:`fls_b0cb7f5afc17` +A :t:`capture target` requires :t:`capturing` when it is used by +the :t:`capturing expression` and it is defined outside of the +:t:`capturing expression`. Such a :t:`capture target` is said to be +:t:`captured`. + +.. _fls_8589d1c2b7ef: + +capturing +^^^^^^^^^ + +:dp:`fls_ec869cc9b45e` +:t:`capturing` is the process of saving the :t:`[capture target]s` of a +:t:`[capturing expression]'s` :t:`capturing environment`. + +.. _fls_a538bfbadd71: + +capturing environment +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_79f1e73aded4` +The :t:`capturing environment` of a :t:`capturing expression` consists of the +:t:`[value]s` of all :t:`captured` :t:`[capture target]s`. + +.. _fls_9bf5c0ad4484: + +capturing expression +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_739ea5833bbe` +A :t:`capturing expression` is either an :t:`async block expression` or a +:t:`closure expression`. + +.. _fls_d0bead5eb2fb: + +cast +^^^^ + +:dp:`fls_15788abb6083` +A :t:`cast` or :t:`casting` is the process of changing the :t:`type` of an +:t:`expression`. + +.. _fls_5ae2106f6d81: + +casting +^^^^^^^ + +:dp:`fls_ff2e3c7c3f1f` +A :t:`cast` or :t:`casting` is the process of changing the :t:`type` of an +:t:`expression`. + +.. _fls_2e155bd7b82c: + +cfg +^^^ + +:dp:`fls_f41c821a7704` +:t:`Attribute` :c:`cfg` enables :t:`conditional compilation`. + +.. _fls_5da6bf6a8163: + +cfg_attr +^^^^^^^^ + +:dp:`fls_d0d23d889c37` +:t:`Attribute` :c:`cfg_attr` enables :t:`conditional compilation`. + +.. _fls_ae62cdb04e32: + +char +^^^^ + +:dp:`fls_7f2d0a6bb2b1` +A :t:`char` is a :t:`type` whose :t:`[value]s` are represented as a 32-bit +unsigned word in the 0x000 - 0xD7FF or the 0xE000 - 0x10FFFF inclusive ranges +of :t:`Unicode`. + +.. _fls_5763ec4c803c: + +character literal +^^^^^^^^^^^^^^^^^ + +:dp:`fls_b9fc471f256d` +A :t:`character literal` is a :t:`literal` that denotes a fixed :t:`Unicode` +character. + +.. _fls_f8cf08daac42: + +closure body +^^^^^^^^^^^^ + +:dp:`fls_6b3eb07144ac` +A :t:`closure body` is a :t:`construct` that represents the executable portion +of a :t:`closure expression`. + +.. _fls_f61695931eaf: + +closure expression +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d095ffc2d769` +A :t:`closure expression` is an :t:`expression` that defines a +:t:`closure type` and constructs a value of that :t:`type`. + +.. _fls_9523a99ee5d8: + +closure parameter +^^^^^^^^^^^^^^^^^ + +:dp:`fls_53870506d062` +A :t:`closure parameter` is a :t:`construct` that yields a set of +:t:`[binding]s` that bind matched input :t:`[value]s` to :t:`[name]s` at the +site of a :t:`call expression` or a :t:`method call expression`. + +.. _fls_7f4ddfa8221d: + +closure type +^^^^^^^^^^^^ + +:dp:`fls_34e625719d10` +A :t:`closure type` is a unique anonymous :t:`function type` that encapsulates +all :t:`[capture target]s` of a :t:`closure expression`. + +.. _fls_b0d3e670a93d: + +code generation attributes +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_6c8b842d134a` +The following :t:`[built-in attribute]s` are :t:`[code generation attribute]s`: + +.. _fls_3eb58bb9d3d1: + +code point +^^^^^^^^^^ + +:dp:`fls_a2e55579fb95` +In :t:`Unicode`, a :t:`code point` is a numeric :t:`value` that maps to a +character. + +.. _fls_7d0754d2faa1: + +coercion site +^^^^^^^^^^^^^ + +:dp:`fls_e2431adfcc4b` +The following :t:`[construct]s` constitute a :t:`coercion site`: + +.. _fls_cde1339c2045: + +coercion-propagating expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b45eb64508e1` +The following :t:`[expression]s` constitute a +:t:`coercion-propagating expression`: + +.. _fls_abe0229d378e: + +cold +^^^^ + +:dp:`fls_4e200aac995f` +:t:`Attribute` :c:`cold` indicates that its related :t:`function` is unlikely +to be called. + +.. _fls_b0720c987636: + +collapse_debuginfo +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ab822a2d4b97` +:t:`Attribute` :c:`collapse_debuginfo` changes the debug location information +for the expanded code of the :t:`declarative macro` to its invocation site. This +repeats recursively to the top most expansion of a :t:`declarative macro` that +is not annotated with :t:`attribute` :c:`collapse_debuginfo`. + +.. _fls_ad3b223b87d2: + +comment +^^^^^^^ + +:dp:`fls_09444627c0e0` +A :t:`comment` is a :t:`lexical element` that acts as an annotation or an +explanation in program text. + +.. _fls_dac605e134a3: + +comparison expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9260688485e8` +A :t:`comparison expression` is an :t:`expression` that compares the +:t:`[value]s` of two :t:`[operand]s`. + +.. _fls_a1ae662ec575: + +compilation root +^^^^^^^^^^^^^^^^ + +:dp:`fls_217639bd4753` +A :t:`compilation root` is an input to a compilation performed by a tool. A +:t:`crate root module` is a :t:`compilation root`. + +.. _fls_27e2e57e2e95: + +compound assignment +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_23b1dbf15c67` +A :t:`compound assignment` is a :t:`compound assignment expression`. + +.. _fls_758fe9d91100: + +compound assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2cd9b1e86a8f` +A :t:`compound assignment expression` is an expression that first computes +a :t:`value` from two :t:`[operand]s` and then assigns the value to an +:t:`assigned operand`. + +.. _fls_161f15d0a90d: + +compound punctuator +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5e9c5d0833c3` +A :t:`compound punctuator` is one of the following two or more adjacent special +characters: + +.. _fls_e03377ceb32a: + +concrete type +^^^^^^^^^^^^^ + +:dp:`fls_4622de8157fc` +A :t:`concrete type` is a :t:`type` where all :t:`[type parameter]s` and +:t:`[constant parameter]s` have been substituted with :t:`[generic argument]s`. + +.. _fls_4a01d5b9ef57: + +conditional compilation +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_6591fa66e8e4` +:t:`conditional compilation` is the process of compiling +:t:`conditionally-compiled source code`. + +.. _fls_35e2b239b6f7: + +conditional compilation attributes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_69674aacc000` +The following :t:`[built-in attribute]s` are +:t:`[conditional compilation attribute]s`: + +.. _fls_f802e270711a: + +conditionally-compiled source code +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_83d27c905611` +:t:`conditionally-compiled source code` is source code that may or may +not be considered a part of a Rust program depending on +:t:`[configuration predicate]s`. + +.. _fls_97b3228a9ec2: + +configuration predicate +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d2d01514285d` +A :t:`configuration predicate` is a :t:`construct` that evaluates statically +to either ``true`` or ``false``, and controls :t:`conditional compilation`. + +.. _fls_0b8d1cc96f85: + +const block expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_056abd74e396` +A :t:`const block expression` is a :t:`block expression` that is specified +with :t:`keyword` ``const`` and encapsulates behavior which is evaluated +statically. + +.. _fls_f4f4ae2ab148: + +const register expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_dfe5c799bcee` +A :t:`const register expression` is an :t:`expression` that is evaluated at compile-time. + +.. _fls_1c806044200e: + +constant +^^^^^^^^ + +:dp:`fls_5e51494f23f9` +A :t:`constant` is an :t:`immutable` :t:`value expression` whose uses are substituted by +the :t:`value`. + +.. _fls_78a986629d0b: + +constant argument +^^^^^^^^^^^^^^^^^ + +:dp:`fls_955524851f40` +A :t:`constant argument` is a :t:`generic argument` that supplies the +:t:`value` of a :t:`constant parameter`. + +.. _fls_b7b10d96a8ef: + +constant context +^^^^^^^^^^^^^^^^ + +:dp:`fls_38ea4c33d753` +A :t:`constant context` is a :t:`construct` that requires a +:t:`constant expression`. The following :t:`[construct]s` are +:t:`[constant context]s`: + +.. _fls_abdd811b4483: + +constant expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d846642d0bae` +A :t:`constant expression` is an :t:`expression` that can be evaluated +statically. The following :t:`[construct]s` are :t:`[constant expression]s` as +long as their :t:`[operand]s` are also :t:`[constant expression]s` and do not +involve :t:`[type]s` that require :t:`destruction`: + +.. _fls_8f89ca086695: + +constant function +^^^^^^^^^^^^^^^^^ + +:dp:`fls_9232053878c5` +A :t:`constant function` is a :t:`function` subject to :t:`keyword` ``const``. + +.. _fls_9d640998f110: + +constant initializer +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_aa8dda811309` +A :t:`constant initializer` is a :t:`construct` that provides the :t:`value` of +its related :t:`constant`. + +.. _fls_cfd825ea88fc: + +constant parameter +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_025ed8605b5a` +A :t:`constant parameter` is a :t:`generic parameter` for a :t:`constant`. + +.. _fls_bd62b4bdccf6: + +constant parameter initializer +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a43c32837ddf` +A :t:`constant parameter initializer` is a :t:`construct` that provides the +default :t:`value` of its related :t:`constant parameter`. + +.. _fls_47568a6688d5: + +constant promotion +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_744af063863e` +:t:`constant promotion` is the process of converting a :t:`value expression` +into a :t:`constant`. + +.. _fls_29e1d5f54050: + +constrain +^^^^^^^^^ + +:dp:`fls_1d14a2aa4900` +A :t:`generic parameter` is said to :t:`constrain` an :t:`implementation` if the +:t:`generic parameter` appears at least once in one of the following: + +.. _fls_ba1ceb58a529: + +construct +^^^^^^^^^ + +:dp:`fls_9aae33bcc397` +A :t:`construct` is a syntactic element of a Rust program defined by this +specification. + +.. _fls_4911bf26ccec: + +constructee +^^^^^^^^^^^ + +:dp:`fls_d126537843e7` +A :t:`constructee` indicates the :t:`enum variant`, :t:`struct`, or :t:`union` +whose value is being constructed by a :t:`struct expression`. + +.. _fls_d5a821adb80b: + +container operand +^^^^^^^^^^^^^^^^^ + +:dp:`fls_430cb322d629` +A :t:`container operand` is an :t:`operand` that indicates the :t:`value` whose +:t:`field` is selected in a :t:`field access expression`. + +.. _fls_dc0acc33777c: + +continue expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0c633c53ca52` +A :t:`continue expression` is an :t:`expression` that restarts evaluation of +an enclosing :t:`loop expression`. + +.. _fls_e7f045af799e: + +Contravariant +^^^^^^^^^^^^^ + +* :dp:`fls_3rfs58i2kg6l` + :t:`Contravariant` over ``T``, when ``T`` being a :t:`subtype` of ``U`` + implies that ``F`` is a :t:`subtype` of ``F``, or + +.. _fls_32c1ef1f1c6e: + +control flow boundary +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b2b1447ce007` +A :t:`control flow boundary` is a :t:`construct` that provides the target of +a :t:`return expression` and bounds its control flow transfer. + +.. _fls_73302a185be5: + +copy type +^^^^^^^^^ + +:dp:`fls_9c01b82d73b9` +A :t:`copy type` is a :t:`type` that implements the :std:`core::marker::Copy` +:t:`trait`. + +.. _fls_6522700f905f: + +core prelude +^^^^^^^^^^^^ + +:dp:`fls_1d5f399fd668` +The :t:`core prelude` is a :t:`prelude` that brings :t:`in scope` of every +:t:`module` all re-exported :t:`entities ` from the +:std:`core::prelude::rust_2021` :t:`module`. + +.. _fls_5cecf0400199: + +Covariant +^^^^^^^^^ + +* :dp:`fls_wpm0p0gtctvi` + :t:`Covariant` over ``T``, when ``T`` being a :t:`subtype` of ``U`` implies + that ``F`` is a :t:`subtype` of ``F``, or + +.. _fls_3192f1268a1d: + +crate +^^^^^ + +:dp:`fls_cd1abc39cb7b` +A :t:`crate` is a unit of compilation and linking that contains a tree of +nested :t:`[module]s`. + +.. _fls_1560b83ca7e9: + +crate import +^^^^^^^^^^^^ + +:dp:`fls_e0fd58f725d0` +A :t:`crate import` specifies a required dependency on an external :t:`crate`. + +.. _fls_f19823b9549c: + +crate indication +^^^^^^^^^^^^^^^^ + +:dp:`fls_ad47015f5c7b` +A :t:`crate indication` is a :t:`construct` that indicates a :t:`crate`. + +.. _fls_6100b7b91411: + +crate public modifier +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_669c817ba02c` +A :t:`crate public modifier` is a :t:`visibility modifier` that grants a +:t:`name` :t:`public visibility` within the current :t:`crate` only. + +.. _fls_dcaf26b60819: + +crate root +^^^^^^^^^^ + +:dp:`fls_ff92037b9d43` +A :t:`crate root` is the :t:`crate root module` of a :t:`crate`. + +.. _fls_094ec8bc0347: + +crate root module +^^^^^^^^^^^^^^^^^ + +:dp:`fls_f3794e5824b2` +A :t:`crate root module` is the root of the nested :t:`module` tree of a +:t:`crate`. + +.. _fls_516200ff1064: + +crate type +^^^^^^^^^^ + +:dp:`fls_bc4371705c95` +The :t:`crate type` of a :t:`crate` is the value of the :t:`attribute` +``crate_type`` of a :t:`crate` or the value of ``--crate-type`` flag passed to +the tool compiling the :t:`crate`. + +.. _fls_bf941335ddea: + +crate_name +^^^^^^^^^^ + +:dp:`fls_88f2ba03f7ee` +:t:`Attribute` :c:`crate_name` shall specify the name of the related +:t:`crate`. + +.. _fls_d0cf76027a00: + +crate_type +^^^^^^^^^^ + +:dp:`fls_312d8a7ed954` +:t:`Attribute` :c:`crate_type` shall specify the linkage :t:`type` of the +:t:`crate` it appears in. + +.. _fls_2e14cb9c33ce: + +dangling +^^^^^^^^ + +:dp:`fls_4b3a3cd498aa` +A :t:`value` of an :t:`indirection type` is :t:`dangling` if it is either +:c:`null` or not all of the bytes at the referred memory location are part of +the same allocation. + +.. _fls_0dc91f8e1b6f: + +data race +^^^^^^^^^ + +:dp:`fls_b331cb2692cf` +A :t:`data race` is a scenario where two or more threads access a shared memory +location concurrently without any synchronization, where one of the accesses is +a modification. + +.. _fls_a10d114f12e5: + +decimal literal +^^^^^^^^^^^^^^^ + +:dp:`fls_a99cd9d31a0f` +A :t:`decimal literal` is an :t:`integer literal` in base 10. + +.. _fls_d3857642c43c: + +declaration +^^^^^^^^^^^ + +:dp:`fls_a043c5927105` +A :t:`declaration` is a :t:`construct` that introduces a :t:`name` for an +:t:`entity`. + +.. _fls_98ae643814a2: + +declarative macro +^^^^^^^^^^^^^^^^^ + +:dp:`fls_c82e0b78a0fe` +A :t:`declarative macro` is a :t:`macro` that associates a :t:`name` with a set +of syntactic transformation :t:`[macro rule]s`. + +.. _fls_f9392059e84e: + +deconstructee +^^^^^^^^^^^^^ + +:dp:`fls_941af72947be` +A :t:`deconstructee` indicates the :t:`enum variant` or :t:`type` that is being +deconstructed by a :t:`struct pattern`. + +.. _fls_4e892fe6e7d2: + +Default representation +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_205172715370` +:t:`Default representation` makes no guarantees about the :t:`layout`. + +.. _fls_1ee9bc06913f: + +Definition site hygiene +^^^^^^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_dz2mvodl818d` + :t:`Definition site hygiene`, which resolves to a :s:`MacroRulesDeclaration` + site. :t:`[Identifier]s` with :t:`definition site hygiene` cannot reference + the environment of the :s:`MacroRulesDeclaration`, cannot be referenced by the + environment of a :s:`MacroInvocation`, and are considered :t:`hygienic`. + +.. _fls_4c6d8a092160: + +dereference +^^^^^^^^^^^ + +:dp:`fls_b892db6c437c` +A :t:`dereference` is the memory location produced by evaluating a +:t:`dereference expression`. + +.. _fls_279e2d890a7e: + +dereference expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0feed17f4cd7` +A :t:`dereference expression` is an :t:`expression` that obtains the pointed-to +memory location of its :t:`operand`. + +.. _fls_13101d5ba182: + +dereference type +^^^^^^^^^^^^^^^^ + +:dp:`fls_cf0f1578e5cf` +A :t:`dereference type` is either a :t:`reference type` or a :t:`type` that +implements the :std:`core::ops::Deref` :t:`trait`. + +.. _fls_9f1e0a4f5811: + +dereference type chain +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_df5ab755b386` +A :t:`dereference type chain` is a sequence of :t:`[dereference type]s`. A +:t:`dereference type chain` starts with an initial :t:`dereference type`. From +then on, the :t:`dereference type chain` continues as follows: + +.. _fls_2c8628122ea7: + +derivation attributes +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ed15d8a7dcca` +The following :t:`[built-in attribute]s` are :t:`[derivation attribute]s`: + +.. _fls_ba5d14493b65: + +derive +^^^^^^ + +:dp:`fls_3c8b909e3a75` +:t:`Attribute` :c:`derive` lists :t:`[derive macro]s` for automatic +implementation by a tool. + +.. _fls_b7d8f744df4e: + +derive helper attribute +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_647fa04e9025` +A :t:`derive helper attribute` is an :t:`inert attribute` that acts as a +hint to :t:`attribute` :c:`derive`. + +.. _fls_6f33d8e00f0e: + +derive macro +^^^^^^^^^^^^ + +:dp:`fls_741436e85b77` +A :t:`derive macro` is a :t:`procedural macro` that consumes a stream of +:t:`[token]s` and produces a stream of :t:`[token]s`. :t:`[Derive macro]s` are +used to construct new syntax for :t:`[abstract data type]s`. + +.. _fls_f9b69100c8fa: + +Destruction +^^^^^^^^^^^ + +:dp:`fls_5e8767a5fc36` +:t:`Destruction` is the process of recovering resources associated with a +:t:`value` as it goes out of scope. + +.. _fls_649703f5b6ff: + +destructor +^^^^^^^^^^ + +:dp:`fls_7386e023a781` +A :t:`destructor` is a :t:`function` that is invoked immediately before the +:t:`destruction` of a :t:`value` of a :t:`drop type`. + +.. _fls_43ce28cabea5: + +destructuring assignment +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_488fe450f308` +A :t:`destructuring assignment` is an :t:`assignment expression` where +the :t:`assignee operand` is either an :t:`array expression`, a :t:`struct +expression`, a :t:`tuple expression` or a :t:`tuple struct call expression`. + +.. _fls_3f4b8409c1b4: + +diagnostics attributes +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e97693236a8b` +The following :t:`[built-in attribute]s` are :t:`[diagnostics attribute]s`: + +.. _fls_aada56d5180b: + +direction modifier +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1b43d45d2b29` +A :t:`direction modifier` is a :t:`construct` that indicates whether a +:t:`register argument` initializes a :t:`register`, assigns the :t:`value` of a +:t:`register` to an :t:`expression`, or both. + +.. _fls_5e7dad75718c: + +discriminant +^^^^^^^^^^^^ + +:dp:`fls_b7dc08d528dc` +A :t:`discriminant` is an opaque integer that identifies an :t:`enum variant`. + +.. _fls_2c8c11ac18dd: + +discriminant initializer +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1a2f51a09d52` +A :t:`discriminant initializer` provides the :t:`value` of a +:t:`discriminant`. + +.. _fls_262a2b03545e: + +discriminant type +^^^^^^^^^^^^^^^^^ + +:dp:`fls_4b07b819a023` +A :t:`discriminant type` is the :t:`type` of a :t:`discriminant`. + +.. _fls_a5129901b776: + +diverging expression +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c30f265dc212` +A :t:`diverging expression` is an :t:`expression` whose :t:`evaluation` causes +program flow to diverge from the normal :t:`evaluation` order. + +.. _fls_c8114573e80f: + +diverging type variable +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_edfad7bbffbf` +A :t:`diverging type variable` is a :t:`type variable` that can refer to any +:t:`type` and originates from a :t:`diverging expression`. + +.. _fls_282ce5b3fc33: + +division assignment +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5de8102a7c42` +A :t:`division assignment` is a :t:`division assignment expression`. + +.. _fls_3406266c2403: + +division assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4d58d646693a` +A :t:`division assignment expression` is a :t:`compound assignment expression` +that uses division. + +.. _fls_f44eab017d35: + +division expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_33af56153991` +A :t:`division expression` is an :t:`arithmetic expression` that uses division. + +.. _fls_548918d2ad19: + +doc +^^^ + +:dp:`fls_4a278c766a78` +:t:`Attribute` :c:`doc` associates documentation with a :t:`construct`. + +.. _fls_83fdf8bac880: + +doc comment +^^^^^^^^^^^ + +:dp:`fls_be559c603898` +A :t:`doc comment` is a :t:`comment` class that includes :t:`[inner block +doc]s`, :t:`[inner line doc]s`, :t:`[outer block doc]s`, and :t:`[outer line +doc]s`. + +.. _fls_d452254b000b: + +documentation attributes +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ac1c469803c8` +The following :t:`[built-in attribute]s` are :t:`[documentation attribute]s`: + +.. _fls_31317b9890e8: + +drop construct +^^^^^^^^^^^^^^ + +:dp:`fls_e5f863d833cb` +A :t:`drop construct` is a :t:`construct` that employs a :t:`drop scope`. The +following :t:`[construct]s` are :t:`[drop construct]s`: + +.. _fls_f8dfc0beabf0: + +Drop order +^^^^^^^^^^ + +:dp:`fls_c300b6de2ed8` +:t:`Drop order` is the order by which :t:`[value]s` are :t:`dropped` when a +:t:`drop scope` is left. + +.. _fls_f948aef728c1: + +drop scope +^^^^^^^^^^ + +:dp:`fls_b31130e10d22` +A :t:`drop scope` is a region of program text that governs the :t:`dropping` of +:t:`[value]s`. When control flow leaves a :t:`drop scope`, all :t:`[value]s` +associated with that :t:`drop scope` are :t:`dropped` based on a +:t:`drop order`. + +.. _fls_5c0a5c90b98a: + +Drop scope extension +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d2c624b4edea` +:t:`Drop scope extension` is the process of extending a :t:`drop scope` +associated with a :t:`temporary` to prevent the premature :t:`dropping` of the +:t:`temporary`. + +.. _fls_1512dcf3fb2b: + +drop type +^^^^^^^^^ + +:dp:`fls_a49d1357f979` +A :t:`drop type` is a :t:`type` that implements the :std:`core::ops::Drop` +:t:`trait` or contains a :t:`field` that has a :t:`drop type`. + +.. _fls_418c965da4f0: + +dropped +^^^^^^^ + +:dp:`fls_42f1c28417ff` +A :t:`value` is :t:`dropped` when its :t:`destructor` is invoked. + +.. _fls_274612617aea: + +Dropping +^^^^^^^^ + +:dp:`fls_08b71e96a01f` +:t:`Dropping` a :t:`value` is the act of invoking the :t:`destructor` of the +related :t:`type`. + +.. _fls_81033e657ad5: + +dynamically sized type +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2846602b9ca2` +A :t:`dynamically sized type` is a :t:`type` that does not implement the :std:`core::marker::Sized` :t:`trait`. + +.. _fls_ff10f7d789e6: + +Elaboration +^^^^^^^^^^^ + +:dp:`fls_8286c5b97c32` +:t:`Elaboration` is the process by which a :t:`declaration` achieves its runtime +effects. + +.. _fls_4013a0e8025e: + +element type +^^^^^^^^^^^^ + +:dp:`fls_21dce0275eb4` +An :t:`element type` is the :t:`type` of the elements of an :t:`array type` or +a :t:`slice type`. + +.. _fls_fa51e0c06286: + +elided +^^^^^^ + +:dp:`fls_0091ee73f366` +For :t:`elided`, see :t:`elided lifetime`. + +.. _fls_db6ecae62c76: + +elided lifetime +^^^^^^^^^^^^^^^ + +:dp:`fls_62ebe7078d18` +An :t:`elided lifetime` is either an :t:`unnamed lifetime` or a :t:`lifetime` +that has been explicitly omitted from a :t:`function signature` or an +:t:`implementation`. + +.. _fls_03fc14e8bd9c: + +else expression +^^^^^^^^^^^^^^^ + +:dp:`fls_b4ef4bfa357d` +An :t:`else expression` is an :t:`expression` that represents either a +:t:`block expression`, an :t:`if expression`, or an :t:`if let expression`. + +.. _fls_d0fdeefe031a: + +empty statement +^^^^^^^^^^^^^^^ + +:dp:`fls_8cc8c8681cb1` +An :t:`empty statement` is a :t:`statement` expressed as character 0x3B +(semicolon). + +.. _fls_3a57c162f99d: + +entity +^^^^^^ + +:dp:`fls_2541e8cff4a9` +An :t:`entity` is a :t:`construct` that can be referred to within program text, +usually via a :t:`field access expression` or a :t:`path`. + +.. _fls_42657977710b: + +enum +^^^^ + +:dp:`fls_dac78735aa2d` +An :t:`enum` is an :t:`item` that declares an :t:`enum type`. + +.. _fls_9dca3de32d7c: + +enum cast +^^^^^^^^^ + +* :dp:`fls_le6bchl25ewz` + An :t:`operand` of an :t:`enum type` and a target :t:`integer type` + perform :t:`enum cast`. An :t:`enum cast` converts the :t:`operand` to its + :t:`discriminant`, followed by a :t:`numeric cast`. + +.. _fls_cc2ac033b663: + +enum field +^^^^^^^^^^ + +:dp:`fls_ada0d73d0db2` +An :t:`enum field` is a :t:`field` of an :t:`enum variant`. + +.. _fls_89b9bb3dfd72: + +enum type +^^^^^^^^^ + +:dp:`fls_3a175de03a1c` +An :t:`enum type` is an :t:`abstract data type` that contains +:t:`[enum variant]s`. + +.. _fls_1dfcee353c75: + +enum value +^^^^^^^^^^ + +:dp:`fls_04ef223e5783` +An :t:`enum value` is a :t:`value` of an :t:`enum type`. + +.. _fls_4765faa6ef42: + +enum variant +^^^^^^^^^^^^ + +:dp:`fls_ccef008055e5` +An :t:`enum variant` is a :t:`construct` that declares one of the +possible variations of an :t:`enum`. + +.. _fls_99bafbaec6f5: + +enum variant value +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_93502a9f8ed9` +An :t:`enum variant value` is the :t:`enum value` of the corresponding +:t:`enum` of the :t:`enum variant`. + +.. _fls_0c4e8920e856: + +equals expression +^^^^^^^^^^^^^^^^^ + +:dp:`fls_a1f6bf87584e` +An :t:`equals expression` is a :t:`comparison expression` that tests equality. + +.. _fls_d1ff9a8d6bc7: + +error propagation expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b1278d31d283` +An :t:`error propagation expression` is an :t:`expression` that either evaluates +to a :t:`value` of its :t:`operand` or returns a value to the enclosing control +flow boundary. + +.. _fls_3666ee6aa084: + +escaped character +^^^^^^^^^^^^^^^^^ + +:dp:`fls_986e747f1045` +An :t:`escaped character` is the textual representation for a character with +special meaning. An escaped character consists of character 0x5C (reverse +solidus), followed by the single character encoding of the special meaning +character. For example, ``\t`` is the escaped character for 0x09 (horizontal +tabulation). + +.. _fls_277fb110ff5f: + +evaluated +^^^^^^^^^ + +:dp:`fls_d2838754b5ab` +For :t:`evaluated`, see :t:`evaluation`. + +.. _fls_d212d7e6ff93: + +Evaluation +^^^^^^^^^^ + +:dp:`fls_d1dd111c2521` +:t:`Evaluation` is the process by which an :t:`expression` achieves its runtime +effects. + +.. _fls_5c2bd3f8fb6b: + +exclusive range pattern +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f47122368f7e` +An :t:`exclusive range pattern` is a :t:`range pattern` with both a +:t:`range pattern low bound` and a :t:`range pattern high bound`. + +.. _fls_9717f29de810: + +executed +^^^^^^^^ + +:dp:`fls_939ac634735d` +For :t:`executed`, see :t:`execution`. + +.. _fls_ac8c11ae9aa2: + +Execution +^^^^^^^^^ + +:dp:`fls_d1fc8539f25f` +:t:`Execution` is the process by which a :t:`statement` achieves its runtime +effects. + +.. _fls_b1863bab4eb8: + +expected type +^^^^^^^^^^^^^ + +:dp:`fls_e8bc9967d3dc` +A :t:`type inference root` imposes an :t:`expected type` on its :t:`expression` +depending on the :t:`type inference root` as follows: + +.. _fls_d14882803dd1: + +explicit register argument +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_60af7e580a5a` +An :t:`explicit register argument` is a :t:`register argument` that uses an +:t:`explicit register name`. + +.. _fls_f7abee4bfdec: + +explicit register name +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c62405280871` +An :t:`explicit register name` is a target-specific string that identifies +a :t:`register`. + +.. _fls_76052d22e336: + +explicitly declared entity +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c86d2841a4a6` +An :t:`explicitly declared entity` is an :t:`entity` that has a +:t:`declaration`. The following :t:`entities ` are +:t:`explicitly declared entities `: + +.. _fls_a41c581214f2: + +export_name +^^^^^^^^^^^ + +:dp:`fls_571189b577db` +:t:`Attribute` :c:`export_name` shall specify the exported symbol of the +related :t:`function` or :t:`static`. + +.. _fls_bd4441289296: + +exported function +^^^^^^^^^^^^^^^^^ + +:dp:`fls_7650267b0ada` +An :t:`exported function` is a :t:`function` subject to :t:`attribute` +:c:`no_mangle`. + +.. _fls_23bdcea70110: + +exported static +^^^^^^^^^^^^^^^ + +:dp:`fls_bebede8fd33d` +An :t:`exported static` is a :t:`static` subject to :t:`attribute` +:c:`no_mangle`. + +.. _fls_c0e533d3bf01: + +expression +^^^^^^^^^^ + +:dp:`fls_15fdde1f192d` +An :t:`expression` is a :t:`construct` that produces a :t:`value`, and may have +side effects at run-time. + +.. _fls_997793fc8d2c: + +expression statement +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_bdf46f3e3ff5` +An :t:`expression statement` is an :t:`expression` whose result is ignored. + +.. _fls_ed8bf608226f: + +expression-with-block +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ed33ad09e4f7` +An :t:`expression-with-block` is an :t:`expression` whose structure involves a +:t:`block expression`. + +.. _fls_722630e65795: + +expression-without-block +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a2380445c7e1` +An :t:`expression-without-block` is an :t:`expression` whose structure does not +involve a :t:`block expression`. + +.. _fls_b2869f0b95b7: + +extending expression +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_73d73c5ae2ee` +An :t:`extending expression` is an :t:`expression` with an +:t:`extended drop scope `. + +.. _fls_3e21fdf1c3f4: + +extending pattern +^^^^^^^^^^^^^^^^^ + +:dp:`fls_4792c5bc123b` +An :t:`extending pattern` is either + +.. _fls_4a4c4354513b: + +extern C ABI +^^^^^^^^^^^^ + +* :dp:`fls_x7ct9k82fpgn` + ``extern "C"`` - The default :t:`ABI` of :t:`C` code, referred to as + :t:`extern C ABI`. + +.. _fls_edf2f26ff41c: + +external block +^^^^^^^^^^^^^^ + +:dp:`fls_7b7de34c508d` +An :t:`external block` is a :t:`construct` that provides the declarations of +:t:`[external function]s` and :t:`[external static]s` as unchecked imports. + +.. _fls_2559fb62cb0b: + +external function +^^^^^^^^^^^^^^^^^ + +:dp:`fls_9ef8a81a0b2f` +An :t:`external function` is an unchecked import of a foreign :t:`function`. + +.. _fls_aa65b0641edc: + +external function item type +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b256ffd0b2ba` +An :t:`external function item type` is a :t:`function item type` where the +related :t:`function` is an :t:`external function`. + +.. _fls_f221c16c7e91: + +external prelude +^^^^^^^^^^^^^^^^ + +:dp:`fls_eaf5640121b7` +An :t:`external prelude` is a :t:`prelude` that brings :t:`in scope` of the +:t:`crate root module` the :t:`entities ` of the :t:`[crate]s` imported +using external :t:`[crate import]s` or supplied by a tool. If the external +:t:`crate import` uses a :t:`renaming`, then the :t:`identifier` of the +:t:`renaming` is instead added to the :t:`external prelude`. The core +:t:`crate` is always added to the :t:`external prelude` unless the :t:`crate +root` is subject to :t:`attribute` ``no_core``. + +.. _fls_154157a146f1: + +external static +^^^^^^^^^^^^^^^ + +:dp:`fls_7ba130bc3e3d` +An :t:`external static` is an import of a foreign :t:`variable`. + +.. _fls_deaf29cbeccf: + +f32 +^^^ + +:dp:`fls_53e77d015e8e` +:c:`f32` is a :t:`floating-point type` equivalent to the IEEE 754-2008 +binary32 :t:`type`. + +.. _fls_e7607ab8b842: + +f64 +^^^ + +:dp:`fls_1c5466c4b127` +:c:`f64` is a :t:`floating-point type` equivalent to the IEEE 754-2008 +binary64 :t:`type`. + +.. _fls_7a22634aa3fe: + +false +^^^^^ + +:dp:`fls_b6f2234dd9d5` +:t:`Configuration predicate` :c:`false` always evaluates statically to ``false``. + +.. _fls_cb4bc1f70696: + +fat pointer +^^^^^^^^^^^ + +:dp:`fls_386d2c778a68` +A :t:`fat pointer` is a :t:`value` of a :t:`fat pointer type`. + +.. _fls_dc432b9733b4: + +fat pointer type +^^^^^^^^^^^^^^^^ + +:dp:`fls_de4c06b786b7` +A :t:`fat pointer type` is an :t:`indirection type` whose contained :t:`type specification` is a :t:`dynamically sized type`. + +.. _fls_9c7812456b8d: + +FFI +^^^ + +:dp:`fls_c530b61075a3` +:t:`FFI` is an abbreviation for :t:`Foreign Function Interface`. + +.. _fls_ec46d3451448: + +field +^^^^^ + +:dp:`fls_a592e41bb6b2` +A :t:`field` is an element of an :t:`abstract data type`. + +.. _fls_d8d272b26a36: + +field access expression +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0fd4441c8017` +A :t:`field access expression` is an :t:`expression` that accesses a :t:`field` +of a :t:`value`. + +.. _fls_0713b30b42f4: + +field index +^^^^^^^^^^^ + +:dp:`fls_0ec6c0c5a896` +A :t:`field index` is the position of a :t:`field` within a +:t:`tuple struct type` or :t:`tuple enum variant`. The first :t:`field` has a +:t:`field index` of zero, the Nth :t:`field` has a :t:`field index` of N-1. + +.. _fls_fba07feb19f1: + +field list +^^^^^^^^^^ + +:dp:`fls_b62aaefc7b3c` +A :t:`field list` is a :s:`RecordStructFieldList` or a +:s:`TupleStructFieldList`. + +.. _fls_86938080c294: + +Field resolution +^^^^^^^^^^^^^^^^ + +:dp:`fls_76974f3ae231` +:t:`Field resolution` is a form of :t:`resolution` that applies to a +:t:`field access expression`. + +.. _fls_1a208902a958: + +field selector +^^^^^^^^^^^^^^ + +:dp:`fls_8aba238d2762` +A :t:`field selector` is a :t:`construct` that selects the :t:`field` to be +accessed in a :t:`field access expression`. + +.. _fls_dfc9d983c79c: + +final match arm +^^^^^^^^^^^^^^^ + +:dp:`fls_723056e1c88c` +A :t:`final match arm` is the last :t:`match arm` of a :t:`match expression`. + +.. _fls_69dc7bbc2f92: + +fixed sized type +^^^^^^^^^^^^^^^^ + +:dp:`fls_ec6d983f2c52` +A :t:`fixed sized type` is a :t:`type` that implements the +:std:`core::marker::Sized` :t:`trait`. + +.. _fls_110584c108d3: + +float literal +^^^^^^^^^^^^^ + +:dp:`fls_657212296f89` +A :t:`float literal` is a :t:`numeric literal` that denotes a fractional number. + +.. _fls_82737b38a8eb: + +float suffix +^^^^^^^^^^^^ + +:dp:`fls_a35e710864c3` +A :t:`float suffix` is a component of a :t:`float literal` that specifies an +explicit :t:`floating-point type`. + +.. _fls_9be00d9b1263: + +floating-point type +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f7c445cb32a4` +A :t:`floating-point type` is a :t:`numeric type` whose :t:`[value]s` denote +fractional numbers. + +.. _fls_c4e93e52f0b1: + +floating-point type variable +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7b45bfc986b5` +A :t:`floating-point type variable` is a :t:`type variable` that can refer only +to :t:`[floating-point type]s`. + +.. _fls_7cb593ab7618: + +floating-point value +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_09eaca3881a4` +A :t:`floating-point value` is a :t:`value` of a :t:`floating-point type`. + +.. _fls_47ab2f51feaa: + +for loop +^^^^^^^^ + +:dp:`fls_4e7fa1eff612` +For :t:`for loop`, see :t:`for loop expression`. + +.. _fls_2d836ce80b64: + +for loop expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_77b6798ca015` +A :t:`for loop expression` is a :t:`loop expression` that continues to evaluate +its :t:`loop body` as long as its :t:`subject expression` yields a :t:`value`. + +.. _fls_beeda2eb5ff5: + +Foreign Function Interface +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4f9f882fc3c7` +A :t:`Foreign Function Interface` employs :t:`ABI`, :t:`[attribute]s`, +:t:`[external block]s`, :t:`[external function]s`, linkage, and :t:`type` +:t:`layout` to interface a Rust program with foreign code. + +.. _fls_6d3fda4d97a0: + +foreign function interface attributes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9ddfa6ea72b5` +The following :t:`[built-in attribute]s` are +:t:`[foreign function interface attribute]s`: + +.. _fls_e45f13d9a496: + +fragment specifier +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_41fac56483a6` +A :t:`fragment specifier` is a :t:`construct` that indicates the :t:`type` of +a :t:`metavariable`. + +.. _fls_bac8118b5fee: + +fragment specifier restrictions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ad7a3cf24c8c` +:t:`Fragment specifier` kinds impose the following +:t:`[fragment specifier restriction]s` on the :t:`[token]s` that follow them: + +.. _fls_9e998c8a0814: + +full range expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_35a0fd1a1b82` +A :t:`full range expression` is a :t:`range expression` that covers the whole +range of a :t:`type`. + +.. _fls_7539cc7205f8: + +function +^^^^^^^^ + +:dp:`fls_6bbaaa74d93c` +A :t:`function` is a :t:`value` of a :t:`function type` that models a behavior. + +.. _fls_78a60bdee5a3: + +function body +^^^^^^^^^^^^^ + +:dp:`fls_cb8473b697f5` +A :t:`function body` is the :t:`block expression` of a :t:`function`. + +.. _fls_975c549661c4: + +function item type +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b200316ed366` +A :t:`function item type` is a unique anonymous :t:`function type` that +identifies a :t:`function`. + +.. _fls_161e625eb725: + +Function lifetime elision +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e2ba4c96cd3c` +:t:`Function lifetime elision` is a form of :t:`lifetime elision` that applies +to :t:`[function]s`, :t:`[function pointer type parameter]s`, and :t:`[path]s` +that resolve to one of the :std:`core::ops::Fn`, :std:`core::ops::FnMut`, and +:std:`core::ops::FnOnce` :t:`[trait]s`. + +.. _fls_c4878e935eaa: + +function parameter +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0a66d184d1f4` +A :t:`function parameter` is a :t:`construct` that yields a set of +:t:`[binding]s` that bind matched input :t:`[value]s` to :t:`[name]s` at the +site of a :t:`call expression` or a :t:`method call expression`. + +.. _fls_6655c9c9e5e9: + +function pointer type +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5c0e9672e936` +A :t:`function pointer type` is an :t:`indirection type` that refers to a +:t:`function`. + +.. _fls_38f79aae3b9b: + +function pointer type parameter +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_969c4c6c38fc` +A :t:`function pointer type parameter` is a :t:`function parameter` of a +:t:`function pointer type`. + +.. _fls_50a82a0c6102: + +function qualifier +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f2ca41b6329b` +A :t:`function qualifier` is a :t:`construct` that determines the role of +a :t:`function`. + +.. _fls_4e17c238da65: + +function signature +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_681e62ee6d3e` +A :t:`function signature` is a unique identification of a :t:`function` +that encompasses of its :t:`[function qualifier]s`, :t:`name`, +:t:`[generic parameter]s`, :t:`[function parameter]s`, :t:`return type`, and +:t:`where clause`. + +.. _fls_a1fdfb18b553: + +function type +^^^^^^^^^^^^^ + +:dp:`fls_b6a7bcfa13b5` +A :t:`function type` is either a :t:`closure type` or a +:t:`function item type`. + +.. _fls_6ef1966415dd: + +function-like macro +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ab0ceb4a4948` +A :t:`function-like macro` is a :t:`procedural macro` that consumes a stream of +:t:`[token]s` and produces a stream of :t:`[token]s`. + +.. _fls_6eaee0e6629e: + +function-pointer-to-address cast +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_bhw2j9wjpf2x` + An :t:`operand` of a :t:`function pointer type` and a target :t:`integer type` + perform :t:`function-pointer-to-address cast`. A + :t:`function-pointer-to-address cast` produces an integer that represents the + machine address of the referenced :t:`function`. If the :t:`integer type` is + smaller than the size of the :t:`function pointer type`, the address is + truncated. + +.. _fls_ba761ba4254d: + +function-pointer-to-pointer cast +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_133j6xw8k4qe` + An :t:`operand` of a :t:`function pointer type` and a :t:`target type` + ``*const V`` or ``*mut V`` where ``V`` implements the + :std:`core::marker::Sized` :t:`trait` perform + :t:`function-pointer-to-pointer cast`. + +.. _fls_f41808395088: + +fundamental +^^^^^^^^^^^ + +:dp:`fls_567263ac3f61` +A :t:`trait` or :t:`type` is :t:`fundamental` when its +:t:`implementation coherence` rules are relaxed and the :t:`trait` or :t:`type` +is always treated as if it was a :t:`local trait` or a :t:`local type`. + +.. _fls_d0f0a9f0001b: + +future +^^^^^^ + +:dp:`fls_9e8fc88a463e` +A :t:`future` represents a :t:`value` of a :t:`type` that implements the +:std:`core::future::Future` :t:`trait` which may not have finished computing +yet. + +.. _fls_f05bcde4e0d7: + +future operand +^^^^^^^^^^^^^^ + +:dp:`fls_fb500197410e` +A :t:`future operand` is an :t:`operand` whose :t:`future` is being awaited by +an :t:`await expression`. + +.. _fls_4e981db9ccfb: + +generic argument +^^^^^^^^^^^^^^^^ + +:dp:`fls_43587fe5db25` +A :t:`generic argument` supplies a static input for an +:t:`associated trait type` or a :t:`generic parameter`. + +.. _fls_47351eb4a3b9: + +generic associated type +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7673b35c001f` +A :t:`generic associated type` is an :t:`associated type` with +:t:`[generic parameter]s`. + +.. _fls_a2a086a1c663: + +Generic conformance +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_87f3d0b0a433` +:t:`Generic conformance` measures the compatibility between a set of +:t:`[generic parameter]s` and a set of :t:`[generic argument]s`. + +.. _fls_8a677b3098dc: + +generic enum +^^^^^^^^^^^^ + +:dp:`fls_007bfee7b4f4` +A :t:`generic enum` is an :t:`enum` with :t:`[generic parameter]s`. + +.. _fls_9d46eaad576a: + +generic function +^^^^^^^^^^^^^^^^ + +:dp:`fls_1e48b0228cbe` +A :t:`generic function` is a :t:`function` with :t:`[generic parameter]s`. + +.. _fls_6eef328a16ef: + +generic implementation +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_fac0f84c497d` +A :t:`generic implementation` is an :t:`implementation` with +:t:`[generic parameter]s`. + +.. _fls_14a836f3f7f7: + +generic parameter +^^^^^^^^^^^^^^^^^ + +:dp:`fls_a611997a89a2` +A :t:`generic parameter` is a placeholder for a :t:`constant`, a :t:`lifetime`, +or a :t:`type`, whose :t:`constant`, :t:`lifetime`, or :t:`type` is supplied +statically by a :t:`generic argument`. + +.. _fls_d22af74cdc23: + +generic parameter scope +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_443e80b7e0d2` +A :t:`generic parameter scope` is a :t:`scope` for :t:`[generic parameter]s`. + +.. _fls_b600539f4045: + +generic struct +^^^^^^^^^^^^^^ + +:dp:`fls_aff9e5f0e353` +A :t:`generic struct` is a :t:`struct` with :t:`[generic parameter]s`. + +.. _fls_95aa5f82d63d: + +generic substitution +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_28308e0c55b2` +A :t:`generic substitution` is the replacement of a :t:`generic parameter` +with a :t:`generic argument`. + +.. _fls_3e62a5a63671: + +generic trait +^^^^^^^^^^^^^ + +:dp:`fls_1955b2641bdb` +A :t:`generic trait` is a :t:`trait` with :t:`[generic parameter]s`. + +.. _fls_d655bc26dcad: + +generic type +^^^^^^^^^^^^ + +:dp:`fls_642047426de4` +A :t:`generic type` is a :t:`type` with a :t:`generic parameter`. + +.. _fls_d6bf2b1876f7: + +generic type alias +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a05895047a54` +A :t:`generic type alias` is a :t:`type alias` with :t:`[generic parameter]s`. + +.. _fls_26a04271ea24: + +generic union +^^^^^^^^^^^^^ + +:dp:`fls_020818aa908c` +A :t:`generic union` is a :t:`union` with :t:`[generic parameter]s`. + +.. _fls_5a441a20228a: + +glob import +^^^^^^^^^^^ + +:dp:`fls_e2586ca20e10` +A :t:`glob import` is a :t:`use import` that brings all :t:`entities ` +exported by the :t:`module` or :t:`enum` its :t:`import path prefix` resolves to +into :t:`scope`. + +.. _fls_d9004ee09364: + +global path +^^^^^^^^^^^ + +:dp:`fls_ed8a7651f822` +A :t:`global path` is a :t:`path` that starts with :t:`namespace qualifier` +``::``. + +.. _fls_a9403f550ca5: + +global type variable +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d228f7862d42` +A :t:`global type variable` is a :t:`type variable` that can refer to any +:t:`type`. + +.. _fls_20a969bf4fd3: + +global_allocator +^^^^^^^^^^^^^^^^ + +:dp:`fls_d771eaa7b61b` +:t:`Attribute` :c:`global_allocator` sets the global allocator to the related +:t:`static`. + +.. _fls_a9362ba09997: + +greater-than expression +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_72087410a6df` +A :t:`greater-than expression` is a :t:`comparison expression` that tests for a +greater-than relationship. + +.. _fls_6764f92a1053: + +greater-than-or-equals expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d745d950b184` +A :t:`greater-than-or-equals expression` is a :t:`comparison expression` that +tests for a greater-than-or-equals relationship. + +.. _fls_f0856de669a7: + +half-open range pattern +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1f764fc0815f` +A :t:`half-open range pattern` is a :t:`range pattern` with only a +:t:`range pattern low bound`. + +.. _fls_3c0e92e1a424: + +hexadecimal literal +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a3a2a1f55aa7` +A :t:`hexadecimal literal` is an :t:`integer literal` in base 16. + +.. _fls_022999c35909: + +higher-ranked trait bound +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d7b5e962730b` +A :t:`higher-ranked trait bound` is a :t:`bound` that specifies an infinite +list of :t:`[bound]s` for all possible :t:`[lifetime]s` specified by the +:s:`ForGenericParameterList`. + +.. _fls_7d761b476834: + +hygiene +^^^^^^^ + +:dp:`fls_bb6aed8a81fb` +The :t:`hygiene` of :t:`[macro]s` and :t:`[identifier]s` that appear within +them is a property that aims to eliminate the syntactic interference between a +:t:`macro` and its environment. + +.. _fls_e3309059a371: + +hygienic +^^^^^^^^ + +:dp:`fls_335573a10d91` +An :t:`identifier` is :t:`hygienic` when it has :t:`definition site hygiene`. + +.. _fls_fd25b696d329: + +i8 +^^ + +:dp:`fls_2f3c9e8ac30a` +:c:`i8` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ +:sup:`7`) to 2\ :sup:`7` - 1, all inclusive. + +.. _fls_9c4e3065f196: + +i16 +^^^ + +:dp:`fls_5c4a2b808052` +:c:`i16` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ +:sup:`15`) to 2\ :sup:`15` - 1, all inclusive. + +.. _fls_7dbac6770e59: + +i32 +^^^ + +:dp:`fls_5a3fb7d5c87b` +:c:`i32` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ +:sup:`31`) to 2\ :sup:`31` - 1, all inclusive. + +.. _fls_46c92f46aeaa: + +i64 +^^^ + +:dp:`fls_3701d9ce2d75` +:c:`i64` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ +:sup:`63`) to 2\ :sup:`63` - 1, all inclusive. + +.. _fls_bcff093f6d61: + +i128 +^^^^ + +:dp:`fls_c0de007bd67a` +:c:`i128` is a :t:`signed integer type` whose :t:`[value]s` range from - (2\ +:sup:`127`) to 2\ :sup:`127` - 1, all inclusive. + +.. _fls_f62f3b7aa112: + +identifier +^^^^^^^^^^ + +:dp:`fls_d03cac426203` +An :t:`identifier` is a :t:`lexical element` that refers to a :t:`name`. + +.. _fls_edb68bf9e89d: + +identifier pattern +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e89df538aa9d` +An :t:`identifier pattern` is a :t:`pattern` that binds the :t:`value` it +matches to a :t:`binding`. + +.. _fls_3aa8f1151cac: + +Identifier pattern matching +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e0aa2cf10395` +:t:`Identifier pattern matching` proceeds as follows: + +.. _fls_154f24131aec: + +if expression +^^^^^^^^^^^^^ + +:dp:`fls_24c216441eb9` +An :t:`if expression` is an :t:`expression` that evaluates either a +:t:`block expression` or an :t:`else expression` depending on the :t:`value` of +its :t:`subject expression`. + +.. _fls_ec8562b35f43: + +if let expression +^^^^^^^^^^^^^^^^^ + +:dp:`fls_e594425dddcb` +An :t:`if let expression` is an :t:`expression` that evaluates either a +:t:`block expression` or an :t:`else expression` depending on whether its +:t:`pattern` can be matched against its :t:`subject let expression`. + +.. _fls_cf162fd06d0c: + +ignore +^^^^^^ + +:dp:`fls_f1d0da4d5d0e` +:t:`Attribute` :c:`ignore` prevents the execution of its related +:t:`testing function`. + +.. _fls_73894aeaaf9d: + +immutable +^^^^^^^^^ + +:dp:`fls_64b44ea81938` +A :t:`value` is :t:`immutable` when it cannot be modified. + +.. _fls_f6fd6e15626a: + +immutable borrow +^^^^^^^^^^^^^^^^ + +:dp:`fls_f87794159dd8` +An :t:`immutable borrow` is an :t:`immutable reference` produced by +:t:`borrowing`. + +.. _fls_4b16bdc42373: + +immutable borrow expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_266c9337b4e8` +An :t:`immutable borrow expression` is a :t:`borrow expression` that lacks +:t:`keyword` ``mut``. + +.. _fls_11b3cb1f37a6: + +immutable place expression +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a4d3f199b412` +An :t:`immutable place expression` is a :t:`place expression` whose memory +location cannot be modified. All :t:`[place expression]s` that are not +:t:`[mutable place expression]s` are :t:`[immutable place expression]s`. + +.. _fls_e6f45710ac9c: + +immutable place expression context +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b88d02bec719` +An :t:`immutable place expression context` is a :t:`place expression context` +that may evaluate its :t:`operand` as an immutable memory location. All +:t:`[place expression context]s` that are not +:t:`[mutable place expression context]s` are +:t:`[immutable place expression context]s`. + +.. _fls_049c0871aa01: + +immutable raw borrow expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_881533654286` +An :t:`immutable raw borrow expression` is a :t:`raw borrow expression` that has :t:`keyword` ``const``. + +.. _fls_9e27a6d806a6: + +immutable raw pointer type +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5a5be816f958` +An :t:`immutable raw pointer type` is a :t:`raw pointer type` subject to +:t:`keyword` ``const``. + +.. _fls_7319b7c0a811: + +immutable reference +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d7771c88193d` +An :t:`immutable reference` is a :t:`value` of a :t:`shared reference type`, and +prevents the mutation of its :t:`referent`. + +.. _fls_2b740bb29d62: + +immutable static +^^^^^^^^^^^^^^^^ + +:dp:`fls_bc357b526df6` +An :t:`immutable static` is a :t:`static` whose :t:`value` cannot be modified. + +.. _fls_54bb1fdbfff1: + +immutable variable +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_6e343b2f97db` +An :t:`immutable variable` is a :t:`variable` whose :t:`value` cannot be +modified. + +.. _fls_d6305befe717: + +Impl header lifetime elision +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_13d64b18baa6` +:t:`Impl header lifetime elision` is a form of :t:`lifetime elision` that +applies to the :t:`implementing type` and :t:`implemented trait` (if any) of an +:t:`implementation`. + +.. _fls_ccfa2e7ec79e: + +impl trait type +^^^^^^^^^^^^^^^ + +:dp:`fls_df85b8db0e16` +An :t:`impl trait type` is a :t:`type` that implements a :t:`trait`, where the +:t:`type` is known at compile time. + +.. _fls_a10f40d754e1: + +implementation +^^^^^^^^^^^^^^ + +:dp:`fls_266b341466ee` +An :t:`implementation` is an :t:`item` that supplements an +:t:`implementing type` by extending its functionality. + +.. _fls_093d97670913: + +implementation body +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_fc4c15b34d51` +An :t:`implementation body` is a :t:`construct` that encapsulates the +:t:`[associated item]s`, :t:`[inner attribute]s`, and +:t:`[inner doc comment]s` of an :t:`implementation`. + +.. _fls_9226cad59a84: + +implementation coherence +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a7795dae8a26` +A :t:`trait implementation` exhibits :t:`implementation coherence` when it is +valid and does not overlap with another :t:`trait implementation`. + +.. _fls_13776e7cf1f7: + +implementation conformance +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_fba7adaa033a` +A :t:`trait implementation` exhibits :t:`implementation conformance` when it +satisfies the constraints of its :t:`implemented trait`. + +.. _fls_7842db27ce69: + +implemented trait +^^^^^^^^^^^^^^^^^ + +:dp:`fls_31f7f9f643a9` +An :t:`implemented trait` is a :t:`trait` whose functionality has been +implemented by an :t:`implementing type`. + +.. _fls_03d9e5405555: + +implementing type +^^^^^^^^^^^^^^^^^ + +:dp:`fls_0b222e031594` +An :t:`implementing type` is the :t:`type` that the :t:`[associated item]s` of +an :t:`implementation` are associated with. + +.. _fls_27a816a03ca0: + +implicit borrow +^^^^^^^^^^^^^^^ + +:dp:`fls_c791ad74680f` +An :t:`implicit borrow` is a :t:`borrow` that is not present syntactically in +program text. An :t:`implicit borrow` occurs in the following contexts: + +.. _fls_62671139cdeb: + +implicitly declared entity +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_846de1ee4d96` +An :t:`implicitly declared entity` is an :t:`entity` that lacks an explicit +:t:`declaration`. The following :t:`entities ` are +:t:`implicitly declared entities `: + +.. _fls_1d3b921b6e57: + +implied bound +^^^^^^^^^^^^^ + +:dp:`fls_211e3343f09b` +An :t:`implied bound` is a :t:`bound` that is not expressed in syntax, but is +is the byproduct of relations between :t:`[lifetime parameter]s` and +:t:`[function parameter]s`, between :t:`[lifetime parameter]s` and a +:t:`return type`, and between :t:`[lifetime parameter]s` and :t:`[field]s`. + +.. _fls_bc729ae51201: + +import path prefix +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2e79fff055c0` +An :t:`import path prefix` is the fully constructed :t:`path` prefix of a +:t:`use import`. An :t:`import path prefix` for a given +:t:`simple import` or :t:`glob import` is constructed as follows: + +.. _fls_e5565491310d: + +in scope +^^^^^^^^ + +:dp:`fls_ed6f9aaaddc4` +A :t:`scope` is a region of program text where an :t:`entity` can be referred +to. An :t:`entity` is :t:`in scope` when it can be referred to. + +.. _fls_aa51399f9f4e: + +inclusive range pattern +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_aeda73d3e609` +An :t:`inclusive range pattern` is a :t:`range pattern` with both a +:t:`range pattern low bound` and a :t:`range pattern high bound`. + +.. _fls_2b470ec12f70: + +incomplete associated constant +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4c890465991a` +An :t:`incomplete associated constant` is an :t:`associated constant` without +a :t:`constant initializer`. + +.. _fls_6da47379d6d1: + +incomplete associated function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4cf28e1dca04` +An :t:`incomplete associated function` is an :t:`associated function` without +a :t:`function body`. + +.. _fls_8737a3562238: + +incomplete associated type +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_12ac1fce1035` +An :t:`incomplete associated type` is an :t:`associated type` without an +:t:`initialization type`. + +.. _fls_acc57b28a855: + +index expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_48d3968d6a92` +An :t:`index expression` is an :t:`expression` that indexes into a :t:`value` +of an :t:`indexable type`. + +.. _fls_3095fba5b882: + +indexable type +^^^^^^^^^^^^^^ + +:dp:`fls_64b4ecf2b8fe` +An :t:`indexable type` is a :t:`type` that implements the +:std:`core::ops::Index` :t:`trait`. + +.. _fls_583f78462084: + +indexed deconstructor +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e6a2ef8502ed` +An :t:`indexed deconstructor` is a :t:`construct` that matches the position of +a :t:`field`. + +.. _fls_94161e0f0431: + +indexed field selector +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_8a982a186235` +An :t:`indexed field selector` is a :t:`field selector` where the selected +:t:`field` is indicated by an index. + +.. _fls_feba2248f179: + +indexed initializer +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4f70ebe1b374` +An :t:`indexed initializer` is a :t:`construct` that specifies the index and +initial :t:`value` of a :t:`field` in a :t:`struct expression`. + +.. _fls_c7bbf0edcdbb: + +indexed operand +^^^^^^^^^^^^^^^ + +:dp:`fls_0228442b5dc0` +An :t:`indexed operand` is an :t:`operand` which indicates the :t:`value` +being indexed into by an :t:`index expression`. + +.. _fls_fb2df9f0449f: + +indexing operand +^^^^^^^^^^^^^^^^ + +:dp:`fls_eb6bee2bb2e6` +An :t:`indexing operand` is an :t:`operand` which specifies the index of an +:t:`index expression`. + +.. _fls_f67c8621f59c: + +indirection type +^^^^^^^^^^^^^^^^ + +:dp:`fls_62ff3f80c8da` +An :t:`indirection type` is a :t:`type` whose :t:`[value]s` refer to memory +locations. + +.. _fls_c5fa426a5582: + +inert attribute +^^^^^^^^^^^^^^^ + +:dp:`fls_962e5e08eb2f` +An :t:`inert attribute` is an :t:`attribute` that remains with the :t:`item` +it decorates. + +.. _fls_653449c251fe: + +inferred constant +^^^^^^^^^^^^^^^^^ + +:dp:`fls_414568c7ddbd` +An :t:`inferred constant` is a :t:`constant argument` whose :t:`value` is +inferred from the surrounding context by using ``_`` (underscore) in its place. + +.. _fls_0a5f4313cfc2: + +inferred type +^^^^^^^^^^^^^ + +:dp:`fls_b04eec67c389` +An :t:`inferred type` is a placeholder for a :t:`type` deduced by +:t:`type inference`. + +.. _fls_860edc05cd0d: + +infinite loop +^^^^^^^^^^^^^ + +:dp:`fls_346edbb80d92` +For :t:`infinite loop`, see :t:`infinite loop expression`. + +.. _fls_84ed092c4da3: + +infinite loop expression +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f9e136bb9c10` +An :t:`infinite loop expression` is a :t:`loop expression` that continues to +evaluate its :t:`loop body` indefinitely. + +.. _fls_f4c4c33abd56: + +inherent implementation +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_97281ebe0d13` +An :t:`inherent implementation` is an :t:`implementation` that adds direct +functionality. + +.. _fls_438e24f69fe1: + +Initialization +^^^^^^^^^^^^^^ + +:dp:`fls_65b03667caff` +:t:`Initialization` is the act of supplying an initial :t:`value` to a +:t:`constant`, a :t:`static`, or a :t:`variable`. + +.. _fls_2d4579dbf9b2: + +initialization expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b492e8fcb23c` +An :t:`initialization expression` is either a :t:`constant initializer` or a +:t:`static initializer`. + +.. _fls_25d47c8bf0c7: + +initialization type +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e3debae7db09` +An :t:`initialization type` is the :t:`type` a :t:`type alias` defines a +:t:`name` for. + +.. _fls_81015f33a954: + +initialized +^^^^^^^^^^^ + +:dp:`fls_4dca37b24925` +When a :t:`variable` holds a :t:`value`, the :t:`variable` is considered to be +:t:`initialized`. + +.. _fls_4840094085b2: + +inline +^^^^^^ + +:dp:`fls_23e190446fb0` +:t:`Attribute` :c:`inline` marks its related :t:`function` as :t:`inlined`. + +.. _fls_0f0b7cd73a4f: + +Inline assembly +^^^^^^^^^^^^^^^ + +:dp:`fls_e8407c3f0bae` +:t:`Inline assembly` is hand-written assembly code that is integrated into a +Rust program. + +.. _fls_7d7f061be1d6: + +inline module +^^^^^^^^^^^^^ + +:dp:`fls_1a3b1689c428` +An :t:`inline module` is a :t:`module` with an :s:`InlineModuleSpecification`. + +.. _fls_cb4fbef24fc9: + +inlined +^^^^^^^ + +:dp:`fls_f43434e4bf95` +:t:`Attribute` :c:`inline` marks its related :t:`function` as :t:`inlined`. + +.. _fls_fce693db7b6f: + +inlining +^^^^^^^^ + +:dp:`fls_15d0aefe9be9` +The process of replacing a :t:`call expression` to an :t:`inlined` :t:`function` +with the :t:`function body` is referred to as :t:`inlining`. + +.. _fls_43ff9d8f5d4d: + +inner attribute +^^^^^^^^^^^^^^^ + +:dp:`fls_bbdcdf7658c9` +An :t:`inner attribute` is an :t:`attribute` that applies to an enclosing +:t:`item`. + +.. _fls_795afa9d7976: + +inner block doc +^^^^^^^^^^^^^^^ + +:dp:`fls_54012fed8c36` +An :t:`inner block doc` is a :t:`block comment` that applies to an enclosing +:t:`non-[comment]` :t:`construct`. + +.. _fls_476e0779ed23: + +inner doc comment +^^^^^^^^^^^^^^^^^ + +:dp:`fls_76089c856876` +An :t:`inner doc comment` is either an :t:`inner block doc` or an +:t:`inner line doc`. + +.. _fls_dfe0658b7ad6: + +inner line doc +^^^^^^^^^^^^^^ + +:dp:`fls_4f141ca39eeb` +An :t:`inner line doc` is a :t:`line comment` that applies to an enclosing +:t:`non-[comment]` :t:`construct`. + +.. _fls_c472301c90be: + +input lifetime +^^^^^^^^^^^^^^ + +:dp:`fls_001451c0bad6` +An :t:`input lifetime` is one of the following :t:`[lifetime]s`: + +.. _fls_cb33608ce553: + +input register +^^^^^^^^^^^^^^ + +:dp:`fls_fd7271c700fc` +An :t:`input register` is a :t:`register` whose :t:`register name` is used in +a :t:`register argument` subject to :t:`direction modifier` ``in``, ``inout``, +or ``inlateout``. + +.. _fls_205882301d8e: + +input register expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0a27b1c2fadf` +An :t:`input register expression` is an :t:`expression` that provides the +initial :t:`value` of a :t:`register`. + +.. _fls_af11785d3237: + +input-output register expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_bcfbd951f1c4` +An :t:`input-output register expression` is a :t:`construct` that specifies +both an :t:`input register expression` and an :t:`output register expression`. + +.. _fls_5e6f9e3e6921: + +integer literal +^^^^^^^^^^^^^^^ + +:dp:`fls_eae69317c026` +An :t:`integer literal` is a :t:`numeric literal` that denotes a whole number. + +.. _fls_443d217a3996: + +integer suffix +^^^^^^^^^^^^^^ + +:dp:`fls_c0e4063e12c3` +An :t:`integer suffix` is a component of an :t:`integer literal` that specifies +an explicit :t:`integer type`. + +.. _fls_a0c54b26c169: + +integer type +^^^^^^^^^^^^ + +:dp:`fls_d6114153ff29` +An :t:`integer type` is a :t:`numeric type` whose :t:`[value]s` denote whole +numbers. + +.. _fls_dbbaaf3214ef: + +integer type variable +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_8434f3fce34b` +An :t:`integer type variable` is a :t:`type variable` that can refer only to +:t:`[integer type]s`. + +.. _fls_333038c332c5: + +Interior mutability +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3d292e51d428` +:t:`Interior mutability` is a property of :t:`[type]s` whose :t:`[value]s` can +be modified through :t:`[immutable reference]s`. + +.. _fls_260c26e58ea6: + +intermediate match arm +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_24ce6d548028` +An :t:`intermediate match arm` is any :t:`non-[final match arm]` of a +:t:`match expression`. + +.. _fls_930bfccdfd4f: + +Invariant +^^^^^^^^^ + +* :dp:`fls_kbo3e3bosr0m` + :t:`Invariant` over ``T``. + +.. _fls_7b61a2647e31: + +irrefutable constant +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_55d04774ba16` +An :t:`irrefutable constant` is a :t:`constant` of a :t:`type` that has at most +one :t:`value`. + +.. _fls_bcbf0c5f455f: + +irrefutable pattern +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c9855435fe29` +An :t:`irrefutable pattern` is a :t:`pattern` that always matches any :t:`value` of its :t:`type`. + +.. _fls_82414bdf11a3: + +isize +^^^^^ + +:dp:`fls_2c4749c8d5a3` +:c:`isize` is a :t:`signed integer type` with the same number of bits as the +platform's :t:`pointer type`, and is at least 16-bits wide. + +.. _fls_39a01bf1f3d4: + +item +^^^^ + +:dp:`fls_2d8b6da7be83` +An :t:`item` is the most basic semantic element in program text. An :t:`item` +defines the compile- and run-time semantics of a program. + +.. _fls_5dde0b11a6e6: + +item scope +^^^^^^^^^^ + +:dp:`fls_998954b7034a` +An :t:`item scope` is a :t:`scope` for :t:`[item]s`. + +.. _fls_bc525d129748: + +item statement +^^^^^^^^^^^^^^ + +:dp:`fls_74716cfa494a` +An :t:`item statement` is a :t:`statement` that is expressed as an :t:`item`. + +.. _fls_79112e9f7368: + +iteration expression +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_282f93bbb77f` +An :t:`iteration expression` is an :t:`expression` that provides the criterion +of a :t:`while loop expression`. + +.. _fls_908f20ce26fe: + +keyword +^^^^^^^ + +:dp:`fls_f8b7ecab1858` +A :t:`keyword` is a word in program text that has special meaning. + +.. _fls_f79e2cb3dfa2: + +label +^^^^^ + +:dp:`fls_ff1d8cc166a9` +A :t:`label` is the :t:`name` of a :t:`loop expression`. + +.. _fls_87020a9cec5f: + +label block +^^^^^^^^^^^ + +:dp:`fls_b30f8ecc409f` +A :t:`label block` is a :t:`block expression` whose memory address is substituted into an :t:`assembly code block`. + +.. _fls_f426d8f41513: + +label indication +^^^^^^^^^^^^^^^^ + +:dp:`fls_d6656871b03a` +A :t:`label indication` is a :t:`construct` that indicates a :t:`label`. + +.. _fls_c2cd1ed8d187: + +label namespace +^^^^^^^^^^^^^^^ + +:dp:`fls_02d4853464e6` +A :t:`label namespace` contains :t:`[label]s`. + +.. _fls_9b622cc53a78: + +label scope +^^^^^^^^^^^ + +:dp:`fls_97a3f2a69ee2` +A :t:`label scope` is a :t:`scope` for :t:`[label]s`. + +.. _fls_634b7b672758: + +language prelude +^^^^^^^^^^^^^^^^ + +:dp:`fls_7e161cdf45f9` +The :t:`language prelude` is a :t:`prelude` that brings :t:`in scope` of every +:t:`module` the following :t:`entities `: + +.. _fls_a7e2cca096cc: + +layout +^^^^^^ + +:dp:`fls_0ba82054fbde` +A :t:`layout` specifies the :t:`alignment`, :t:`size`, and the relative offset +of :t:`[field]s` in a :t:`type`. + +.. _fls_901120c8911a: + +lazy and expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5a93ff91e0a7` +A :t:`lazy and expression` is a :t:`lazy boolean expression` that uses short +circuit and arithmetic. + +.. _fls_194a2d2a2f4a: + +lazy boolean expression +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_43c1a01f43a2` +A :t:`lazy boolean expression` is an :t:`expression` that performs short circuit +Boolean arithmetic. + +.. _fls_435db66d6a49: + +lazy or expression +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9e986c352be6` +A :t:`lazy or expression` is a :t:`lazy boolean expression` that uses short +circuit or arithmetic. + +.. _fls_e28012632843: + +Least upper bound coercion +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_477e6847d6d4` +:t:`Least upper bound coercion` is a :t:`multi-[type coercion]` that is used in +the following scenarios: + +.. _fls_6b21f96caf76: + +left operand +^^^^^^^^^^^^ + +:dp:`fls_0a1673225075` +A :t:`left operand` is an :t:`operand` that appears on the left-hand side of a +:t:`binary operator`. + +.. _fls_752c47e1f3a2: + +less-than expression +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b89c1fae84c6` +A :t:`less-than expression` is a :t:`comparison expression` that tests for a +less-than relationship. + +.. _fls_ca5080b5d54b: + +less-than-or-equals expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_90e75107261e` +A :t:`less-than-or-equals expression` is a :t:`comparison expression` that tests +for a less-than-or-equals relationship. + +.. _fls_e57b6bac7004: + +let binding +^^^^^^^^^^^ + +:dp:`fls_7c29d019d493` +A :t:`let binding` is the :t:`binding` introduced by a :t:`let statement`, an +:t:`if let expression`, or a :t:`while let loop expression`. + +.. _fls_852f46da5f73: + +let initializer +^^^^^^^^^^^^^^^ + +:dp:`fls_064ea232828f` +A :t:`let initializer` is a :t:`construct` that provides the :t:`value` of +the :t:`[binding]s` of the :t:`let statement` using an :t:`expression`, or +alternatively executes a :t:`block expression`. + +.. _fls_47d6d625a5b1: + +let statement +^^^^^^^^^^^^^ + +:dp:`fls_8fd7a25bdf76` +A :t:`let statement` is a :t:`statement` that introduces new :t:`[binding]s` +produced by its :t:`pattern-without-alternation` that are optionally +initialized to a :t:`value`. + +.. _fls_62919ce0f49d: + +lexical element +^^^^^^^^^^^^^^^ + +:dp:`fls_64e9151bf99e` +A :t:`lexical element` is the most basic syntactic element in program text. + +.. _fls_92d4fe38da4d: + +library crate +^^^^^^^^^^^^^ + +:dp:`fls_399b40cbfe7c` +A :t:`library crate` is a :t:`crate` whose :t:`crate type` is ``lib``, ``rlib``, +``staticlib``, ``dylib``, or ``cdylib``. + +.. _fls_efaec6cbbe78: + +lifetime +^^^^^^^^ + +:dp:`fls_231d678f6326` +A :t:`lifetime` specifies the expected longevity of a :t:`value`. + +.. _fls_4f26fe446d80: + +lifetime argument +^^^^^^^^^^^^^^^^^ + +:dp:`fls_25d94699a158` +A :t:`lifetime argument` is a :t:`generic argument` that supplies the +:t:`lifetime` of a :t:`lifetime parameter`. + +.. _fls_48890f4b8e7f: + +lifetime bound +^^^^^^^^^^^^^^ + +:dp:`fls_b5cf76ea4016` +A :t:`lifetime bound` is a :t:`bound` that imposes a constraint on the +:t:`[lifetime]s` of :t:`[generic parameter]s`. + +.. _fls_034584a4fd89: + +lifetime bound predicate +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b8fed9b472b5` +A :t:`lifetime bound predicate` is a :t:`construct` that specifies +:t:`[lifetime bound]s` on a :t:`lifetime parameter`. + +.. _fls_a6ebdee89194: + +Lifetime elision +^^^^^^^^^^^^^^^^ + +:dp:`fls_6e517a72003a` +:t:`Lifetime elision` is a set of rules that automatically insert +:t:`[lifetime parameter]s` and/or :t:`[lifetime argument]s` when they are +elided in the source code. + +.. _fls_c9a817f37636: + +lifetime namespace +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_bc8bc83dde97` +A :t:`lifetime namespace` contains the :t:`[name]s` of +:t:`[lifetime parameter]s`. + +.. _fls_71e649ad363d: + +lifetime parameter +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_65c562bc8877` +A :t:`lifetime parameter` is a :t:`generic parameter` for a :t:`lifetime`. + +.. _fls_51ec408dfd6b: + +lifetime variable +^^^^^^^^^^^^^^^^^ + +:dp:`fls_2bfec9f3420d` +A :t:`lifetime variable` is a placeholder used during :t:`type inference` to +stand in for an undetermined :t:`lifetime` of a :t:`type`. + +.. _fls_2e27580a3801: + +limits attributes +^^^^^^^^^^^^^^^^^ + +:dp:`fls_d442de97ff40` +The following :t:`[built-in attribute]s` are :t:`[limits attribute]s`: + +.. _fls_43a2245953af: + +line +^^^^ + +:dp:`fls_e95fe8173b23` +A :t:`line` is a sequence of zero or more characters followed by an end of +line. + +.. _fls_c14996359fa4: + +line comment +^^^^^^^^^^^^ + +:dp:`fls_3888f005afdb` +A :t:`line comment` is a :t:`comment` that spans exactly one :t:`line`. + +.. _fls_6eef95cb5073: + +link +^^^^ + +:dp:`fls_bd76bb9d6f83` +:t:`Attribute` :c:`link` shall specify the name of a native library that a tool +should link with. + +.. _fls_5afd86b6e01c: + +link_name +^^^^^^^^^ + +:dp:`fls_fd681c838867` +:t:`Attribute` :c:`link_name` shall specify the linking symbol of the related +:t:`external function` or :t:`external static`. + +.. _fls_d043d991eda2: + +link_ordinal +^^^^^^^^^^^^ + +:dp:`fls_117fd1408464` +:t:`Attribute` :c:`link_ordinal` shall specify the linking symbol of the +related :t:`external function` or :t:`external static` by ordinal number. + +.. _fls_547268b97860: + +link_section +^^^^^^^^^^^^ + +:dp:`fls_687a28d62dbf` +:t:`Attribute` :c:`link_section` specifies the object file section where the +symbol of the related :t:`function` or :t:`static` will be placed. + +.. _fls_4b013adb857e: + +literal +^^^^^^^ + +:dp:`fls_9f782acf16da` +A :t:`literal` is a fixed :t:`value` in program text. + +.. _fls_aa9dd5fe079b: + +literal expression +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5ec51abb236a` +A :t:`literal expression` is an :t:`expression` that denotes a :t:`literal`. + +.. _fls_d48365512551: + +literal pattern +^^^^^^^^^^^^^^^ + +:dp:`fls_33f5eee6526e` +A :t:`literal pattern` is a :t:`pattern` that matches a :t:`literal`. + +.. _fls_695127203b03: + +Literal pattern matching +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4348574fac32` +:t:`Literal pattern matching` proceeds as follows: + +.. _fls_6905c30cda5e: + +local trait +^^^^^^^^^^^ + +:dp:`fls_0326f833f21b` +A :t:`local trait` is a :t:`trait` that is defined in the current :t:`crate`. + +.. _fls_fc863e5f5ae2: + +local type +^^^^^^^^^^ + +:dp:`fls_fa725815845f` +A :t:`local type` is a :t:`type` that is defined in the current :t:`crate`. + +.. _fls_5293c9646d56: + +local variable +^^^^^^^^^^^^^^ + +:dp:`fls_7b77aaa7b793` +A :t:`local variable` is a :t:`variable`. + +.. _fls_d929dfeaaccb: + +loop +^^^^ + +:dp:`fls_c0ee8e3a805e` +For :t:`loop`, see :t:`loop expression`. + +.. _fls_ad6e6c198e9c: + +loop body +^^^^^^^^^ + +:dp:`fls_9d59800eff74` +A :t:`loop body` is the :t:`block expression` of a :t:`loop expression`. + +.. _fls_95bfe6b3fa74: + +loop expression +^^^^^^^^^^^^^^^ + +:dp:`fls_8d5f2799313f` +A :t:`loop expression` is an :t:`expression` that evaluates a :t:`block +expression` continuously as long as some criterion holds true. + +.. _fls_83f24da95a03: + +macro +^^^^^ + +:dp:`fls_0872afa1bc33` +A :t:`macro` is a custom definition that extends Rust by defining callable +syntactic transformations. The effects of a :t:`macro` are realized through +:t:`[macro invocation]s` or :t:`attribute` use. :t:`[Macro]s` come in two +distinct forms: + +.. _fls_3714c22d2346: + +macro attributes +^^^^^^^^^^^^^^^^ + +:dp:`fls_fd3f366ab26e` +The following :t:`[built-in attribute]s` are :t:`[macro attribute]s`: + +.. _fls_c3cf0fef26cd: + +Macro expansion +^^^^^^^^^^^^^^^ + +:dp:`fls_6d1ce9452a41` +:t:`Macro expansion` is the process of statically executing a +:t:`macro invocation` and replacing it with the produced output of the +:t:`macro invocation`. + +.. _fls_a41801c8d36f: + +macro implementation function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_13d07f7e5cba` +A :t:`macro implementation function` is the :t:`function` that encapsulates the +syntactic transformations of a :t:`procedural macro`. + +.. _fls_639ea923143d: + +macro invocation +^^^^^^^^^^^^^^^^ + +:dp:`fls_0ef22e265d13` +A :t:`macro invocation` is a call of a :t:`declarative macro` or +:t:`function-like macro` that is expanded statically and replaced with the +result of the :t:`macro`. + +.. _fls_ebca6bc8ec50: + +macro match +^^^^^^^^^^^ + +:dp:`fls_11c6c8fa38bd` +A :t:`macro match` is the most basic form of a satisfied :t:`macro matcher`. + +.. _fls_f7df78d64d41: + +macro matcher +^^^^^^^^^^^^^ + +:dp:`fls_18ba902b3360` +A :t:`macro matcher` is a :t:`construct` that describes a syntactic pattern that +a :t:`macro` must match. + +.. _fls_5600d72c4b9f: + +Macro matching +^^^^^^^^^^^^^^ + +:dp:`fls_be2e9c374180` +:t:`Macro matching` is the process of performing :t:`rule matching` and +:t:`token matching`. + +.. _fls_7eea2fabb832: + +macro namespace +^^^^^^^^^^^^^^^ + +:dp:`fls_122a84e19937` +A :t:`macro namespace` contains the :t:`[name]s` of the following kinds of +:t:`entities `: + +.. _fls_b4d89bd6c5b9: + +macro repetition +^^^^^^^^^^^^^^^^ + +:dp:`fls_78ba73822607` +A :t:`macro repetition` is either a :t:`macro repetition in matching` or a +:t:`macro repetition in transcription`. + +.. _fls_c2c9cafb3778: + +macro repetition in matching +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1f08dd138e9b` +A :t:`macro repetition in matching` allows for a syntactic pattern to be matched +zero or multiple times during :t:`macro matching`. + +.. _fls_bb1f2b06f448: + +macro repetition in transcription +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7f486c5b1c63` +A :t:`macro repetition in transcription` allows for a syntactic pattern to be +transcribed zero or multiple times during :t:`macro transcription`. + +.. _fls_3919beccd4cb: + +macro rule +^^^^^^^^^^ + +:dp:`fls_65ae2dc1e0d0` +A :t:`macro rule` is a :t:`construct` that consists of a :t:`macro matcher` and +a :t:`macro transcriber`. + +.. _fls_d9195763df49: + +macro statement +^^^^^^^^^^^^^^^ + +:dp:`fls_90f4b17f2b13` +A :t:`macro statement` is a :t:`statement` expressed as a +:t:`terminated macro invocation`. + +.. _fls_34df13ebc1b0: + +macro transcriber +^^^^^^^^^^^^^^^^^ + +:dp:`fls_7ad7b98c9633` +A :t:`macro transcriber` is a :t:`construct` that describes the replacement +syntax of a :t:`macro`. + +.. _fls_048028a7483a: + +Macro transcription +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_13e9582e315b` +:t:`Macro transcription` is the process of producing the expansion of a +:t:`declarative macro`. + +.. _fls_0fa6f7e657d3: + +macro_export +^^^^^^^^^^^^ + +:dp:`fls_cd72f1676b1c` +:t:`Attribute` :c:`macro_export` changes the :t:`visibility` of the related +:t:`declarative macro` to :t:`public visibility` and introduces the :t:`name` +of the :t:`declarative macro` into the :t:`item scope` of the +:t:`crate root module`. + +.. _fls_fce045bdde97: + +macro_use +^^^^^^^^^ + +:dp:`fls_ed0259a6daca` +When applied to a :t:`crate import`, :t:`attribute` :c:`macro_use` +imports from the related :t:`crate` either: + +.. _fls_0b708bdc83ce: + +macro_use prelude +^^^^^^^^^^^^^^^^^ + +:dp:`fls_02aa03221b1a` +The :t:`macro_use prelude` is a :t:`prelude` that brings :t:`in scope` of the +:t:`crate root module` the :t:`entities ` of :t:`[macro]s` from +external :t:`[crate]s` that were imported using an external :t:`crate import`. + +.. _fls_61878657be83: + +main function signature +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9c9e5f4c901f` +A :t:`main function signature` is the :t:`function signature` required for the +:t:`program entry point` function named ``main``. + +.. _fls_c75fa93371d4: + +match arm +^^^^^^^^^ + +:dp:`fls_5bec656970ab` +A :t:`match arm` is a :t:`construct` that consists of a :t:`match arm matcher` +and a :t:`match arm body`. + +.. _fls_c56d8bb13a04: + +match arm body +^^^^^^^^^^^^^^ + +:dp:`fls_f7cac9ba3667` +A :t:`match arm body` is the :t:`operand` of a :t:`match arm`. + +.. _fls_800f7526f8c9: + +match arm guard +^^^^^^^^^^^^^^^ + +:dp:`fls_771d961be830` +A :t:`match arm guard` is a :t:`construct` that provides additional filtering to +a :t:`match arm matcher`. + +.. _fls_1904c2db7a74: + +match arm matcher +^^^^^^^^^^^^^^^^^ + +:dp:`fls_32729431bea8` +A :t:`match arm matcher` is a :t:`construct` that consists of a :t:`pattern` and +a :t:`match arm guard`. + +.. _fls_b7d7354a8a78: + +match expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_9fc0063db8a8` +A :t:`match expression` is an :t:`expression` that tries to match one of its +multiple :t:`[pattern]s` against its :t:`subject expression` and if it succeeds, +evaluates an :t:`operand`. + +.. _fls_79a43f2f5410: + +matched argument operand +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9d517a0c4895` +An :t:`argument operand` matches a :t:`function parameter` or :t:`field` of the +:t:`callee type` when its position and the position of the +:t:`function parameter` or :t:`field` are the same. Such an +:t:`argument operand` is a :t:`matched argument operand`. + +.. _fls_15d773b4a095: + +matched indexed deconstructor +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2db876e64a83` +An :t:`indexed deconstructor` matches a :t:`field` of the :t:`deconstructee` +when its :t:`field index` and the position of the :t:`field` in the +:t:`deconstructee` are the same. Such an :t:`indexed deconstructor` is a +:t:`matched indexed deconstructor`. + +.. _fls_27094ef8fd18: + +matched indexed initializer +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b3aa69b1ac92` +An :t:`indexed initializer` matches a :t:`field` of the :t:`constructee` +when the :t:`field index` of the :t:`indexed initializer` resolves to a valid +position of a :t:`field` in the :t:`constructee`. Such an +:t:`indexed initializer` is a :t:`matched indexed initializer`. + +.. _fls_bb774caf4e79: + +matched named deconstructor +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_253930eb21f9` +A :t:`named deconstructor` matches a :t:`field` of the :t:`deconstructee` when +its :t:`identifier` and the :t:`name` of the :t:`field` are the same. Such a +:t:`named deconstructor` is a :t:`matched named deconstructor`. + +.. _fls_d52494684f92: + +matched named initializer +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_63d158333e6d` +A :t:`named initializer` matches a :t:`field` of the :t:`constructee` when +its :t:`identifier` and the :t:`name` of the :t:`field` are the same. Such a +:t:`named initializer` is a :t:`matched named initializer`. + +.. _fls_d55cb68c4a54: + +matched shorthand deconstructor +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_8f3b8b9c6ef5` +A :t:`shorthand deconstructor` matches a :t:`field` of the :t:`deconstructee` +when its :t:`name` and the :t:`name` of the :t:`field` are the same. Such a +:t:`shorthand deconstructor` is a :t:`matched shorthand deconstructor`. + +.. _fls_07c0e0fa281a: + +matched shorthand initializer +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e1c6cc8f9edc` +A :t:`shorthand initializer` matches a :t:`field` of the :t:`constructee` +when its :t:`identifier` and the :t:`name` of the :t:`field` are the same. Such +a :t:`shorthand initializer` is a :t:`matched shorthand initializer`. + +.. _fls_e76c63da42c0: + +matched tuple struct subpattern +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_874c4609f77f` +A :t:`subpattern` of a :t:`tuple struct pattern` matches a :t:`field` of the +:t:`deconstructee` when its position and the position of the :t:`field` in +the :t:`deconstructee` are the same. Such a :t:`subpattern` is a +:t:`matched tuple struct subpattern`. + +.. _fls_d7d7be6f4a34: + +matched tuple subpattern +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_8f20ba5a259a` +A :t:`subpattern` of a :t:`tuple pattern` matches a :t:`tuple field` of the +:t:`tuple type` when its position and the position of the :t:`tuple field` in +the :t:`tuple type` are the same. Such a :t:`subpattern` is a +:t:`matched tuple subpattern`. + +.. _fls_78d558af9455: + +memory size +^^^^^^^^^^^ + +:dp:`fls_e1e2730ced76` +An :t:`[allocated object]s` :t:`memory size` is the number of bytes the object +spans in memory from its :t:`base address`. + +.. _fls_858035ec6d34: + +metavariable +^^^^^^^^^^^^ + +:dp:`fls_841515b48d26` +A :t:`metavariable` is a :t:`macro match` that describes a :t:`variable`. + +.. _fls_7b4d043be282: + +metavariable indication +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_61cf8acce156` +A :t:`metavariable indication` is a :t:`construct` that indicates a +:t:`metavariable`. + +.. _fls_63a6a1893c71: + +method +^^^^^^ + +:dp:`fls_8f083a95eff0` +A :t:`method` is an :t:`associated function` with a :t:`self parameter`. + +.. _fls_88248c6672cb: + +method call expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4d537bc5b564` +A :t:`method call expression` is an :t:`expression` that invokes a :t:`method` +of a :t:`variable`. + +.. _fls_d901b8a82319: + +method operand +^^^^^^^^^^^^^^ + +:dp:`fls_55794a5633cf` +A :t:`method operand` is an :t:`operand` that denotes the :t:`method` being +invoked by a :t:`method call expression`. + +.. _fls_6a614e4084db: + +Method resolution +^^^^^^^^^^^^^^^^^ + +:dp:`fls_3a3fb699e5ba` +:t:`Method resolution` is a kind of :t:`resolution` that applies to a +:t:`method call expression`. + +.. _fls_4fa995aab6b7: + +Method resolution implementation candidate lookup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c50c8ba999a8` +:t:`Method resolution implementation candidate lookup` for a +:t:`receiver type` proceeds as follows: + +.. _fls_f1c9530056ef: + +Method resolution inherent implementation candidate lookup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_dfd64e9c9560` +:t:`Method resolution inherent implementation candidate lookup` for a +:t:`receiver type` proceeds as follows: + +.. _fls_1d1eab90e84d: + +Method resolution receiver candidate lookup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_345e6998ce47` +:t:`Method resolution receiver candidate lookup` for a :t:`receiver type` +proceeds as follows: + +.. _fls_569eb45cac35: + +Method resolution trait implementation candidate lookup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_89f508a7b2ab` +:t:`Method resolution trait implementation candidate lookup` for a +:t:`receiver type` proceeds as follows: + +.. _fls_5638eb7325d9: + +mixed site hygiene +^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_uyvnq88y9gk3` + :t:`mixed site hygiene` is a hygiene category that resolves to a + :s:`MacroRulesDeclaration` site for :t:`[label]s`, :t:`[variable]s`, and the + ``$crate`` :t:`metavariable`, and to the :s:`MacroInvocation` site otherwise, + and is considered :t:`partially hygienic`. + +.. _fls_ed4d94900c53: + +modifying operand +^^^^^^^^^^^^^^^^^ + +:dp:`fls_005ef5415243` +A :t:`modifying operand` is an :t:`operand` that supplies the :t:`value` that +is used in the calculation of a :t:`compound assignment expression`. + +.. _fls_5153fb96a3dc: + +module +^^^^^^ + +:dp:`fls_f11a9c9f9a27` +A :t:`module` is a container for zero or more :t:`[item]s`. + +.. _fls_b9ea2e89eb15: + +module path +^^^^^^^^^^^ + +:dp:`fls_81f1b51bd11a` +The :t:`path attribute` is an :t:`attribute` (written as :c:`path`) that +specifies the :t:`module path` of the respective :t:`module` as a +:t:`string literal`. + +.. _fls_4dc3d42e5df3: + +modules attributes +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c1476a83b97a` +The following :t:`[built-in attribute]s` are :t:`[modules attribute]s`: + +.. _fls_190a11fc0e5a: + +move type +^^^^^^^^^ + +:dp:`fls_15b870064146` +A :t:`move type` is a :t:`type` that implements the :std:`core::marker::Sized` +:t:`trait` and is not a :t:`copy type`. + +.. _fls_5f7d5e91b4d7: + +multi segment path +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_70910751e46e` +A :t:`multi segment path` is a :t:`path` consisting of more than one +:t:`path segment`. + +.. _fls_c24ceb609abb: + +multiplication assignment +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_674d28c1f9d0` +A :t:`multiplication assignment` is a :t:`multiplication assignment expression`. + +.. _fls_0bf0ae1890a8: + +multiplication assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e036a396bf3e` +A :t:`multiplication assignment expression` is a +:t:`compound assignment expression` that uses multiplication. + +.. _fls_754a6ff415cc: + +multiplication expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c1c6c923c6ec` +A :t:`multiplication expression` is an :t:`arithmetic expression` that uses +multiplication. + +.. _fls_8597f2b8262f: + +mutability +^^^^^^^^^^ + +:dp:`fls_c94f7f5ddec7` +:t:`mutability` determines whether a :t:`construct` can modify a :t:`value`. + +.. _fls_2d8c9112e721: + +mutable +^^^^^^^ + +:dp:`fls_63799b5af3b2` +A :t:`value` is :t:`mutable` when it can be modified. + +.. _fls_1e848ef4613e: + +mutable assignee expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_fef79d8a5343` +A :t:`mutable assignee expression` is an :t:`assignee expression` whose +:t:`value` can be modified. + +.. _fls_55e431826b30: + +mutable binding +^^^^^^^^^^^^^^^ + +:dp:`fls_9ae6845ca4b0` +A :t:`mutable binding` is a :t:`binding` whose :t:`value` can be modified. + +.. _fls_844652bd1a7f: + +mutable borrow +^^^^^^^^^^^^^^ + +:dp:`fls_33c16e7bf1d5` +A :t:`mutable borrow` is a :t:`mutable reference` produced by :t:`borrowing`. + +.. _fls_bd895e096938: + +mutable borrow expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5dea650b3e99` +A :t:`mutable borrow expression` is a :t:`borrow expression` that has +:t:`keyword` ``mut``. + +.. _fls_9c727c3bbe02: + +mutable place expression +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_68d4ce0def20` +A :t:`mutable place expression` is a :t:`place expression` whose memory +location can be modified. The following :t:`[place expression]s` are +:t:`[mutable place expression]s`: + +.. _fls_0c6ecbb85a6b: + +mutable place expression context +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0fb8e75273dc` +A :t:`mutable place expression context` is a :t:`place expression context` that +may evaluate its :t:`operand` as a mutable memory location. The following +:t:`[construct]s` are :t:`[mutable place expression context]s`: + +.. _fls_aa49f854ed9d: + +mutable raw borrow expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_75e6f6b9ef4d` +A :t:`mutable raw borrow expression` is a :t:`raw borrow expression` that has :t:`keyword` ``mut``. + +.. _fls_bd1efd5cc0df: + +mutable raw pointer type +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_45dcdfabab83` +A :t:`mutable raw pointer type` is a :t:`raw pointer type` subject to +:t:`keyword` ``mut``. + +.. _fls_9bba7a9ad348: + +mutable reference +^^^^^^^^^^^^^^^^^ + +:dp:`fls_4e8c34804ee5` +A :t:`mutable reference` is a :t:`value` of a :t:`mutable reference type`, and +allows the mutation of its :t:`referent`. + +.. _fls_f46d81b1ed49: + +mutable reference type +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_759af545511f` +A :t:`mutable reference type` is a :t:`reference type` subject to :t:`keyword` +``mut``. + +.. _fls_b72005f59308: + +mutable static +^^^^^^^^^^^^^^ + +:dp:`fls_c78a220cf3d5` +A :t:`mutable static` is a :t:`static` with :t:`keyword` ``mut`` whose +:t:`value` can be modified. + +.. _fls_d7f24cc0ba3a: + +mutable variable +^^^^^^^^^^^^^^^^ + +:dp:`fls_7085d0cf3f3d` +A :t:`mutable variable` is a :t:`variable` whose :t:`value` can be modified. + +.. _fls_c3eb5b01d4b7: + +naked +^^^^^ + +:dp:`fls_3dfacde6cbd9` +:t:`Attribute` :c:`naked` ensures that a :t:`function` prologue and epilogue are not generated. + +.. _fls_c22729c38331: + +name +^^^^ + +:dp:`fls_e0dfdc96edb0` +A :t:`name` is an :t:`identifier` that refers to an :t:`entity`. + +.. _fls_c7402d56cf8c: + +named block expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_04ef0c2b8cb9` +A :t:`named block expression` is a :t:`block expression` with a :t:`label`. + +.. _fls_3438a5a20d87: + +named deconstructor +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_6a750876bc2a` +A :t:`named deconstructor` is a :t:`construct` that matches the :t:`name` of +a :t:`field`. + +.. _fls_d6a79b267d5c: + +named field selector +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_896e38dd1a47` +A :t:`named field selector` is a :t:`field selector` where the selected +:t:`field` is indicated by an :t:`identifier`. + +.. _fls_5d418efaae90: + +named initializer +^^^^^^^^^^^^^^^^^ + +:dp:`fls_6047df9d8617` +A :t:`named initializer` is a :t:`construct` that specifies the name and +initial :t:`value` of a :t:`field` in a :t:`struct expression`. + +.. _fls_65bd1c365362: + +named loop expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b6b284f75c4f` +A :t:`named loop expression` is a :t:`loop expression` with a :t:`label`. + +.. _fls_76be829639a4: + +named register argument +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4fd67baa7aff` +A :t:`named register argument` is a :t:`register argument` whose configuration +is bound to an :t:`identifier`. + +.. _fls_c9ef8a473122: + +namespace +^^^^^^^^^ + +:dp:`fls_7c9ee55ae692` +A :t:`namespace` is a logical grouping of :t:`[name]s` such that the occurrence +of a :t:`name` in one :t:`namespace` does not conflict with an occurrence of +the same :t:`name` in another :t:`namespace`. + +.. _fls_72aeced2ae2e: + +namespace context +^^^^^^^^^^^^^^^^^ + +:dp:`fls_5fa4ab5173e5` +A :t:`namespace context` is a set of :t:`[namespace]s` where the :t:`[name]s` +of :t:`candidate selected entities ` reside. + +.. _fls_f38268edc8dc: + +namespace qualifier +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_35ed27e56e97` +A :t:`path` is a sequence of :t:`[path segment]s` logically separated by +:t:`namespace qualifier` ``::`` that resolves to an :t:`entity`. + +.. _fls_9f6abd9949b0: + +NaN-boxing +^^^^^^^^^^ + +:dp:`fls_6c8a4b7431cd` +:t:`NaN-boxing` is a technique for encoding :t:`[value]s` using the low order +bits of the mantissa of a 64-bit IEEE floating-point ``NaN``. + +.. _fls_87f4e30c4c62: + +negation expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5b911b1f50a6` +A :t:`negation expression` is an :t:`expression` that negates its :t:`operand`. + +.. _fls_a04ef0771a74: + +nesting import +^^^^^^^^^^^^^^ + +:dp:`fls_6d2e1b77b9db` +A :t:`nesting import` is a :t:`use import` that provides a common +:t:`simple path prefix` for its nested :t:`[use import]s`. + +.. _fls_2cf6435fb98d: + +never type +^^^^^^^^^^ + +:dp:`fls_edcae958a4ed` +The :t:`never type` is a :t:`type` that represents the result of a computation +that never completes. + +.. _fls_e7d443750695: + +no_builtins +^^^^^^^^^^^ + +:dp:`fls_caa15dee0e58` +:t:`Attribute` :c:`no_builtins` prevents the tool from replacing certain code +patterns with calls to intrinsic functions. + +.. _fls_c21b6ced06da: + +no_implicit_prelude +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_73d95b831235` +:t:`Attribute` :c:`no_implicit_prelude` prevents the import of the +:t:`external prelude`, the standard library :t:`prelude`, and the tool +:t:`prelude`. + +.. _fls_e564ab44fc3f: + +no_link +^^^^^^^ + +:dp:`fls_ae9a8c308d6e` +:t:`Attribute` :c:`no_link` indicates that the imported external :t:`crate` +will not be linked into the resulting binary or library. + +.. _fls_2d16bac77d87: + +no_main +^^^^^^^ + +:dp:`fls_aa647765b65e` +:t:`Attribute` :c:`no_main` indicates that the symbols of the +:t:`program entry point` will not be present in a binary. + +.. _fls_b349991cd712: + +no_mangle +^^^^^^^^^ + +:dp:`fls_5781f15fcbf4` +:t:`Attribute` :c:`no_mangle` indicates that the :t:`name` of the related +:t:`function` or :t:`static` will be used as the symbol for that :t:`function` +or :t:`static`. + +.. _fls_f8d9651e67f9: + +no_std +^^^^^^ + +:dp:`fls_324532636c3a` +:t:`Attribute` :c:`no_std` has the following effects: + +.. _fls_bea01799487a: + +non-exhaustive type +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_42257b5a606f` +:t:`Attribute` :c:`non_exhaustive` indicates that the related +:t:`abstract data type` or :t:`enum variant` may have more :t:`[field]s` or +:t:`[enum variant]s` added in the future. A :t:`type` subject to :t:`attribute` +:c:`non_exhaustive` is referred to as a :t:`non-exhaustive type`. + +.. _fls_856144839169: + +non-exhaustive variant +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_bd1fb80e36cf` +An :t:`enum variant` subject to :t:`attribute` :c:`non_exhaustive` is referred +to as a :t:`non-exhaustive variant`. + +.. _fls_4597b9f8f677: + +non-reference pattern +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_57aca2e5f897` +A :t:`non-reference pattern` is any :t:`pattern` except +:t:`non-[binding pattern]s`, :t:`[path pattern]s`, :t:`[reference pattern]s`, +and :t:`[underscore pattern]s`. + +.. _fls_a82a11a27a3b: + +non_exhaustive +^^^^^^^^^^^^^^ + +:dp:`fls_b02f6274f7f9` +:t:`Attribute` :c:`non_exhaustive` indicates that the related +:t:`abstract data type` or :t:`enum variant` may have more :t:`[field]s` or +:t:`[enum variant]s` added in the future. A :t:`type` subject to :t:`attribute` +:c:`non_exhaustive` is referred to as a :t:`non-exhaustive type`. + +.. _fls_3da81d83d3d0: + +not configuration predicate +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_355c4dd265fe` +A :t:`not configuration predicate` is a :t:`configuration predicate` that +negates the Boolean :t:`value` of its nested :t:`configuration predicate`. + +.. _fls_6dd657634306: + +not-equals expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9b9f9c301e74` +A :t:`not-equals expression` is a :t:`comparison expression` that tests for +inequality. + +.. _fls_0488ee466cc2: + +null +^^^^ + +:dp:`fls_c30993baf471` +A :c:`null` :t:`value` denotes the address ``0``. + +.. _fls_ec8c9857d064: + +numeric cast +^^^^^^^^^^^^ + +:dp:`fls_e3601008ffeb` +The :t:`evaluation` of a :t:`numeric cast` proceeds as follows: + +.. _fls_d61bdb4c10ab: + +numeric literal +^^^^^^^^^^^^^^^ + +:dp:`fls_5d64d4183f82` +A :t:`numeric literal` is a :t:`literal` that denotes a number. + +.. _fls_d5055337826f: + +numeric literal pattern +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_8a8e2e7a8dd0` +A :t:`numeric literal pattern` is a :t:`pattern` that matches a :t:`numeric +literal`. + +.. _fls_1aaa243eefa4: + +numeric type +^^^^^^^^^^^^ + +:dp:`fls_c155a0059c81` +A :t:`numeric type` is a :t:`type` whose :t:`[value]s` denote numbers. + +.. _fls_f4fb89967592: + +object safe +^^^^^^^^^^^ + +:dp:`fls_bd183b22b4ea` +A :t:`trait` is :t:`object safe` when: + +.. _fls_f216b18f24d3: + +Object safety +^^^^^^^^^^^^^ + +:dp:`fls_23d6711bb582` +:t:`Object safety` is the process of determining whether a :t:`trait` can be used +as a :t:`trait object type`. + +.. _fls_6549ab124a7f: + +obligations +^^^^^^^^^^^ + +:dp:`fls_7c84a442d6e0` +Performing :t:`type inference` may introduce a requirement that some :t:`type` +must implement a :t:`trait`, or that a :t:`type` or :t:`lifetime` must outlive +some other :t:`lifetime`. Such requirements are referred to as +:t:`[obligation]s` and are detailed in the inference rules below. + +.. _fls_8b3d6393506e: + +obsolete range pattern +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c22067a551f0` +An :t:`obsolete range pattern` is a :t:`range pattern` that uses obsolete syntax +to express an :t:`inclusive range pattern`. + +.. _fls_211f11aa9a22: + +octal literal +^^^^^^^^^^^^^ + +:dp:`fls_3d2f7179b557` +An :t:`octal literal` is an :t:`integer literal` in base 8. + +.. _fls_e8dea79d113a: + +operand +^^^^^^^ + +:dp:`fls_01e6b7a3250b` +An :t:`operand` is an :t:`expression` nested within an :t:`expression`. + +.. _fls_da5ff72a0a55: + +operator expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c462df9a9a67` +An :t:`operator expression` is an :t:`expression` that involves an operator. + +.. _fls_bd1027d1493d: + +opt-out trait bound +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_754d427fa4c4` +An :t:`opt-out trait bound` is a :t:`trait bound` with :s:`Punctuation` ``?`` +that nullifies an implicitly added :t:`trait bound`. + +.. _fls_c61b35d2dbad: + +or-pattern +^^^^^^^^^^ + +:dp:`fls_e5755626c764` +An :t:`or-pattern` is a :t:`pattern` that matches on one of two or more :t:`[pattern-without-alternation]s` and or-s them using character 0x7C (vertical line). + +.. _fls_7a99061b3a9e: + +outer attribute +^^^^^^^^^^^^^^^ + +:dp:`fls_7a92259dbeb0` +An :t:`outer attribute` is an :t:`attribute` that applies to a subsequent +:t:`item`. + +.. _fls_3d70f76d7d8e: + +outer block doc +^^^^^^^^^^^^^^^ + +:dp:`fls_fb23fef2fff6` +An :t:`outer block doc` is a :t:`block comment` that applies to a subsequent +:t:`non-[comment]` :t:`construct`. + +.. _fls_8d93a8b7026d: + +outer doc comment +^^^^^^^^^^^^^^^^^ + +:dp:`fls_d42cb1009d2a` +An :t:`outer doc comment` is either an :t:`outer block doc` or an +:t:`outer line doc`. + +.. _fls_02407315b404: + +outer line doc +^^^^^^^^^^^^^^ + +:dp:`fls_3a4e5d2e7bc7` +An :t:`outer line doc` is a :t:`line comment` that applies to a subsequent +:t:`non-[comment]` :t:`construct`. + +.. _fls_c8a47b9370d8: + +outline module +^^^^^^^^^^^^^^ + +:dp:`fls_979f9fc4d69a` +An :t:`outline module` is a :t:`module` with an :s:`OutlineModuleSpecification`. + +.. _fls_3aa84a4b07eb: + +outlives bound +^^^^^^^^^^^^^^ + +:dp:`fls_f02054a11a6c` +An :t:`outlives bound` is a :t:`trait bound` which requires that a +:t:`lifetime parameter` or :t:`type` outlives a :t:`lifetime parameter`. + +.. _fls_70dd4e3a30ae: + +output lifetime +^^^^^^^^^^^^^^^ + +:dp:`fls_c4d4faa0db6d` +An :t:`output lifetime` is one of the following :t:`[lifetime]s`: + +.. _fls_2de38cec6aa3: + +output register +^^^^^^^^^^^^^^^ + +:dp:`fls_9509a7dc9585` +An :t:`output register` is a :t:`register` whose :t:`register name` is +used in a :t:`register argument` subject to :t:`direction modifier` ``out``, +``lateout``, ``inout``, or ``inlateout``. + +.. _fls_42d629a0ac39: + +output register expression +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d0a01f9cd64d` +An :t:`output register expression` is an :t:`expression` that is assigned the +:t:`value` of a :t:`register`. + +.. _fls_074ee6447669: + +overlap +^^^^^^^ + +:dp:`fls_a8d5f68aaa70` +Two :t:`[value]s` :t:`overlap` when + +.. _fls_d6d352a5d439: + +owner +^^^^^ + +:dp:`fls_9f0d74b64405` +An :t:`owner` is a :t:`variable` that holds a :t:`value`. + +.. _fls_03f8548d678f: + +Ownership +^^^^^^^^^ + +:dp:`fls_2b867ac36d6d` +:t:`Ownership` is a property of :t:`[value]s` that is central to the resource +management model of Rust. + +.. _fls_f80a8bcf706d: + +panic +^^^^^ + +:dp:`fls_1cb2e38a348e` +A :t:`panic` is an abnormal program state caused by invoking :t:`macro` +:std:`core::panic`. + +.. _fls_f1611f729cfd: + +panic_handler +^^^^^^^^^^^^^ + +:dp:`fls_4c6c64c27865` +:t:`Attribute` :c:`panic_handler` indicates that its related :t:`function` +defines the behavior of :t:`[panic]s`. + +.. _fls_463ef37d3577: + +parenthesized expression +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a55f4293177e` +A :t:`parenthesized expression` is an :t:`expression` that groups other +:t:`[expression]s`. + +.. _fls_3f9f39c377ea: + +parenthesized pattern +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4a74e53fbcc9` +A :t:`parenthesized pattern` is a :t:`pattern` that controls the precedence of +its :t:`[subpattern]s`. + +.. _fls_e218b21f99f7: + +Parenthesized pattern matching +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f9724d13c282` +:t:`Parenthesized pattern matching` performs :t:`pattern matching` with its +:t:`subpattern` and the same context :t:`value`. + +.. _fls_363dfae34ecc: + +parenthesized type +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d6a4cc287e58` +A :t:`parenthesized type` is a :t:`type` that disambiguates the interpretation +of :t:`[lexical element]s`. + +.. _fls_a6afcd9a39c1: + +partially hygienic +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a23ae0b3362b` +An :t:`identifier` is :t:`partially hygienic` when it has +:t:`mixed site hygiene`. + +.. _fls_f367a88262ba: + +passing convention +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7c1723efa400` +A :t:`passing convention` is the mechanism that defines how a :t:`value` is +transferred between :t:`[place]s`. + +.. _fls_1cd46f4ba2c7: + +path +^^^^ + +:dp:`fls_feca661e61c4` +A :t:`path` is a sequence of :t:`[path segment]s` logically separated by +:t:`namespace qualifier` ``::`` that resolves to an :t:`entity`. + +.. _fls_c670494892ea: + +path attribute +^^^^^^^^^^^^^^ + +:dp:`fls_9e14f781cce6` +The :t:`path attribute` is an :t:`attribute` (written as :c:`path`) that +specifies the :t:`module path` of the respective :t:`module` as a +:t:`string literal`. + +.. _fls_42944a27dd69: + +path expression +^^^^^^^^^^^^^^^ + +:dp:`fls_b0fce16fdd04` +A :t:`path expression` is an :t:`expression` that denotes a :t:`path`. + +.. _fls_8068c51bc530: + +Path expression resolution +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c8494ac66411` +:t:`Path expression resolution` is a form of :t:`path resolution` that applies +to a :t:`unqualified path expression`. + +.. _fls_a3d1eeed0c33: + +Path expression resolution implementation candidate lookup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_448b385b46d0` +:t:`Path expression resolution implementation candidate lookup` for a +:t:`path segment` and a :t:`trait` or :t:`type` proceeds as follows: + +.. _fls_986f6d118276: + +Path expression resolution inherent implementation candidate lookup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7020cc6f36e2` +:t:`Path expression resolution inherent implementation candidate lookup` for a +:t:`path segment` and a :t:`trait` or :t:`type` proceeds as follows: + +.. _fls_0a99812cf61c: + +Path expression resolution trait implementation candidate lookup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ffa1cae1c5f7` +:t:`Path expression resolution trait implementation candidate lookup` for a +:t:`path segment` and a :t:`trait` or :t:`type` proceeds as follows: + +.. _fls_d141c79953f8: + +path pattern +^^^^^^^^^^^^ + +:dp:`fls_6aa28c32f0c2` +A :t:`path pattern` is a :t:`pattern` that matches a :t:`constant`, a +:t:`unit enum variant`, or a :t:`unit struct constant` indicated by a :t:`path`. + +.. _fls_94d9f2d1d018: + +Path pattern matching +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_dc35bd54f0bd` +:t:`Path pattern matching` proceeds as follows: + +.. _fls_37c6bc647459: + +path prefix +^^^^^^^^^^^ + +:dp:`fls_13be81777a6f` +A :t:`path prefix` is a :t:`path` with its last :t:`path segment` and +:t:`namespace qualifier` ``::`` stripped. + +.. _fls_434290346b37: + +Path resolution +^^^^^^^^^^^^^^^ + +:dp:`fls_4d1b9d2415ac` +:t:`Path resolution` is a form of :t:`resolution` that applies to a :t:`path`. + +.. _fls_57197e6ddc8e: + +path segment +^^^^^^^^^^^^ + +:dp:`fls_bb7422132cee` +A :t:`path segment` is an element of a :t:`path`. + +.. _fls_0c59184a8927: + +pattern +^^^^^^^ + +:dp:`fls_fa3a792442c1` +A :t:`pattern` is a :t:`construct` that matches a :t:`value` which satisfies all +the criteria of the :t:`pattern`. + +.. _fls_ea250b100b3a: + +Pattern matching +^^^^^^^^^^^^^^^^ + +:dp:`fls_d12b8218ab7a` +:t:`Pattern matching` is the process of matching a :t:`pattern` against a :t:`value`. + +.. _fls_e0b607c22065: + +pattern-without-alternation +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_328c8487f0ce` +A :t:`pattern-without-alternation` is a :t:`pattern` that cannot be alternated. + +.. _fls_41fc9d96a389: + +pattern-without-range +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0cb6054c1278` +A :t:`pattern-without-range` is a :t:`pattern-without-alternation` that +excludes :t:`[range pattern]s`. + +.. _fls_b9a3a893627e: + +place +^^^^^ + +:dp:`fls_c8743f68dd10` +A :t:`place` is a location where a :t:`value` resides. + +.. _fls_ef859f861dc3: + +place expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_57d8103a9221` +A :t:`place expression` is an :t:`expression` that represents a memory +location. The following :t:`[expression]s` are :t:`[place expression]s`: + +.. _fls_f017a98047b3: + +place expression context +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9b44eed04704` +A :t:`place expression context` is a :t:`construct` that may evaluate its +:t:`operand` as a memory location. + +.. _fls_7d33a335a5d9: + +plane +^^^^^ + +:dp:`fls_21761ade4e63` +In :t:`Unicode`, a :t:`plane` is a continuous group of 65,536 +:t:`[code point]s`. + +.. _fls_e0c6aa6cf904: + +pointer +^^^^^^^ + +:dp:`fls_3dc46637e16c` +A :t:`pointer` is a :t:`value` of a :t:`pointer type`. + +.. _fls_f5bcfbb0db6b: + +pointer type +^^^^^^^^^^^^ + +:dp:`fls_3ce7cacf8621` +A :t:`pointer type` is a :t:`type` whose :t:`[value]s` indicate memory locations. + +.. _fls_f89876f4b9cf: + +pointer-to-address cast +^^^^^^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_i4zsbbmfa2fl` + An :t:`operand` of :t:`type` ``*const T`` or ``*mut T`` where ``T`` implements + the :std:`core::marker::Sized` :t:`trait` and a target :t:`integer type` + perform :t:`pointer-to-address cast`. A :t:`pointer-to-address cast` produces + an integer that represents the machine address of the referenced memory. If + the :t:`integer type` is smaller than the :t:`type` of the :t:`operand`, the + address is truncated. + +.. _fls_ee1b772575a0: + +positional register argument +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_51e1a1564f49` +A :t:`positional register argument` is a :t:`register argument` whose +configuration is not bound to an :t:`identifier`. + +.. _fls_6bcfd2477a74: + +Precedence +^^^^^^^^^^ + +:dp:`fls_7eeec4e0b542` +:t:`Precedence` is the order by which :t:`[expression]s` are evaluated in the +presence of other :t:`[expression]s`. + +.. _fls_ab2249be5061: + +prelude +^^^^^^^ + +:dp:`fls_3d4d9dc7f47f` +A :t:`prelude` is a collection of :t:`entities ` that are automatically +brought :t:`in scope` of every :t:`module` in a :t:`crate`. + +.. _fls_406fda378ee3: + +prelude attributes +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_5bdb8eae3646` +The following :t:`[built-in attribute]s` are :t:`[prelude attribute]s`: + +.. _fls_b5b7427df28e: + +prelude entity +^^^^^^^^^^^^^^ + +:dp:`fls_311eb734aef8` +A :t:`prelude entity` is an :t:`entity` declared in a :t:`prelude`. + +.. _fls_7046afbcab8e: + +prelude name +^^^^^^^^^^^^ + +:dp:`fls_9316077f840d` +A :t:`prelude name` is a :t:`name` of a :t:`prelude entity`. + +.. _fls_a96d222e793f: + +Primitive representation +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4740c8549730` +:t:`Primitive representation` is the :t:`type representation` of individual +:t:`[integer type]s`. :t:`Primitive representation` applies only to an +:t:`enum type` that is not a :t:`zero-variant enum type`. It is possible to +combine :t:`C representation` and :t:`primitive representation`. + +.. _fls_f2f08f393bdc: + +primitive-to-integer cast +^^^^^^^^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_pcromhosmnf0` + An operand of :t:`type` :c:`bool` or :t:`type` :c:`char` and a + target :t:`integer type` perform :t:`primitive-to-integer cast`. A + :t:`primitive-to-integer cast` + +.. _fls_10df8780d237: + +principal trait +^^^^^^^^^^^^^^^ + +:dp:`fls_1c986fd7a5e3` +The :t:`principal trait` of :t:`trait object type` is the first :t:`trait bound`. + +.. _fls_4ac2eb8a19f9: + +Private visibility +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_96316d667ab0` +:t:`Private visibility` is a kind of :t:`visibility` that allows a :t:`name` +to be referred to only by the current :t:`module` of the :t:`entity`, and its +descendant :t:`[module]s`. + +.. _fls_2ee2e1d99611: + +proc-macro crate +^^^^^^^^^^^^^^^^ + +:dp:`fls_703fb038b345` +A :t:`proc-macro crate` is a :t:`crate` whose :t:`crate type` is ``proc-macro``. + +.. _fls_53e8f9c19aad: + +proc_macro +^^^^^^^^^^ + +:dp:`fls_56362c27c3d4` +:t:`Attribute` :c:`proc_macro` turns the related :t:`function` into a +:t:`function-like macro`. + +.. _fls_b5b366a8f99e: + +proc_macro_attribute +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c5bf03e83af0` +:t:`Attribute` :c:`proc_macro_attribute` turns the related :t:`function` into +an :t:`attribute macro`. + +.. _fls_61c138ad0d03: + +proc_macro_derive +^^^^^^^^^^^^^^^^^ + +:dp:`fls_c0aa008012fa` +:t:`Attribute` :c:`proc_macro_derive` turns the related :t:`function` into a +:t:`derive macro`, where :s:`DeriveName` defines the :t:`name` of the +:t:`derive macro` available to :t:`attribute` :c:`derive`. + +.. _fls_cc2c7a2a4758: + +procedural macro +^^^^^^^^^^^^^^^^ + +:dp:`fls_c0cc7a8713a7` +A :t:`procedural macro` is a :t:`macro` that encapsulates syntactic +transformations in a :t:`function`. :t:`[Procedural macro]s` consume one or more +streams of :t:`[token]s` and produce a stream of :t:`[token]s`. + +.. _fls_3f59d7921172: + +program entry point +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1500d7a3d418` +A :t:`program entry point` is a :t:`function` that is invoked at the start of +a Rust program. + +.. _fls_597752b5f42a: + +Public visibility +^^^^^^^^^^^^^^^^^ + +:dp:`fls_24a7c0f3c422` +:t:`Public visibility` is a kind of :t:`visibility` that allows for a :t:`name` +to be referred to from arbitrary :t:`module` ``M`` as long as the ancestor +:t:`[module]s` of the related :t:`entity` can be referred to from ``M``. + +.. _fls_ae7ae9aa06c5: + +punctuator +^^^^^^^^^^ + +:dp:`fls_52dbd456e213` +A :t:`punctuator` is a character or a sequence of characters in category +:s:`Punctuation`. + +.. _fls_4142376b1792: + +pure identifier +^^^^^^^^^^^^^^^ + +:dp:`fls_fabfd4088012` +A :t:`pure identifier` is an :t:`identifier` that does not include :t:`[weak +keyword]s`. + +.. _fls_5e90bbd238dd: + +qualified fn trait +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_895a3dd46ccc` +A :t:`qualified fn trait` is a :t:`construct` that refers to the +:std:`core::ops::Fn`, :std:`core::ops::FnMut`, or :std:`core::ops::FnOnce` +:t:`trait`. + +.. _fls_3900e767c737: + +qualified path expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_759af95eb381` +A :t:`qualified path expression` is a :t:`path expression` that resolves +through a :t:`qualified type`. + +.. _fls_c5657b9709c0: + +qualified type +^^^^^^^^^^^^^^ + +:dp:`fls_f456ce00f276` +A :t:`qualified type` is a :t:`type` that is restricted to a set of +:t:`[implementation]s` that exhibit :t:`implementation conformance` to a +:t:`qualifying trait`. + +.. _fls_1528a6e43da9: + +qualified type path +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e8af847b7a28` +A :t:`qualified type path` is a :t:`type path` that resolves through a +:t:`qualified type`. + +.. _fls_626346e9b50f: + +qualifying trait +^^^^^^^^^^^^^^^^ + +:dp:`fls_f9dbf6c7113b` +A :t:`qualifying trait` is a :t:`trait` that imposes a restriction on a +:t:`qualified type`. + +.. _fls_6453d5cbb2d6: + +range expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_7ce40f45c4bb` +A :t:`range expression` is an :t:`expression` that constructs a range. + +.. _fls_1b39af60a1f7: + +range expression high bound +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f95e96c48036` +A :t:`range expression high bound` is an :t:`operand` that specifies the end of +a range. + +.. _fls_bbdfe3267da4: + +range expression low bound +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_736903e20fcf` +A :t:`range expression low bound` is an :t:`operand` that specifies the start of +a range. + +.. _fls_220af0a8037f: + +range pattern +^^^^^^^^^^^^^ + +:dp:`fls_2b2e1d4b57d6` +A :t:`range pattern` is a :t:`pattern` that matches :t:`[value]s` which fall +within a range. + +.. _fls_1e1613bad3e2: + +range pattern bound +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_689524ee615d` +A :t:`range pattern bound` is a constraint on the range of a :t:`range pattern`. + +.. _fls_c7366d2f291c: + +range pattern high bound +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_6920963b1013` +A :t:`range pattern high bound` is a :t:`range pattern bound` that specifies the +end of a range. + +.. _fls_e4cbb885b1e2: + +range pattern low bound +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_056f36488e5a` +A :t:`range pattern low bound` is a :t:`range pattern bound` that specifies the +start of a range. + +.. _fls_4bb31ab8e11d: + +Range pattern matching +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_290b029795bf` +:t:`Range pattern matching` proceeds as follows: + +.. _fls_654a3e817ed9: + +range-from expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9203e93b1a10` +A :t:`range-from expression` is a :t:`range expression` that specifies an +included :t:`range expression low bound`. + +.. _fls_8c86e60ce463: + +range-from-to expression +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f62231ff2d2e` +A :t:`range-from-to expression` is a :t:`range expression` that specifies an +included :t:`range expression low bound` and an excluded +:t:`range expression high bound`. + +.. _fls_88dc4bfd1380: + +range-full expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_44e0c2bbc352` +For :t:`range-full expression`, see :t:`full range expression`. + +.. _fls_1d0d2703f17c: + +range-inclusive expression +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_de6350da4cf3` +A :t:`range-inclusive expression` is a :t:`range expression` that specifies an +included :t:`range expression low bound` and an included +:t:`range expression high bound`. + +.. _fls_1920face8b7c: + +range-to expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3456a3946958` +A :t:`range-to expression` is a :t:`range expression` that specifies an excluded +:t:`range expression high bound`. + +.. _fls_8c6a7778a6d6: + +range-to-inclusive expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_741182400935` +A :t:`range-to-inclusive expression` is a :t:`range expression` that specifies +an included :t:`range expression high bound`. + +.. _fls_5ae1cef5bba9: + +raw +^^^ + +:dp:`fls_8081f23ed325` +:t:`Assembly option` :c:`raw` causes :t:`[assembly instruction]s` to be parsed +raw, without any special handling of :t:`[register parameter]s`. + +.. _fls_4b0a1a0cadcf: + +raw borrow expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e4722c2f5b41` +A :t:`raw borrow expression` is an :t:`expression` that creates a :t:`raw pointer` to the memory location of its :t:`operand` without incurring a :t:`borrow`. + +.. _fls_50544ab813c2: + +raw byte string literal +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9f1d62f6f58a` +A :t:`raw byte string literal` is a :t:`simple byte string literal` that does not +recognize :t:`[escaped character]s`. + +.. _fls_8fb85c8ceb3b: + +raw c string literal +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_efee7c482211` +A :t:`raw c string literal` is a :t:`simple c string literal` that does not +recognize :t:`[escaped character]s`. + +.. _fls_967d95c82f84: + +raw pointer +^^^^^^^^^^^ + +:dp:`fls_cff291eedaca` +A :t:`raw pointer` is a pointer of a :t:`raw pointer type`. + +.. _fls_f4c32bc0f141: + +raw pointer type +^^^^^^^^^^^^^^^^ + +:dp:`fls_deab909db0f8` +A :t:`raw pointer type` is an :t:`indirection type` without validity guarantees. + +.. _fls_b1d025d0afed: + +raw string literal +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_95b394e7d48f` +A :t:`raw string literal` is a :t:`simple string literal` that does not +recognize :t:`[escaped character]s`. + +.. _fls_b5e40195afc3: + +reachable control flow path +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e397482f62ed` +A :t:`reachable control flow path` is a control flow path that can be +taken by the execution of a program between two given points in the program. + +.. _fls_0b2b946cb335: + +receiver operand +^^^^^^^^^^^^^^^^ + +:dp:`fls_0d1213bffe51` +A :t:`receiver operand` is an :t:`operand` that denotes the :t:`value` whose +:t:`method` is being invoked by a :t:`method call expression`. + +.. _fls_b06171ee5e2a: + +receiver type +^^^^^^^^^^^^^ + +:dp:`fls_90103c4946c2` +A :t:`receiver type` is the :t:`type` of the :t:`receiver operand` +of a :t:`method call expression`. + +.. _fls_bfad6adf46c8: + +record enum variant +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_92aa103338f0` +A :t:`record enum variant` is an :t:`enum variant` with a +:s:`RecordStructFieldList`. + +.. _fls_4e274d38fe94: + +record struct +^^^^^^^^^^^^^ + +:dp:`fls_954552a44bb9` +A :t:`record struct` is a :t:`struct` with a :s:`RecordStructFieldList`. + +.. _fls_7d8eeb30c807: + +record struct field +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3ab2c64180e6` +A :t:`record struct field` is a :t:`field` of a :t:`record struct type`. + +.. _fls_664475d5e8b9: + +record struct pattern +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_dcf54f57a296` +A :t:`record struct pattern` is a :t:`pattern` that matches a +:t:`enum variant value`, a :t:`struct value`, or a :t:`union value`. + +.. _fls_cc67696bfc62: + +Record struct pattern matching +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f3aa1461c18e` +:t:`Record struct pattern matching` proceeds as follows: + +.. _fls_4c0e18b9885f: + +record struct type +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1e67d546a05f` +A :t:`record struct type` is the :t:`type` of a :t:`record struct`. + +.. _fls_30bfcc6d4422: + +record struct value +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_79788798b642` +A :t:`record struct value` is a :t:`value` of a :t:`record struct type`. + +.. _fls_09b30aa80b4b: + +recursion_limit +^^^^^^^^^^^^^^^ + +:dp:`fls_7221b9bbaa1f` +:t:`Attribute` :c:`recursion_limit` sets the maximum depth of +:t:`macro expansion` and :t:`auto-dereferencing`. + +.. _fls_0270abfdd050: + +recursive type +^^^^^^^^^^^^^^ + +:dp:`fls_a37d9e170dc7` +A :t:`recursive type` is a :t:`type` whose contained :t:`[type]s` refer back to +the containing :t:`type`, either directly or by referring to another :t:`type` +which refers back to the original :t:`recursive type`. + +.. _fls_c0b286722bd4: + +reference +^^^^^^^^^ + +:dp:`fls_2296684be909` +A :t:`reference` is a :t:`value` of a :t:`reference type`. A :t:`reference` +can be obtained explicitly by using a :t:`borrow expression` or implicitly in +certain scenarios. + +.. _fls_a6c6b55fc9b8: + +reference identifier pattern +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3d6d9a2fb395` +A :t:`reference identifier pattern` is an :t:`identifier pattern` with +:t:`keyword` ``ref``. + +.. _fls_18d199804565: + +reference pattern +^^^^^^^^^^^^^^^^^ + +:dp:`fls_15bd1bf3fcf2` +A :t:`reference pattern` is a :t:`pattern` that dereferences a :t:`pointer` that +is being matched. + +.. _fls_c01542da42cc: + +Reference pattern matching +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a03c72c00294` +:t:`Reference pattern matching` proceeds as follows: + +.. _fls_e002ca685a27: + +reference type +^^^^^^^^^^^^^^ + +:dp:`fls_14318d0b1fcf` +A :t:`reference type` is an :t:`indirection type` with :t:`ownership`. + +.. _fls_777b45e42571: + +referent +^^^^^^^^ + +:dp:`fls_b960a34bb64c` +A :t:`referent` is the :t:`value` pointed-to by a :t:`reference`. + +.. _fls_6f228ac08083: + +refutability +^^^^^^^^^^^^ + +:dp:`fls_a170b9f366a2` +:t:`refutability` is a property of :t:`[pattern]s` that expresses the ability to +match all possible values of a :t:`type`. + +.. _fls_b71eed3f6eac: + +refutable constant +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a7cf747f6274` +A :t:`refutable constant` is a :t:`constant` of a :t:`refutable type`. + +.. _fls_42e9624aa289: + +refutable pattern +^^^^^^^^^^^^^^^^^ + +:dp:`fls_85114e50d8c1` +A :t:`refutable pattern` is a :t:`pattern` that has a possibility of not +matching the :t:`value` it is being matched against. + +.. _fls_80f9e204f974: + +refutable type +^^^^^^^^^^^^^^ + +:dp:`fls_f16904187050` +A :t:`refutable type` is a :t:`type` that has more than one :t:`value`. + +.. _fls_fe3baa79f123: + +register +^^^^^^^^ + +:dp:`fls_3155c35c4e4c` +A :t:`register` is a hardware component capable of holding data that can be +read and written. + +.. _fls_c68936799684: + +register argument +^^^^^^^^^^^^^^^^^ + +:dp:`fls_6f2f53edfc16` +A :t:`register argument` is a :t:`construct` that configures the input +and output of a :t:`register`, and optionally binds the configuration to an +:t:`identifier`. + +.. _fls_2668cf3b125b: + +register class +^^^^^^^^^^^^^^ + +:dp:`fls_4cd648deef48` +A :t:`register class` represents a set of :t:`[register]s`. + +.. _fls_41abf65a5590: + +register class argument +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_65776fcb21ac` +A :t:`register class argument` is a :t:`register argument` that uses a +:t:`register class name`. + +.. _fls_b672376ffa6d: + +register class name +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ea0114a2eb42` +A :t:`register class name` is a target-specific string that identifies a +:t:`register class`. + +.. _fls_8c489f7ae4a2: + +register expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_033b96aae4c7` +A :t:`register expression` is either an :t:`input-output register expression`, a :t:`simple register expression` or a :t:`const register expression`. + +.. _fls_0f47e0bd60c9: + +register name +^^^^^^^^^^^^^ + +:dp:`fls_8b5f7cb95c83` +A :t:`register name` is either the :t:`explicit register name` of a +:t:`register`, or the :t:`register class name` of the :t:`register class` a +:t:`register` belongs to. + +.. _fls_f39cc7f97dba: + +register parameter +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3f747bdd8b0b` +A :t:`register parameter` is a substring delimited by characters 0x7B (left +curly bracket) and 0x7D (right curly bracket) that is substituted with a +:t:`register argument` in an :t:`assembly instruction`. + +.. _fls_812f4e7890e4: + +register parameter modifier +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_bf5d2cb2b511` +A :t:`register parameter modifier` is a substring that starts with character +0x3A (colon), follows a :t:`register parameter`, and changes the formatting of +the related :t:`register parameter`. + +.. _fls_31fdcfe21804: + +remainder assignment +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2dd89ca70eb5` +A :t:`remainder assignment` is a :t:`remainder assignment expression`. + +.. _fls_fe1783c9b7aa: + +remainder assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_651edb4db851` +A :t:`remainder assignment expression` is a :t:`compound assignment expression` +that uses remainder division. + +.. _fls_f75ed9a80927: + +remainder expression +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a08195e8c40f` +A :t:`remainder expression` is an :t:`arithmetic expression` that uses remainder +division. + +.. _fls_353941a642c5: + +renaming +^^^^^^^^ + +:dp:`fls_91b6c01fd47b` +A :t:`renaming` provides an alternative :t:`name` for an existing name. + +.. _fls_c88c0e7e3686: + +repeat operand +^^^^^^^^^^^^^^ + +:dp:`fls_b8a73cd78f36` +A :t:`repeat operand` is an :t:`operand` that specifies the element being +repeated in an :t:`array repetition constructor`. + +.. _fls_d29c52ad39ce: + +repetition index +^^^^^^^^^^^^^^^^ + +:dp:`fls_25f5e4e32e72` +A :t:`repetition index` is a monotonically increasing number that is +initialized to zero, and incremented by one. + +.. _fls_e92aa25c41aa: + +repetition operator +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9e189fe0b902` +A :t:`repetition operator` is a :t:`construct` that indicates the number +of times a :t:`macro repetition in matching` or a +:t:`macro repetition in transcription` can be repeated. + +.. _fls_c0740d189633: + +repr +^^^^ + +:dp:`fls_0ca6ca2a4c74` +:t:`Attribute` :c:`repr` shall indicate the :t:`type representation` of the +related :t:`type`. + +.. _fls_b113a3c97fa5: + +representation +^^^^^^^^^^^^^^ + +:dp:`fls_8a5b37248fc3` +For :t:`representation`, see :t:`type representation`. + +.. _fls_b263fcaeece3: + +representation modifier +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b9f17166ce37` +A :t:`representation modifier` is a :t:`construct` that modifies the +:t:`alignment` of a :t:`type`. + +.. _fls_3bb459419318: + +reserved keyword +^^^^^^^^^^^^^^^^ + +:dp:`fls_a1d3fe819808` +A :t:`reserved keyword` is a :t:`keyword` that is not yet in use. + +.. _fls_1352f271e41b: + +resolution +^^^^^^^^^^ + +:dp:`fls_f405b2980659` +:t:`resolution` is the process of finding a unique interpretation for a +:t:`field access expression`, a :t:`method call expression`, a :t:`call +expression` or a :t:`path`. + +.. _fls_5fc718ce1847: + +resolution context +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2f42d9142cd9` +A :t:`resolution context` is a set of :t:`entities ` that informs +:t:`path resolution` by restricting the number of +:t:`candidate selected entities `. + +.. _fls_532fb1698069: + +rest pattern +^^^^^^^^^^^^ + +:dp:`fls_31e8ba34f535` +A :t:`rest pattern` is a :t:`pattern` that matches zero or more elements that +have not already been matched. + +.. _fls_17dc249475c0: + +return expression +^^^^^^^^^^^^^^^^^ + +:dp:`fls_df52975bf02a` +A :t:`return expression` is an :t:`expression` that optionally yields a +:t:`value` and causes control flow to return to the end of the enclosing +:t:`control flow boundary`. + +.. _fls_96db8d4609fe: + +return type +^^^^^^^^^^^ + +:dp:`fls_8772d60fb258` +A :t:`return type` is the :t:`type` of the result a :t:`function`, :t:`closure type` or :t:`function pointer type` returns. + +.. _fls_fb654932e7b5: + +right operand +^^^^^^^^^^^^^ + +:dp:`fls_e084d7feb128` +A :t:`right operand` is an :t:`operand` that appears on the right-hand side of a +:t:`binary operator`. + +.. _fls_406e29137e95: + +Rule matching +^^^^^^^^^^^^^ + +:dp:`fls_0e57ae6eedec` +:t:`Rule matching` is the process of consuming a :s:`TokenTree` in an attempt +to fully satisfy the :t:`macro matcher` of a :t:`macro rule` that belongs to a +resolved :t:`declarative macro`. + +.. _fls_6af0bc23d771: + +runtime attributes +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_dde5721ed1f5` +The following :t:`[built-in attribute]s` are :t:`[runtime attribute]s`: + +.. _fls_a2c927692a9a: + +Rust ABI +^^^^^^^^ + +* :dp:`fls_a2d8ltpgtvn6` + ``extern "Rust"`` - The default :t:`ABI` of a Rust program, referred to as + :t:`Rust ABI`. + +.. _fls_c62759b64acb: + +rustc +^^^^^ + +:dp:`fls_54a6327a7a31` +:t:`rustc` is a compiler that implements the FLS. + +.. _fls_4e9f8be097fe: + +safety invariant +^^^^^^^^^^^^^^^^ + +:dp:`fls_6ca9a6542352` +A :t:`safety invariant` is an invariant that when violated may result in +:t:`undefined behavior`. + +.. _fls_24bcaab8496d: + +scalar type +^^^^^^^^^^^ + +:dp:`fls_baa661124799` +A :t:`scalar type` is either a :c:`bool` :t:`type`, a :c:`char` :t:`type`, or a +:t:`numeric type`. + +.. _fls_273854f0f2ba: + +scope +^^^^^ + +:dp:`fls_1c0f3b477601` +A :t:`scope` is a region of program text where an :t:`entity` can be referred +to. An :t:`entity` is :t:`in scope` when it can be referred to. + +.. _fls_3d46a1d1d3cb: + +scope hierarchy +^^^^^^^^^^^^^^^ + +:dp:`fls_402668d26d08` +The :t:`scope hierarchy` reflects the nesting of :t:`[scope]s` as introduced +by :t:`[scoping construct]s`. An inner :t:`scope` introduced by a nested +:t:`scoping construct` is the child of an outer :t:`scope` introduced by an +enclosing :t:`scoping construct`. + +.. _fls_fd383f8d6ac8: + +scoping construct +^^^^^^^^^^^^^^^^^ + +:dp:`fls_6a42ad312ffb` +A :t:`scoping construct` is a :t:`construct` that introduces :t:`[scope]s` +into the :t:`scope hierarchy`. The following :t:`[construct]s` are +:t:`[scoping construct]s`: + +.. _fls_1a5789822e16: + +selected field +^^^^^^^^^^^^^^ + +:dp:`fls_d9e469530297` +A :t:`selected field` is a :t:`field` that is selected by a +:t:`field access expression`. + +.. _fls_6be82670beba: + +Self +^^^^ + +:dp:`fls_d75d76f3fa3d` +:t:`Self` is either an implicit :t:`type parameter` in :t:`[trait]s` or an +implicit :t:`type alias` in :t:`[implementation]s`, and refers to the +:t:`type` that implements a :t:`trait`. + +.. _fls_656437062061: + +self input lifetime +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9d75b2e7ee43` +A :t:`self input lifetime` is an :t:`input lifetime` of a :t:`self parameter` +that is a :t:`lifetime` of a :t:`reference type` whose referent is :c:`Self`. + +.. _fls_60ff1ecac33c: + +self parameter +^^^^^^^^^^^^^^ + +:dp:`fls_b2f59034c971` +A :t:`self parameter` is a :t:`function parameter` expressed by :t:`keyword` +``self``. + +.. _fls_f684fbee038c: + +self public modifier +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_04af530b462c` +A :t:`self public modifier` is a :t:`visibility modifier` that grants a +:t:`name` :t:`private visibility`. A :t:`self public modifier` is equivalent +to a :t:`simple path public modifier` where the :t:`simple path` denotes +:t:`keyword` ``self``. + +.. _fls_ec4790b2a549: + +Self scope +^^^^^^^^^^ + +:dp:`fls_c8ead4d55d46` +A :t:`Self scope` is a :t:`scope` for :c:`Self`. + +.. _fls_e062d4b04062: + +send type +^^^^^^^^^ + +:dp:`fls_db72ccf516e8` +A :t:`send type` is a :t:`type` that implements the :std:`core::marker::Send` +:t:`trait`. + +.. _fls_e48a9557d28a: + +separator +^^^^^^^^^ + +:dp:`fls_d5686f1e7418` +A :t:`separator` is a character or a string that separates adjacent :t:`[lexical +element]s`. A :t:`whitespace string` is a :t:`separator`. + +.. _fls_bc3da1024323: + +sequence type +^^^^^^^^^^^^^ + +:dp:`fls_4747f3da90e8` +A :t:`sequence type` is a :t:`type` that represents a sequence of elements. + +.. _fls_202f5573eb5a: + +shadowed +^^^^^^^^ + +:dp:`fls_7e07c2a00204` +:t:`shadowing` is a property of :t:`[name]s`. A :t:`name` is :t:`shadowed` +when another :t:`name` with the same characters is introduced in the same +:t:`scope` within the same :t:`namespace`, effectively hiding it. + +.. _fls_8eedc64a4e88: + +shadowing +^^^^^^^^^ + +:dp:`fls_a0bc5753d03a` +:t:`shadowing` is a property of :t:`[name]s`. A :t:`name` is :t:`shadowed` +when another :t:`name` with the same characters is introduced in the same +:t:`scope` within the same :t:`namespace`, effectively hiding it. + +.. _fls_814770e9ee35: + +shared borrow +^^^^^^^^^^^^^ + +:dp:`fls_6e7b7987ee48` +A :t:`shared borrow` is a :t:`borrow` produced by evaluating an +:t:`immutable borrow expression`. + +.. _fls_e9eeed0fd450: + +shared reference +^^^^^^^^^^^^^^^^ + +:dp:`fls_9d2a46237436` +A :t:`shared reference` is a :t:`value` of a :t:`shared reference type`. + +.. _fls_5b01b09824da: + +shared reference type +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_75789e53c934` +A :t:`shared reference type` is a :t:`reference type` not subject to +:t:`keyword` ``mut``. + +.. _fls_30a1391ecb73: + +shift left assignment +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_72965aa1cead` +A :t:`shift left assignment` is a :t:`shift left assignment expression`. + +.. _fls_d811302f9103: + +shift left assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7a1216adf3e1` +A :t:`shift left assignment expression` is a :t:`compound assignment expression` +that uses bit shift left arithmetic. + +.. _fls_3ab48a6890ac: + +shift left expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_368916d0757e` +A :t:`shift left expression` is a :t:`bit expression` that uses bit shift left +arithmetic. + +.. _fls_2f1efee788c3: + +shift right assignment +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_cc0a334e65ac` +A :t:`shift right assignment` is a :t:`shift right assignment expression`. + +.. _fls_c7133e9fc9dd: + +shift right assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_bd6efaec9f38` +A :t:`shift right assignment expression` is a +:t:`compound assignment expression` that uses bit shift right arithmetic. + +.. _fls_b74a92995093: + +shift right expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_fe84584fbde0` +A :t:`shift right expression` is a :t:`bit expression` that uses bit shift right +arithmetic. + +.. _fls_bf7437ff07b4: + +shorthand deconstructor +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2777e55ef246` +A :t:`shorthand deconstructor` is a :t:`construct` that matches the :t:`name` +of a :t:`field` and binds the :t:`value` of the matched :t:`field` to a +:t:`binding`. + +.. _fls_8c752060dbe8: + +shorthand initializer +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4ce00f55e2de` +A :t:`shorthand initializer` is a :t:`construct` that specifies the :t:`name` +of a :t:`field` in a :t:`struct expression`. + +.. _fls_70389bc60618: + +should_panic +^^^^^^^^^^^^ + +:dp:`fls_5e96e6fa6671` +:t:`Attribute` :c:`should_panic` indicates that for the related +:t:`testing function` to pass, it should :t:`panic`. + +.. _fls_b2299c14d9cf: + +signed integer type +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0a0ea3bf9ea2` +A :t:`signed integer type` is an :t:`integer type` whose :t:`[value]s` denote +signed whole numbers. + +.. _fls_5c511490c280: + +simple byte string literal +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ebadf49cd4a1` +A :t:`simple byte string literal` is a :t:`byte string literal` that consists of multiple +:s:`[AsciiCharacter]s`. + +.. _fls_c0a39b4fcebb: + +simple c string literal +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4efc4768053c` +A :t:`simple c string literal` is a :t:`c string literal` where the characters are +:t:`Unicode` characters. + +.. _fls_c62b3974eaf6: + +simple import +^^^^^^^^^^^^^ + +:dp:`fls_b71e69ba9cc3` +A :t:`simple import` is a :t:`use import` that brings all :t:`entities ` +it refers to into scope, optionally with a different +:t:`name` than they are declared with by using a :t:`renaming`. + +.. _fls_68abe5e37254: + +simple import path +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9bb73c641839` +A :t:`simple import path` is the :t:`path` constructed by appending the last +:t:`path segment` of a :t:`simple import`'s :t:`simple path` to the +:t:`import path prefix`. + +.. _fls_5f2b45c875c4: + +simple path +^^^^^^^^^^^ + +:dp:`fls_ccaab32bb607` +A :t:`simple path` is a :t:`path` whose :t:`[path segment]s` consist of either +:t:`[identifier]s` or certain :t:`[keyword]s` as defined in the syntax rules +above. + +.. _fls_a6f2619af941: + +simple path prefix +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e86a85c498d6` +A :t:`simple path prefix` is the leading :t:`simple path` of a :t:`glob import` +or a :t:`nesting import`. + +.. _fls_ccb8a51787b6: + +simple path public modifier +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_246cbffde8f3` +A :t:`simple path public modifier` is a :t:`visibility modifier` that grants a +:t:`name` :t:`public visibility` within the provided :t:`simple path` only. + +.. _fls_458b80c06815: + +simple path resolution +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3b9ca75ea03f` +:t:`simple path resolution` is a kind of :t:`path resolution` that applies to +a :t:`simple path`. + +.. _fls_b9cdffaa2943: + +simple public modifier +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e422f3e52909` +A :t:`simple public modifier` is a :t:`visibility modifier` that grants a +:t:`name` :t:`public visibility`. + +.. _fls_58d46a577f7b: + +simple punctuator +^^^^^^^^^^^^^^^^^ + +:dp:`fls_62539d6c63e2` +A :t:`simple punctuator` is one of the following special characters: + +.. _fls_035a821f8fe7: + +simple register expression +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_729b76c9851f` +A :t:`simple register expression` is either an :t:`expression` or an +:t:`underscore expression`. + +.. _fls_cec3e4e2eefb: + +simple string literal +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f7e1491e9c47` +A :t:`simple string literal` is a :t:`string literal` where the characters are +:t:`Unicode` characters. + +.. _fls_3d934951cb26: + +single segment path +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_839884610020` +A :t:`single segment path` is a :t:`path` consisting of exactly one +:t:`path segment`. + +.. _fls_c4adf01c9fb0: + +size +^^^^ + +:dp:`fls_5149a24b8533` +The :t:`size` of a :t:`type` is the offset in bytes between successive elements +in :t:`array type` ``[T, N]`` where ``T`` is the :t:`type` of the :t:`value`, +including any padding for :t:`alignment`. :t:`Size` is a multiple of the +:t:`alignment`. + +.. _fls_92c53edec876: + +size operand +^^^^^^^^^^^^ + +:dp:`fls_5fce0b034ff6` +A :t:`size operand` is a :t:`constant expression` or an :t:`inferred constant` +that specifies the length of an :t:`array type`. + +.. _fls_d3f48a58709e: + +sized type +^^^^^^^^^^ + +:dp:`fls_571f983c8d53` +A :t:`sized type` is a :t:`type` that implements the +:std:`core::marker::Sized` :t:`trait`. + +.. _fls_de1447acdbb7: + +slice +^^^^^ + +:dp:`fls_70e2712d434b` +A :t:`slice` is a :t:`value` of a :t:`slice type`. + +.. _fls_ff0cad1e619a: + +slice pattern +^^^^^^^^^^^^^ + +:dp:`fls_ebb794474a7a` +A :t:`slice pattern` is a :t:`pattern` that matches :t:`[array]s` of fixed size +and :t:`[slice]s` of dynamic size. + +.. _fls_65c24b02d4c3: + +Slice pattern matching +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ee0a23688bae` +:t:`Slice pattern matching` proceeds as follows: + +.. _fls_af8fa26e0a11: + +slice type +^^^^^^^^^^ + +:dp:`fls_41b921982f4e` +A :t:`slice type` is a :t:`sequence type` that provides a view into a sequence +of elements. + +.. _fls_57dd9279a2a0: + +source file +^^^^^^^^^^^ + +:dp:`fls_211c9e89a2f4` +A :t:`source file` contains the program text consisting of :t:`[inner +attribute]s`, :t:`[inner doc comment]s`, and :t:`[item]s`. The location of a +:t:`source file` is tool defined. + +.. _fls_f75015c67181: + +specialized cast +^^^^^^^^^^^^^^^^ + +:dp:`fls_24c049587092` +A :t:`type cast expression` with the following characteristics performs a +:t:`specialized cast`: + +.. _fls_aa9ebb0168a9: + +statement +^^^^^^^^^ + +:dp:`fls_8b21aa97faf8` +A :t:`statement` is a :t:`construct` described by :s:`Statement`. + +.. _fls_a27694713114: + +static +^^^^^^ + +:dp:`fls_35a128ca07ca` +A :t:`static` is a :t:`value` that is associated with a specific memory +location. + +.. _fls_78184ed1f923: + +static initializer +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_fa7ae3bff3a7` +A :t:`static initializer` is a :t:`construct` that provides the :t:`value` of +its related :t:`static`. + +.. _fls_cec7efd05b7b: + +static lifetime elision +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_1c27260db816` +:t:`static lifetime elision` is a form of :t:`lifetime elision` that applies to +the :t:`type ascription` of :t:`[constant]s` and :t:`[static]s`. + +.. _fls_fc0b1442371a: + +str +^^^ + +:dp:`fls_b42e27ed7e0e` +A :t:`str` is a :t:`sequence type` that represents a :t:`slice` of 8-bit unsigned +bytes. + +.. _fls_77c79878c3ac: + +strict keyword +^^^^^^^^^^^^^^ + +:dp:`fls_0392abed9f32` +A :t:`strict keyword` is a :t:`keyword` that always holds its special meaning. + +.. _fls_154bf328e440: + +string literal +^^^^^^^^^^^^^^ + +:dp:`fls_f2b7dca1e554` +A :t:`string literal` is a :t:`literal` that consists of multiple characters. + +.. _fls_05f8e28bd0ed: + +struct +^^^^^^ + +:dp:`fls_62a095afd078` +A :t:`struct` is an :t:`abstract data type` declared with a +:s:`StructDeclaration`. + +.. _fls_03d5bad002da: + +struct expression +^^^^^^^^^^^^^^^^^ + +:dp:`fls_192b2c43e963` +A :t:`struct expression` is an :t:`expression` that constructs an +:t:`enum value`, a :t:`struct value`, or a :t:`union value`. + +.. _fls_b3e3a0f80701: + +struct field +^^^^^^^^^^^^ + +:dp:`fls_68873c0759c3` +A :t:`struct field` is a :t:`field` declared in a :t:`struct type`. + +.. _fls_51c8496ed507: + +struct pattern +^^^^^^^^^^^^^^ + +:dp:`fls_7559bf30fefd` +A :t:`struct pattern` is a :t:`pattern` that matches an :t:`enum value`, a +:t:`struct value`, or a :t:`union value`. + +.. _fls_a11c7f681587: + +struct type +^^^^^^^^^^^ + +:dp:`fls_22ae6fb36bc7` +A :t:`struct type` is an :t:`abstract data type` that is a product of other +:t:`[type]s`. + +.. _fls_6367c01ac077: + +struct value +^^^^^^^^^^^^ + +:dp:`fls_21439a699faf` +A :t:`struct value` is a :t:`value` of a :t:`struct type`. + +.. _fls_75232f772c78: + +structurally equal +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f90c3cc039d0` +A :t:`type` is :t:`structurally equal` when its :t:`[value]s` can be compared +for equality by structure. + +.. _fls_1e0a61a6acd6: + +subexpression +^^^^^^^^^^^^^ + +:dp:`fls_c3f59262b818` +A :t:`subexpression` is an :t:`expression` nested within another +:t:`expression`. + +.. _fls_fb2486366f12: + +subject expression +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_18388cfddf5c` +A :t:`subject expression` is an :t:`expression` that controls :t:`[for loop]s`, +:t:`[if expression]s`, and :t:`[match expression]s`. + +.. _fls_fcc0203ac424: + +subject let expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e086a37aa44c` +A :t:`subject let expression` is an :t:`expression` that controls +:t:`[if let expression]s` and :t:`[while let loop]s`. + +.. _fls_7d4824c30568: + +subpattern +^^^^^^^^^^ + +:dp:`fls_59a9fe622f11` +A :t:`subpattern` is a :t:`pattern` nested within another pattern. + +.. _fls_7143accb9144: + +subtraction assignment +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0e9be1a9b20c` +A :t:`subtraction assignment` is a :t:`subtraction assignment expression`. + +.. _fls_6bfd1ce11ed0: + +subtraction assignment expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ae5e64ea0bfb` +A :t:`subtraction assignment expression` is a +:t:`compound assignment expression` that uses subtraction. + +.. _fls_0dd27c6fa5c4: + +subtraction expression +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b56c63765722` +A :t:`subtraction expression` is an :t:`arithmetic expression` that uses +subtraction. + +.. _fls_fb877309ec14: + +subtrait +^^^^^^^^ + +:dp:`fls_5c87b7956fc8` +A :t:`subtrait` is a :t:`trait` with a :t:`supertrait`. + +.. _fls_99678fba2952: + +subtype +^^^^^^^ + +:dp:`fls_8845e280e62f` +A :t:`subtype` is a :t:`type` that may be used in place of another :t:`type` +according to :t:`subtyping`. + +.. _fls_e289e5709ce6: + +subtyping +^^^^^^^^^ + +:dp:`fls_a161ee716daa` +:t:`subtyping` is the relation that determines when one :t:`type` may be used +in place of another. + +.. _fls_d01e3ce12f1c: + +suffixed float +^^^^^^^^^^^^^^ + +:dp:`fls_70ff9cd271f3` +A :t:`suffixed float` is a :t:`float literal` with a :t:`float suffix`. + +.. _fls_c3ed03b890e2: + +suffixed integer +^^^^^^^^^^^^^^^^ + +:dp:`fls_d3e978c3252d` +A :t:`suffixed integer` is an :t:`integer literal` with an :t:`integer suffix`. + +.. _fls_42555a26f122: + +super public modifier +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_c05372c671d0` +A :t:`super public modifier` is a :t:`visibility modifier` that grants a +:t:`name` :t:`public visibility` within the parent :t:`module` only. A +:t:`super public modifier` is equivalent to a :t:`simple path public modifier` +where the :t:`simple path` denotes :t:`keyword` ``super``. + +.. _fls_1ea4d1adb3ea: + +supertrait +^^^^^^^^^^ + +:dp:`fls_10a4b2fbd2ce` +A :t:`supertrait` is a transitive :t:`trait` that a :t:`type` must additionally +implement. + +.. _fls_37bac5faebe9: + +sym path expression +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0d343789164a` +A :t:`sym path expression` is a way for the :t:`assembly code block` to refer either to +a :t:`function` :t:`name` or a :t:`static` :t:`name`. + +.. _fls_258592891a5a: + +sync type +^^^^^^^^^ + +:dp:`fls_d0918bbda77d` +A :t:`sync type` is a :t:`type` that implements the :std:`core::marker::Sync` +:t:`trait`. + +.. _fls_6e5c8381471b: + +syntactic category +^^^^^^^^^^^^^^^^^^ + +* :dp:`fls_ceb5a8t6cakr` + A :t:`syntactic category` is a grammar symbol denoted in PascalCase, for example: + +.. _fls_47884da784ca: + +tail expression +^^^^^^^^^^^^^^^ + +:dp:`fls_e16707d08ae3` +A :t:`tail expression` is the last :t:`expression` within a :t:`block +expression`. + +.. _fls_b6e21ef2da60: + +target type +^^^^^^^^^^^ + +:dp:`fls_aef4d92aeb7d` +The ``TypeSpecificationWithoutBounds`` describes the :t:`target type` of the +:t:`type cast expression`. + +.. _fls_53c8baf0effd: + +target_feature +^^^^^^^^^^^^^^ + +:dp:`fls_ff415eaecc22` +:t:`Attribute` :c:`target_feature` enables target architecture features for its +related :t:`function`. + +.. _fls_afb77d632916: + +temporary +^^^^^^^^^ + +:dp:`fls_b1aeb770f9cf` +A :t:`temporary` is an anonymous :t:`variable` produced by some intermediate +computation. + +.. _fls_0e704c3e0c81: + +terminated +^^^^^^^^^^ + +:dp:`fls_c6014f79bc73` +A :t:`loop expression` is :t:`terminated` when its :t:`block expression` is no +longer evaluated. + +.. _fls_fbc761ec925d: + +terminated macro invocation +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_debb12f86d21` +A :t:`terminated macro invocation` is a :t:`macro invocation` that may be used +as a :t:`statement`. + +.. _fls_9ad2cd47f656: + +test +^^^^ + +:dp:`fls_7b6aee5977b3` +:t:`Attribute` :c:`test` indicates that the respective :t:`function` is a +:t:`testing function`. + +.. _fls_6a56dabcd439: + +testing attributes +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3ac00792f2bf` +The following :t:`[built-in attribute]s` are :t:`[testing attribute]s`: + +.. _fls_fd52ca47b98e: + +testing function +^^^^^^^^^^^^^^^^ + +:dp:`fls_aae68def8492` +:t:`Attribute` :c:`test` indicates that the respective :t:`function` is a +:t:`testing function`. + +.. _fls_6a61a13504fa: + +textual macro scope +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b9c8c83e0cae` +A :t:`textual macro scope` is a :t:`scope` for :t:`[declarative macro]s`. + +.. _fls_78eca7374b77: + +textual type +^^^^^^^^^^^^ + +:dp:`fls_de60ef84a6fa` +A :t:`textual type` is a :t:`type` class that includes type :c:`char` and type +:c:`str`. + +.. _fls_e45e76aab37d: + +thin pointer +^^^^^^^^^^^^ + +:dp:`fls_ada5d693e2a2` +A :t:`thin pointer` is a :t:`value` of a :t:`thin pointer type`. + +.. _fls_94663728013b: + +thin pointer type +^^^^^^^^^^^^^^^^^ + +:dp:`fls_ae600c24fdaa` +A :t:`thin pointer type` is an :t:`indirection type` that refers to a +:t:`fixed sized type`. + +.. _fls_5742838cc515: + +Token matching +^^^^^^^^^^^^^^ + +:dp:`fls_e43bcbe4442e` +:t:`Token matching` is the process of consuming a :s:`TokenTree` in an attempt +to fully satisfy a :t:`macro match` of a selected :t:`macro matcher` that +belongs to a resolved :t:`declarative macro`. + +.. _fls_87badd6fa450: + +Tokens +^^^^^^ + +:dp:`fls_ac116a6f4b88` +:t:`[Token]s` are a subset of :t:`[lexical element]s` consumed by :t:`[macro]s`. + +.. _fls_c978936c3d14: + +track_caller +^^^^^^^^^^^^ + +:dp:`fls_83c2d1fddb0d` +:t:`Attribute` :c:`track_caller` allows the :t:`function body` of its +related :t:`function` to obtain a :std:`core::panic::Location` which indicates +the topmost untracked caller that ultimately led to the invocation of the +:t:`function`. + +.. _fls_1070d7127c1b: + +trait +^^^^^ + +:dp:`fls_cfe44284f758` +A :t:`trait` is an :t:`item` that describes an interface a :t:`type` can +implement. + +.. _fls_32cf1d2c6da6: + +trait body +^^^^^^^^^^ + +:dp:`fls_3af5c24cccc8` +A :t:`trait body` is a :t:`construct` that encapsulates the +:t:`[associated item]s`, :t:`[inner attribute]s`, and +:t:`[inner doc comment]s` of a :t:`trait`. + +.. _fls_1826c49d8bad: + +trait bound +^^^^^^^^^^^ + +:dp:`fls_735c1f8d2a63` +A :t:`trait bound` is a :t:`bound` that imposes a constraint on the +:t:`[trait]s` of :t:`[generic parameter]s`. + +.. _fls_eb8e6a938f2a: + +trait implementation +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_ef41326afecd` +A :t:`trait implementation` is an :t:`implementation` that adds functionality +specified by a :t:`trait`. + +.. _fls_d616672dea25: + +Trait object lifetime elision +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e4793514e4c2` +:t:`Trait object lifetime elision` is a form of :t:`lifetime elision` that +applies to :t:`[trait object type]s`. + +.. _fls_3e1a15ccef76: + +trait object type +^^^^^^^^^^^^^^^^^ + +:dp:`fls_551f23530b18` +A :t:`trait object type` is a :t:`type` that implements a :t:`trait`, where the +:t:`type` is not known at compile time. + +.. _fls_4fa1a6738b67: + +trait type +^^^^^^^^^^ + +:dp:`fls_e6d654bfce32` +A :t:`trait type` is either an :t:`impl trait type` or a +:t:`trait object type`. + +.. _fls_dc99a4c2163f: + +Transparent representation +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e0beea6ac80a` +:t:`Transparent representation` applies only to an :t:`enum type` with a +single :t:`enum variant` or a :t:`struct type` where the :t:`struct type` or +:t:`enum variant` has a single :t:`field` of non-zero :t:`size` and any number +of :t:`[field]s` of :t:`size` zero and :t:`alignment` one. + +.. _fls_784470b80833: + +trivial predicate +^^^^^^^^^^^^^^^^^ + +:dp:`fls_edaec79af5c8` +A :t:`trivial predicate` is a :t:`where clause predicate` that does not use +the :t:`[generic parameter]s` or :t:`[higher-ranked trait bound]s` of the related +:t:`construct`. + +.. _fls_77958575558f: + +true +^^^^ + +:dp:`fls_ad907299ebe0` +:t:`Configuration predicate` :c:`true` always evaluates statically to ``true``. + +.. _fls_51bfc749580c: + +tuple +^^^^^ + +:dp:`fls_f016311d7060` +A :t:`tuple` is a :t:`value` of a :t:`tuple type`. + +.. _fls_54f4faf5b369: + +tuple enum variant +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d66896d66aba` +A :t:`tuple enum variant` is an :t:`enum variant` with a +:s:`TupleStructFieldList`. + +.. _fls_0db6def55894: + +tuple enum variant value +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_eeb9cbfb5ae1` +A :t:`tuple enum variant value` is a :t:`value` of a :t:`tuple enum variant`. + +.. _fls_71373dd0d020: + +tuple expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_e311247e9ec9` +A :t:`tuple expression` is an :t:`expression` that constructs a :t:`tuple`. + +.. _fls_bfa7ee86f8c2: + +tuple field +^^^^^^^^^^^ + +:dp:`fls_2fcf1ce489a5` +A :t:`tuple field` is a :t:`field` of a :t:`tuple type`. + +.. _fls_bb87f236fa5c: + +tuple initializer +^^^^^^^^^^^^^^^^^ + +:dp:`fls_020c669cec5e` +A :t:`tuple initializer` is an :t:`operand` that provides the :t:`value` of a +:t:`tuple field` in a :t:`tuple expression`. + +.. _fls_053eaa82affe: + +tuple pattern +^^^^^^^^^^^^^ + +:dp:`fls_465d6dd79912` +A :t:`tuple pattern` is a :t:`pattern` that matches a :t:`tuple` which satisfies +all criteria defined by its :t:`[subpattern]s`. + +.. _fls_71807c0ae9ba: + +Tuple pattern matching +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_306cea057db9` +:t:`Tuple pattern matching` proceeds as follows: + +.. _fls_78c33a1b95cf: + +tuple struct +^^^^^^^^^^^^ + +:dp:`fls_5679cfdd8060` +A :t:`tuple struct` is a :t:`struct` with a :s:`TupleStructFieldList`. + +.. _fls_4df5097e8208: + +tuple struct call expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_399ea89826c1` +A :t:`tuple struct call expression` is a :t:`call expression` where the +:t:`call operand` resolves to a :t:`tuple struct` or a :t:`tuple enum variant`. + +.. _fls_ed12a987eb3c: + +tuple struct field +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a66788a55c84` +A :t:`tuple struct field` is a :t:`field` of a :t:`tuple struct type`. + +.. _fls_0c4dbc0125c3: + +tuple struct pattern +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_950ff60c59ef` +A :t:`tuple struct pattern` is a :t:`pattern` that matches a +:t:`tuple enum variant value` or a :t:`tuple struct value`. + +.. _fls_8328104a115c: + +Tuple struct pattern matching +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e0307693fcff` +:t:`Tuple struct pattern matching` proceeds as follows: + +.. _fls_fd1ff2fb8d11: + +tuple struct type +^^^^^^^^^^^^^^^^^ + +:dp:`fls_5b17e5f7de41` +A :t:`tuple struct type` is the :t:`type` of a :t:`tuple struct`. + +.. _fls_c96a6fed21b6: + +tuple struct value +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_936a0f4c493f` +A :t:`tuple struct value` is a :t:`value` of a :t:`tuple struct type`. + +.. _fls_9384526d65cd: + +tuple type +^^^^^^^^^^ + +:dp:`fls_a890647afda9` +A :t:`tuple type` is a :t:`sequence type` that represents a heterogeneous list +of other :t:`[type]s`. + +.. _fls_3e51b7e9a415: + +type +^^^^ + +:dp:`fls_e441618086f1` +A :t:`type` defines a set of :t:`[value]s` and a set of operations that act on +those :t:`[value]s`. + +.. _fls_24b9a49d0fd7: + +type alias +^^^^^^^^^^ + +:dp:`fls_331774ca169c` +A :t:`type alias` is an :t:`item` that defines a :t:`name` for a :t:`type`. + +.. _fls_eedabea98d1e: + +type argument +^^^^^^^^^^^^^ + +:dp:`fls_5f389178a538` +A :t:`type argument` is a :t:`generic argument` that supplies the :t:`type` of +a :t:`type parameter`. + +.. _fls_456d27a44c38: + +type ascription +^^^^^^^^^^^^^^^ + +:dp:`fls_91be37b2e198` +A :t:`type ascription` specifies the :t:`type` of a :t:`construct`. + +.. _fls_fdf474d19d7a: + +type attributes +^^^^^^^^^^^^^^^ + +:dp:`fls_7a1d13beec85` +The following :t:`[built-in attribute]s` are :t:`[type attribute]s`: + +.. _fls_0e4072efd649: + +type bound predicate +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_01df050467be` +A :t:`type bound predicate` is a :t:`construct` that specifies +:t:`[lifetime bound]s` and :t:`[trait bound]s` on a :t:`type`. + +.. _fls_8668b879acca: + +type cast expression +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0aebd5729d5d` +A :t:`type cast expression` is an :t:`expression` that changes the :t:`type` of +an :t:`operand`. + +.. _fls_0bcb1c7a0306: + +Type coercion +^^^^^^^^^^^^^ + +:dp:`fls_51b77960449c` +:t:`Type coercion` is an implicit operation that changes the :t:`type` of a +:t:`value`. Any implicit conversion allowed by :t:`type coercion` can be made +explicit using a :t:`type cast expression`. + +.. _fls_7aaeadaa4e61: + +Type inference +^^^^^^^^^^^^^^ + +:dp:`fls_cb93454fa2a6` +:t:`Type inference` is the process of automatically determining the :t:`type` of +:t:`[expression]s` and :t:`[pattern]s` within a :t:`type inference root`. + +.. _fls_2ce80ffb7d36: + +type inference root +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0ac4cdaa02ac` +A :t:`type inference root` is an :t:`expression` whose inner :t:`[expression]s` +and :t:`[pattern]s` are subject to :t:`type inference` independently of those +found in other :t:`[type inference root]s`. + +.. _fls_93a1bc492660: + +type namespace +^^^^^^^^^^^^^^ + +:dp:`fls_2aecc1f90dfc` +A :t:`type namespace` contains the :t:`[name]s` of the following kinds of +:t:`entities `: + +.. _fls_9a16e4b96601: + +type parameter +^^^^^^^^^^^^^^ + +:dp:`fls_fa1cf44eae98` +A :t:`type parameter` is a :t:`generic parameter` for a :t:`type`. + +.. _fls_aff411e201c6: + +type parameter initializer +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_3df791206095` +A :t:`type parameter initializer` is a :t:`construct` that provides the +default :t:`value` of its related :t:`type parameter`. + +.. _fls_1df162e3b163: + +type parameter type +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_e671778caf65` +A :t:`type parameter type` is a placeholder :t:`type` of a :t:`type parameter` +to be substituted by :t:`generic substitution`. + +.. _fls_53536d3e550f: + +type path +^^^^^^^^^ + +:dp:`fls_84c64c46b86a` +A :t:`type path` is a :t:`path` that acts as a :t:`type specification`. + +.. _fls_bba7a96f6b02: + +Type path resolution +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7fd128d65698` +:t:`Type path resolution` is a form of :t:`path resolution` that applies to +a :t:`type path`. + +.. _fls_6d257d1e4da9: + +Type representation +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_493ef6fa41c6` +:t:`Type representation` specifies the :t:`layout` of :t:`[field]s` of +:t:`[abstract data type]s`. :t:`Type representation` changes the bit padding +between :t:`[field]s` of :t:`[abstract data type]s` as well as their order, but +does not change the :t:`layout` of the :t:`[field]s` themselves. + +.. _fls_121c02daa0bb: + +type specification +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7481e2bffa57` +A :t:`type specification` describes the structure of a :t:`type`. + +.. _fls_040c0f3454de: + +Type unification +^^^^^^^^^^^^^^^^ + +:dp:`fls_58a9b828cf25` +:t:`Type unification` is the process by which :t:`type inference` propagates +known :t:`[type]s` across the :t:`type inference root` and assigns concrete +:t:`[type]s` to :t:`[type variable]s`, as well as a general mechanism to check +for compatibility between two :t:`[type]s` during :t:`method resolution`. + +.. _fls_ec218c83dc2f: + +type variable +^^^^^^^^^^^^^ + +:dp:`fls_c4b1e5bd31c8` +A :t:`type variable` is a placeholder used during :t:`type inference` to stand +in for an undetermined :t:`type` of an :t:`expression` or a :t:`pattern`. + +.. _fls_8062da7c206e: + +type_length_limit +^^^^^^^^^^^^^^^^^ + +:dp:`fls_baeecf39297a` +:t:`Attribute` :c:`type_length_limit` sets the maximum number of +:t:`[generic substitution]s` for :t:`[type parameter]s` when constructing a +:t:`concrete type`. + +.. _fls_936097632c48: + +u8 +^^ + +:dp:`fls_2165a5fdc0c2` +:c:`u8` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to +2\ :sup:`8` - 1, all inclusive. + +.. _fls_50126b20e12c: + +u8-to-char cast +^^^^^^^^^^^^^^^ + +* :dp:`fls_qk5trk8wkvxb` + An :t:`operand` of :t:`type` :c:`u8` and a target :t:`type` :c:`char` performs + :t:`u8-to-char cast`. A :t:`u8-to-char cast` converts an :t:`operand` of + :t:`type` :c:`u8` to the :t:`value` of the corresponding :t:`code point`. + +.. _fls_0f85fa5fb8f3: + +u16 +^^^ + +:dp:`fls_c921f3762ca2` +:c:`u16` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to +2\ :sup:`16` - 1, all inclusive. + +.. _fls_571c492d3933: + +u32 +^^^ + +:dp:`fls_34265d44e503` +:c:`u32` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to +2\ :sup:`32` - 1, all inclusive. + +.. _fls_4442503e9095: + +u64 +^^^ + +:dp:`fls_a5346e11164c` +:c:`u64` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to +2\ :sup:`64` - 1, all inclusive. + +.. _fls_eef7a95920a8: + +u128 +^^^^ + +:dp:`fls_6dd75db6b3f4` +:c:`u128` is an :t:`unsigned integer type` whose :t:`[value]s` range from 0 to +2\ :sup:`128` - 1, all inclusive. + +.. _fls_fdf9701c2a19: + +unary operator +^^^^^^^^^^^^^^ + +:dp:`fls_c87efb174c27` +A :t:`unary operator` is an operator that operates on one :t:`operand`. + +.. _fls_87c165b4f00e: + +Undefined behavior +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_539c1c0e54ab` +:t:`Undefined behavior` is a situation that results in an unbounded error. + +.. _fls_c122ce4fc344: + +under resolution +^^^^^^^^^^^^^^^^ + +:dp:`fls_2e899210285a` +A :t:`construct` that is being resolved is said to be :t:`under resolution`. + +.. _fls_7ddba60200b4: + +underscore expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_46608d5d7887` +An :t:`underscore expression` is an :t:`expression` that acts as a placeholder +in a :t:`destructuring assignment`. + +.. _fls_c54062c95f9d: + +underscore pattern +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_f16e827c514c` +An :t:`underscore pattern` is a :t:`pattern` that matches any single :t:`value`. + +.. _fls_93757e2037f5: + +Underscore pattern matching +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_0953028dd1f9` +:t:`Underscore pattern matching` proceeds as follows: + +.. _fls_5b8d915b442c: + +unhygienic +^^^^^^^^^^ + +:dp:`fls_62f118b0397a` +An :t:`identifier` is :t:`unhygienic` when it has :t:`call site hygiene`. + +.. _fls_31c832151981: + +Unicode +^^^^^^^ + +:dp:`fls_198e31208c84` +:t:`Unicode` is the universal character encoding standard for written +characters and text described in the Unicode Standard by the Unicode +Consortium. + +.. _fls_8ba98022b9ca: + +unifiable +^^^^^^^^^ + +:dp:`fls_ffb6caad760e` +Two :t:`[type]s` are :t:`unifiable` when they :t:`unify`. + +.. _fls_ea138d660b7d: + +unifiable types +^^^^^^^^^^^^^^^ + +:dp:`fls_aa4e4761a13e` +Two types that :t:`unify` are said to be :t:`[unifiable type]s`. + +.. _fls_41c1c7c36813: + +unified type +^^^^^^^^^^^^ + +:dp:`fls_899015248953` +A :t:`unified type` is a :t:`type` produced by :t:`type unification`. + +.. _fls_42050f4979b1: + +unify +^^^^^ + +:dp:`fls_473956bb268e` +A :t:`type` is said to :t:`unify` with another :t:`type` when the domains, +ranges, and structures of both :t:`[type]s` are compatible according to the +rules detailed below. + +.. _fls_4cc63f21670f: + +uninitialized +^^^^^^^^^^^^^ + +:dp:`fls_62507a0247ff` +When a :t:`variable` lacks a :t:`value` or its :t:`value` has been +:t:`passed ` :t:`by move`, the :t:`variable` is considered +to be :t:`uninitialized`. + +.. _fls_5530f0c68222: + +union +^^^^^ + +:dp:`fls_01ad49779e87` +A :t:`union` is an :t:`item` that declares a :t:`union type`. + +.. _fls_8642835a21cf: + +union field +^^^^^^^^^^^ + +:dp:`fls_fc87ebf8db22` +A :t:`union field` is a :t:`field` of a :t:`union type`. + +.. _fls_f4a91ecbb83d: + +union type +^^^^^^^^^^ + +:dp:`fls_286748ed5a86` +A :t:`union type` is an :t:`abstract data type` that is a sum of other +:t:`[type]s`. + +.. _fls_cedf12cd14f5: + +union value +^^^^^^^^^^^ + +:dp:`fls_05359b7f8e24` +A :t:`union value` is a :t:`value` of a :t:`union type`. + +.. _fls_304fa0da8ebd: + +unique immutable reference +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_b6b7321413a9` +A :t:`unique immutable reference` is an :t:`immutable reference` produced by +:t:`capturing` what is asserted to be the only live :t:`reference` to a +:t:`value` while the :t:`reference` exists. + +.. _fls_176b69e44ccf: + +unit enum variant +^^^^^^^^^^^^^^^^^ + +:dp:`fls_600afb16d5e0` +A :t:`unit enum variant` is an :t:`enum variant` without a :t:`field list`. + +.. _fls_d59fa9804994: + +unit struct +^^^^^^^^^^^ + +:dp:`fls_62ad540d0d6d` +A :t:`unit struct` is a :t:`struct` without a :t:`field list`. + +.. _fls_b8a782df6890: + +unit struct constant +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2a1960dd9e97` +A :t:`unit struct constant` is a :t:`constant` implicitly created by a +:t:`unit struct`. + +.. _fls_a60c7a8ad055: + +unit struct type +^^^^^^^^^^^^^^^^ + +:dp:`fls_0d0ce5aef3d5` +A :t:`unit struct type` is the :t:`type` of a :t:`unit struct`. + +.. _fls_d4c4c1daa998: + +unit struct value +^^^^^^^^^^^^^^^^^ + +:dp:`fls_3a4343428956` +A :t:`unit struct value` is a :t:`value` of a :t:`unit struct type`. + +.. _fls_ecedc60f8a7e: + +unit tuple +^^^^^^^^^^ + +:dp:`fls_ef028d008369` +A :t:`unit tuple` is a :t:`value` of the :t:`unit type`. + +.. _fls_7a3df746b3c8: + +unit type +^^^^^^^^^ + +:dp:`fls_2c666ac72eb5` +The :t:`unit type` is a :t:`tuple type` of zero :t:`arity`. + +.. _fls_465aa12beb33: + +unit value +^^^^^^^^^^ + +:dp:`fls_e32e20865b26` +The :t:`unit value` is the :t:`value` of a :t:`unit type`. + +.. _fls_7a1abadfec4f: + +unnamed constant +^^^^^^^^^^^^^^^^ + +:dp:`fls_bd0541709cd0` +An :t:`unnamed constant` is a :t:`constant` declared with character 0x5F (low +line). + +.. _fls_1f0bddd86896: + +unnamed lifetime +^^^^^^^^^^^^^^^^ + +:dp:`fls_25e5ca589247` +An :t:`unnamed lifetime` is the ``'_`` :t:`lifetime`. + +.. _fls_5f6711fe040e: + +unqualified path expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_bffe74dd7d25` +An :t:`unqualified path expression` is a :t:`path expression` without a +:t:`qualified type`. + +.. _fls_d82399762ad5: + +unsafe +^^^^^^ + +:dp:`fls_d013493ee179` +:t:`Attribute` :c:`unsafe` is used to indicate that an :t:`attribute` is :t:`unsafe `. + +.. _fls_a37c1f5da1be: + +unsafe block +^^^^^^^^^^^^ + +:dp:`fls_3ac0d3aeb76e` +An :t:`unsafe block` is an :t:`unsafe block expression`. + +.. _fls_cf12b931b4b4: + +unsafe block expression +^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_991caf7e2d8a` +An :t:`unsafe block expression` is a :t:`block expression` that is specified +with :t:`keyword` ``unsafe``. + +.. _fls_4b97165734ee: + +unsafe context +^^^^^^^^^^^^^^ + +:dp:`fls_c85291e28e14` +An :t:`unsafe context` is either an :t:`unsafe block` or an +:t:`unsafe function`. + +.. _fls_5a7a5fb9d655: + +unsafe external block +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9e5ca3b65835` +An :t:`unsafe external block` is an :t:`external block` subject to keyword ``unsafe``. + +.. _fls_0f00a6ae8002: + +unsafe function +^^^^^^^^^^^^^^^ + +:dp:`fls_27ba0d3b3878` +An :t:`unsafe function` is a :t:`function` subject to an :s:`ItemSafety` with :t:`keyword` ``unsafe``. + +.. _fls_32efb94b1d40: + +unsafe function item type +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_aaaa77797352` +An :t:`unsafe function item type` is a :t:`function item type` where the related +:t:`function` is an :t:`unsafe function`. + +.. _fls_0c9cd81a3f76: + +unsafe function pointer type +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_87596618fbe6` +An :t:`unsafe function pointer type` is a function pointer type subject to +:t:`keyword` ``unsafe``. + +.. _fls_3f6b51b78638: + +unsafe operation +^^^^^^^^^^^^^^^^ + +:dp:`fls_05ddc992904d` +An :t:`unsafe operation` is an operation that may result in +:t:`undefined behavior` that is not diagnosed as a static error. + +.. _fls_3ff72a35ae39: + +unsafe Rust +^^^^^^^^^^^ + +:dp:`fls_21c216518428` +For :t:`unsafe Rust`, see :t:`[unsafe operation]s`. + +.. _fls_6b19cc0f3932: + +unsafe trait +^^^^^^^^^^^^ + +:dp:`fls_d9f0f4e1cd3f` +An :t:`unsafe trait` is a :t:`trait` declared with :t:`keyword` ``unsafe``. + +.. _fls_6995e4653bb5: + +unsafe trait implementation +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a70fcda8c49c` +An :t:`unsafe trait implementation` is a :t:`trait implementation` subject to +:t:`keyword` ``unsafe``. + +.. _fls_fec760b6d11c: + +unsafety +^^^^^^^^ + +:dp:`fls_94edabf14814` +:t:`unsafety` is the presence of :t:`[unsafe operation]s` and :t:`[unsafe trait +implementation]s` in program text. + +.. _fls_2979c7036f18: + +unsigned integer type +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_4802db591509` +An :t:`unsigned integer type` is an :t:`integer type` whose :t:`values ` +denote zero and positive whole numbers. + +.. _fls_2588b7a464ea: + +unsized coercion +^^^^^^^^^^^^^^^^ + +:dp:`fls_f3d84cedb0dc` +An :t:`unsized coercion` is a :t:`type coercion` that converts a :t:`sized type` +into an :t:`unsized type`. :t:`Unsized coercion` from a source :t:`type` to a +target :t:`type` is allowed to occur when: + +.. _fls_ef2e648e7404: + +unsized type +^^^^^^^^^^^^ + +:dp:`fls_0e4e022e05f9` +An :t:`unsized type` is a :t:`type` that does not implement the +:std:`core::marker::Sized` :t:`trait`. + +.. _fls_865d8f9da88f: + +unsuffixed float +^^^^^^^^^^^^^^^^ + +:dp:`fls_26ce4c6c380e` +An :t:`unsuffixed float` is a :t:`float literal` without a :t:`float suffix`. + +.. _fls_57489204ea36: + +unsuffixed integer +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_d7aafce97556` +An :t:`unsuffixed integer` is an :t:`integer literal` without an :t:`integer +suffix`. + +.. _fls_727772dbab27: + +use capture +^^^^^^^^^^^ + +:dp:`fls_92df39a30d1e` +An :t:`use capture` is a :t:`generic parameter` referenced within an :t:`anonymous return type`. + +.. _fls_611fce40b919: + +use import +^^^^^^^^^^ + +:dp:`fls_ecc3690d566a` +A :t:`use import` brings :t:`entities ` :t:`in scope` within the +:t:`block expression` of an :t:`expression-with-block` or :t:`module` where the +:t:`use import` resides. + +.. _fls_cdb921386c8b: + +used +^^^^ + +:dp:`fls_acd1fc95831a` +:t:`Attribute` :c:`used` forces a tool to keep the related :t:`static` in the +output object file even if the :t:`static` is not used or referenced by other +:t:`[item]s` in the :t:`crate`. + +.. _fls_7c5a76345ee8: + +usize +^^^^^ + +:dp:`fls_632240c36d1b` +:c:`usize` is an :t:`unsigned integer type` with the same number of bits as the +platform's :t:`pointer type`, and is at least 16-bits wide. + +.. _fls_3e44a732b431: + +validity invariant +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_82cf61784171` +A :t:`validity invariant` is an invariant that when violated results in +immediate :t:`undefined behavior`. + +.. _fls_deb67ed6a7ae: + +value +^^^^^ + +:dp:`fls_450fb8d056f4` +A :t:`value` is either a :t:`literal` or the result of a computation, that may +be stored in a memory location, and interpreted based on some :t:`type`. + +.. _fls_b30d4a8d7131: + +value expression +^^^^^^^^^^^^^^^^ + +:dp:`fls_32b9b495e0d4` +A :t:`value expression` is an :t:`expression` that represents a :t:`value`. +All :t:`[expression]s` that are not :t:`[place expression]s` are +:t:`[value expression]s`. + +.. _fls_26cc9a96e6b5: + +value expression context +^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_26beacca4b16` +A :t:`value expression context` is an expression context that is not a +:t:`place expression context`. + +.. _fls_91db1aca7d11: + +value namespace +^^^^^^^^^^^^^^^ + +:dp:`fls_1576507de0bc` +A :t:`value namespace` contains the :t:`[name]s` of the following kinds of +:t:`entities `: + +.. _fls_6356dac49d89: + +value operand +^^^^^^^^^^^^^ + +:dp:`fls_fbc1bbab09ed` +A :t:`value operand` is an :t:`operand` that supplies the :t:`value` that is +assigned to an :t:`assignee operand` by an :t:`assignment expression`. + +.. _fls_4c107b77c8c6: + +variable +^^^^^^^^ + +:dp:`fls_e39180e8012c` +A :t:`variable` is a placeholder for a :t:`value` that is allocated on the +stack. + +.. _fls_ae46d29a1f7b: + +variadic function +^^^^^^^^^^^^^^^^^ + +:dp:`fls_61b47f228a2e` +A :t:`variadic function` is an :t:`external function` that specifies +:s:`FunctionParameterVariadicPart` as the last :t:`function parameter`. + +.. _fls_67ae6fc6372a: + +variadic part +^^^^^^^^^^^^^ + +:dp:`fls_ae563cfb4dd6` +A :t:`variadic part` indicates the presence of :t:`C`-like optional +parameters. + +.. _fls_dcb184001e9d: + +Variance +^^^^^^^^ + +:dp:`fls_070b033f0dcc` +:t:`Variance` is a property of :t:`[lifetime parameter]s` and +:t:`[type parameter]s` that describes the circumstances under which a +:t:`generic type` is a :t:`subtype` of an instantiation of itself with +different :t:`[generic argument]s`. + +.. _fls_f2b67b6791bf: + +Visibility +^^^^^^^^^^ + +:dp:`fls_a9b2348112c4` +:t:`Visibility` is a property of :t:`[field]s` and :t:`[item]s` that determines +which :t:`[module]s` can refer to the :t:`name` of the :t:`field` or :t:`item`. + +.. _fls_9bcbeac287a2: + +visibility modifier +^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9196915c9b7d` +A :t:`visibility modifier` sets the :t:`visibility` of a :t:`name`. + +.. _fls_79643d6f32d1: + +Visible emptiness +^^^^^^^^^^^^^^^^^ + +:dp:`fls_3862c72aa861` +:t:`Visible emptiness ` is a property of :t:`[type]s` and :t:`[enum variant]s` that have no :t:`[value]s` that are fully observable. + +.. _fls_580943f9d82c: + +visible empty enum variant +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a21aacf97486` +A :t:`visible empty enum variant` is an :t:`enum variant` subject to :t:`visible emptiness`. + +.. _fls_dbd9c81fb5ec: + +visible empty type +^^^^^^^^^^^^^^^^^^ + +:dp:`fls_9d940576bccc` +A :t:`visible empty type` is a :t:`type` subject to :t:`visible emptiness`. + +.. _fls_fd8c21d471b0: + +weak keyword +^^^^^^^^^^^^ + +:dp:`fls_eb97b2bdc193` +A :t:`weak keyword` is a :t:`keyword` whose special meaning depends on the +context. + +.. _fls_c2f5fc4a1b21: + +where clause +^^^^^^^^^^^^ + +:dp:`fls_5604e6441789` +A :t:`where clause` is a :t:`construct` that specifies :t:`[bound]s` on +:t:`[lifetime parameter]s` and :t:`[type]s` that have +to hold for the :t:`construct` subject to the :t:`where clause` to be valid. + +.. _fls_254803e3a27e: + +where clause predicate +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a1d08d09d778` +A :t:`where clause predicate` is either a :t:`lifetime bound predicate` or a +:t:`type bound predicate`. + +.. _fls_de04a040c4e3: + +while let loop +^^^^^^^^^^^^^^ + +:dp:`fls_60f9315aac78` +A :t:`while let loop` is a :t:`while let loop expression`. + +.. _fls_2ee36e307367: + +while let loop expression +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_2d8ff8b9d9c5` +A :t:`while let loop expression` is a :t:`loop expression` that continues to +evaluate its :t:`loop body` as long as its :t:`subject let expression` yields +a :t:`value` that can be matched against its :t:`pattern`. + +.. _fls_006c7e2bf9b1: + +while loop +^^^^^^^^^^ + +:dp:`fls_97717ec1b5a9` +A :t:`while loop` is a :t:`while loop expression`. + +.. _fls_c1c58e3dbd1f: + +while loop expression +^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_a7f783cd3001` +A :t:`while loop expression` is a :t:`loop expression` that continues to +evaluate its :t:`loop body` as long as its :t:`iteration expression` holds +true. + +.. _fls_096ced8359a5: + +whitespace character +^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_148fa6311067` +A :t:`whitespace character` is one of the following characters: + +.. _fls_234e20d229a1: + +whitespace string +^^^^^^^^^^^^^^^^^ + +:dp:`fls_2f2a17f81232` +A :t:`whitespace string` is a string that consists of one or more +:t:`[whitespace character]s`. + +.. _fls_ccc124f3adc7: + +windows_subsystem +^^^^^^^^^^^^^^^^^ + +:dp:`fls_392161893465` +:t:`Attribute` :c:`windows_subsystem` specifies the subsystem on Windows. + +.. _fls_32d41cf85a44: + +zero-sized type +^^^^^^^^^^^^^^^ + +:dp:`fls_8a9113a5944e` +A :t:`zero-sized type` is a :t:`fixed sized type` with :t:`size` zero. + +.. _fls_5db3feb63d17: + +zero-variant enum type +^^^^^^^^^^^^^^^^^^^^^^ + +:dp:`fls_7dfa5464c609` +A :t:`zero-variant enum type` is an :t:`enum type` without any +:t:`[enum variant]s`.