Re-exportsยง
use std::iter;๐use std::ops::ControlFlow;๐use either::Either;๐use hir::ClosureKind;๐use hir::Path;๐use rustc_attr_ir::diagnostic::CustomDiagnostic;๐use rustc_attr_ir::diagnostic::FormatArgs;๐use rustc_attr_ir::find_attr;๐use rustc_attr_ir::lang_items::LangItem;๐use rustc_data_structures::fx::FxIndexSet;๐use rustc_errors::Applicability;๐use rustc_errors::Diag;๐use rustc_errors::MultiSpan;๐use rustc_errors::struct_span_code_err;๐use rustc_hir as hir;๐use rustc_hir::def::DefKind;๐use rustc_hir::def::Res;๐use rustc_hir::intravisit::Visitor;๐use rustc_hir::intravisit::walk_block;๐use rustc_hir::intravisit::walk_expr;๐use rustc_hir::CoroutineDesugaring;๐use rustc_hir::CoroutineKind;๐use rustc_hir::CoroutineSource;๐use rustc_hir::PatField;๐use rustc_index::bit_set::DenseBitSet;๐use rustc_infer::traits::TraitErrors;๐use rustc_middle::hir::nested_filter::OnlyBodies;๐use rustc_middle::mir;๐use rustc_middle::mir::AggregateKind;๐use rustc_middle::mir::BindingForm;๐use rustc_middle::mir::BorrowKind;๐use rustc_middle::mir::ClearCrossCrate;๐use rustc_middle::mir::ConstraintCategory;๐use rustc_middle::mir::FakeBorrowKind;๐use rustc_middle::mir::FakeReadCause;๐use rustc_middle::mir::LocalDecl;๐use rustc_middle::mir::LocalInfo;๐use rustc_middle::mir::LocalKind;๐use rustc_middle::mir::Location;๐use rustc_middle::mir::MutBorrowKind;๐use rustc_middle::mir::Operand;๐use rustc_middle::mir::Place;๐use rustc_middle::mir::PlaceRef;๐use rustc_middle::mir::PlaceTy;๐use rustc_middle::mir::ProjectionElem;๐use rustc_middle::mir::Rvalue;๐use rustc_middle::mir::Statement;๐use rustc_middle::mir::StatementKind;๐use rustc_middle::mir::Terminator;๐use rustc_middle::mir::TerminatorKind;๐use rustc_middle::mir::VarBindingForm;๐use rustc_middle::mir::VarDebugInfoContents;๐use rustc_middle::ty::print::PrintTraitRefExt as _;๐use rustc_middle::ty;๐use rustc_middle::ty::CallerBoundsIterator;๐use rustc_middle::ty::PredicateKind;๐use rustc_middle::ty::Ty;๐use rustc_middle::ty::TyCtxt;๐use rustc_middle::ty::TypeSuperVisitable;๐use rustc_middle::ty::TypeVisitor;๐use rustc_middle::ty::Upcast;๐use rustc_middle::ty::suggest_constraining_type_params;๐use rustc_mir_dataflow::move_paths::Init;๐use rustc_mir_dataflow::move_paths::InitLocation;๐use rustc_mir_dataflow::move_paths::MoveOutIndex;๐use rustc_mir_dataflow::move_paths::MovePathIndex;๐use rustc_span::def_id::DefId;๐use rustc_span::def_id::LocalDefId;๐use rustc_span::hygiene::DesugaringKind;๐use rustc_span::BytePos;๐use rustc_span::ExpnKind;๐use rustc_span::Ident;๐use rustc_span::MacroKind;๐use rustc_span::Span;๐use rustc_span::Symbol;๐use rustc_span::bug;๐use rustc_span::kw;๐use rustc_span::sym;๐use rustc_trait_selection::error_reporting::InferCtxtErrorExt;๐use rustc_trait_selection::error_reporting::traits::FindExprBySpan;๐use rustc_trait_selection::error_reporting::traits::call_kind::CallKind;๐use rustc_trait_selection::infer::InferCtxtExt;๐use rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt as _;๐use rustc_trait_selection::traits::Obligation;๐use rustc_trait_selection::traits::ObligationCause;๐use rustc_trait_selection::traits::ObligationCtxt;๐use rustc_trait_selection::traits::supertrait_def_ids;๐use tracing::debug;๐use tracing::instrument;๐use tracing::instrument;๐use super::explain_borrow::BorrowExplanation;๐use super::explain_borrow::LaterUseKind;๐use super::DescribePlaceOpt;๐use super::RegionName;๐use super::RegionNameSource;๐use super::UseSpans;๐use crate::borrow_set::BorrowData;๐use crate::borrow_set::TwoPhaseActivation;๐use crate::consumers::OutlivesConstraint;๐use crate::diagnostics::conflict_errors::StorageDeadOrDrop::LocalStorageDead;๐use crate::diagnostics::CapturedMessageOpt;๐use crate::diagnostics::call_kind;๐use crate::diagnostics::find_all_local_uses;๐use crate::InitializationRequiringAction;๐use crate::MirBorrowckCtxt;๐use crate::WriteKind;๐use crate::borrowck_errors;๐use rustc_errors::codes::*;๐
Structsยง
- Break
Finder ๐ - Look for
breakexpressions within any arbitrary expressions. Weโll do this to infer whether this is a case where the moved value would affect the exit of a loop, making it unsuitable for a.clone()suggestion. - Condition
Error ๐ - Condition
Visitor ๐ - Given a set of spans representing statements initializing the relevant binding, visit all the function expressions looking for branching code paths that do not initialize the binding.
- Move
Site ๐ - Referenced
Statements ๐Visitor - Detect whether one of the provided spans is a statement nested within the top-most visited expr
Enumsยง
- Annotated
Borrow ๐FnSignature - Condition
Error ๐Kind - Storage
Dead ๐OrDrop - Which case a StorageDeadOrDrop is for.
Functionsยง
- find_
for_ ๐loop_ span - Find the
Matchexpression desugared from a for loop, whoseIntoIter::into_iterargument containsissue_span. Returns the for-loop match expression span.