blob: 27956ff1e80e329c60962962018a020e9937d5b3 [file] [log] [blame] [edit]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="HIR (previously known as descriptors) provides a high-level object-oriented access to Rust code."><title>hir - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-e56847b5.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="hir" data-themes="" data-resource-suffix="" data-rustdoc-version="1.91.0 (f8297e351 2025-10-28)" data-channel="1.91.0" data-search-js="search-e256b49e.js" data-stringdex-js="stringdex-c3e638e9.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-6dc2a7f3.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Crate hir</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../hir/index.html">hir</a><span class="version">0.0.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section id="rustdoc-toc"><h3><a href="#modules">Crate Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#macros" title="Macros">Macros</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#traits" title="Traits">Traits</a></li><li><a href="#functions" title="Functions">Functions</a></li><li><a href="#types" title="Type Aliases">Type Aliases</a></li></ul></section><div id="rustdoc-modnav"></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><h1>Crate <span>hir</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/hir/lib.rs.html#1-6492">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>HIR (previously known as descriptors) provides a high-level object-oriented
access to Rust code.</p>
<p>The principal difference between HIR and syntax trees is that HIR is bound
to a particular crate instance. That is, it has cfg flags and features
applied. So, the relation between syntax and HIR is many-to-one.</p>
<p>HIR is the public API of the all of the compiler logic above syntax trees.
It is written in “OO” style. Each type is self contained (as in, it knows its
parents and full context). It should be “clean code”.</p>
<p><code>hir_*</code> crates are the implementation of the compiler logic.
They are written in “ECS” style, with relatively little abstractions.
Many types are not self-contained, and explicitly use local indexes, arenas, etc.</p>
<p><code>hir</code> is what insulates the “we don’t know how to actually write an incremental compiler”
from the ide with completions, hovers, etc. It is a (soft, internal) boundary:
<a href="https://www.tedinski.com/2018/02/06/system-boundaries.html">https://www.tedinski.com/2018/02/06/system-boundaries.html</a>.</p>
</div></details><h2 id="reexports" class="section-header">Re-exports<a href="#reexports" class="anchor">§</a></h2><dl class="item-table reexports"><dt><code>pub use crate::<a class="mod" href="diagnostics/index.html" title="mod hir::diagnostics">diagnostics</a>::*;</code></dt></dl><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="db/index.html" title="mod hir::db">db</a></dt><dd>Re-exports various subcrates databases so that the calling code can depend
only on <code>hir</code>. This breaks abstraction boundary a bit, it would be cool if
we didn’t do that.</dd><dt><a class="mod" href="diagnostics/index.html" title="mod hir::diagnostics">diagnostics</a></dt><dd>Re-export diagnostics such that clients of <code>hir</code> don’t have to depend on
low-level crates.</dd><dt><a class="mod" href="import_map/index.html" title="mod hir::import_map">import_<wbr>map</a></dt><dd>A map of all publicly exported items in a crate.</dd><dt><a class="mod" href="mir/index.html" title="mod hir::mir">mir</a></dt><dd>MIR definitions and implementation</dd><dt><a class="mod" href="next_solver/index.html" title="mod hir::next_solver">next_<wbr>solver</a></dt><dd>Things relevant to the next trait solver.</dd><dt><a class="mod" href="sym/index.html" title="mod hir::sym">sym</a></dt><dd>Module defining all known symbols required by the rest of rust-analyzer.</dd><dt><a class="mod" href="symbols/index.html" title="mod hir::symbols">symbols</a></dt><dd>File symbol extraction.</dd><dt><a class="mod" href="term_search/index.html" title="mod hir::term_search">term_<wbr>search</a></dt><dd>Term search</dd><dt><a class="mod" href="tt/index.html" title="mod hir::tt">tt</a></dt></dl><h2 id="macros" class="section-header">Macros<a href="#macros" class="anchor">§</a></h2><dl class="item-table"><dt><a class="macro" href="macro.tool_path.html" title="macro hir::tool_path">tool_<wbr>path</a></dt></dl><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.Adjustment.html" title="struct hir::Adjustment">Adjustment</a></dt><dt><a class="struct" href="struct.Attr.html" title="struct hir::Attr">Attr</a></dt><dt><a class="struct" href="struct.AttrId.html" title="struct hir::AttrId">AttrId</a></dt><dt><a class="struct" href="struct.AttrSourceMap.html" title="struct hir::AttrSourceMap">Attr<wbr>Source<wbr>Map</a></dt><dt><a class="struct" href="struct.AttributeTemplate.html" title="struct hir::AttributeTemplate">Attribute<wbr>Template</a></dt><dd>A template that the attribute input must match.
Only top-level shape (<code>#[attr]</code> vs <code>#[attr(...)]</code> vs <code>#[attr = ...]</code>) is considered now.</dd><dt><a class="struct" href="struct.Attrs.html" title="struct hir::Attrs">Attrs</a></dt><dd>Desugared attributes of an item post <code>cfg_attr</code> expansion.</dd><dt><a class="struct" href="struct.AttrsWithOwner.html" title="struct hir::AttrsWithOwner">Attrs<wbr>With<wbr>Owner</a></dt><dt><a class="struct" href="struct.BuiltinAttr.html" title="struct hir::BuiltinAttr">Builtin<wbr>Attr</a></dt><dt><a class="struct" href="struct.BuiltinType.html" title="struct hir::BuiltinType">Builtin<wbr>Type</a></dt><dt><a class="struct" href="struct.Callable.html" title="struct hir::Callable">Callable</a></dt><dt><a class="struct" href="struct.CaptureUsageSource.html" title="struct hir::CaptureUsageSource">Capture<wbr>Usage<wbr>Source</a></dt><dt><a class="struct" href="struct.CaptureUsages.html" title="struct hir::CaptureUsages">Capture<wbr>Usages</a></dt><dt><a class="struct" href="struct.CfgOptions.html" title="struct hir::CfgOptions">CfgOptions</a></dt><dd>Configuration options used for conditional compilation on items with <code>cfg</code> attributes.
We have two kind of options in different namespaces: atomic options like <code>unix</code>, and
key-value options like <code>target_arch="x86"</code>.</dd><dt><a class="struct" href="struct.ChangeWithProcMacros.html" title="struct hir::ChangeWithProcMacros">Change<wbr>With<wbr>Proc<wbr>Macros</a></dt><dt><a class="struct" href="struct.Closure.html" title="struct hir::Closure">Closure</a></dt><dt><a class="struct" href="struct.ClosureCapture.html" title="struct hir::ClosureCapture">Closure<wbr>Capture</a></dt><dt><a class="struct" href="struct.Const.html" title="struct hir::Const">Const</a></dt><dt><a class="struct" href="struct.ConstParam.html" title="struct hir::ConstParam">Const<wbr>Param</a></dt><dt><a class="struct" href="struct.Crate.html" title="struct hir::Crate">Crate</a></dt><dd>hir::Crate describes a single crate. It’s the main interface with which
a crate’s dependencies interact. Mostly, it should be just a proxy for the
root module.</dd><dt><a class="struct" href="struct.CrateDependency.html" title="struct hir::CrateDependency">Crate<wbr>Dependency</a></dt><dt><a class="struct" href="struct.DefMap.html" title="struct hir::DefMap">DefMap</a></dt><dd>Contains the results of (early) name resolution.</dd><dt><a class="struct" href="struct.DeriveHelper.html" title="struct hir::DeriveHelper">Derive<wbr>Helper</a></dt><dt><a class="struct" href="struct.DisplayTarget.html" title="struct hir::DisplayTarget">Display<wbr>Target</a></dt><dt><a class="struct" href="struct.EditionedFileId.html" title="struct hir::EditionedFileId">Editioned<wbr>File<wbr>Id</a></dt><dt><a class="struct" href="struct.Enum.html" title="struct hir::Enum">Enum</a></dt><dt><a class="struct" href="struct.EvaluatedConst.html" title="struct hir::EvaluatedConst">Evaluated<wbr>Const</a></dt><dt><a class="struct" href="struct.ExternBlock.html" title="struct hir::ExternBlock">Extern<wbr>Block</a></dt><dt><a class="struct" href="struct.ExternCrateDecl.html" title="struct hir::ExternCrateDecl">Extern<wbr>Crate<wbr>Decl</a></dt><dt><a class="struct" href="struct.Field.html" title="struct hir::Field">Field</a></dt><dt><a class="struct" href="struct.FilePositionWrapper.html" title="struct hir::FilePositionWrapper">File<wbr>Position<wbr>Wrapper</a></dt><dt><a class="struct" href="struct.FileRangeWrapper.html" title="struct hir::FileRangeWrapper">File<wbr>Range<wbr>Wrapper</a></dt><dt><a class="struct" href="struct.FindPathConfig.html" title="struct hir::FindPathConfig">Find<wbr>Path<wbr>Config</a></dt><dd>A wrapper around three booleans</dd><dt><a class="struct" href="struct.Function.html" title="struct hir::Function">Function</a></dt><dt><a class="struct" href="struct.GenericSubstitution.html" title="struct hir::GenericSubstitution">Generic<wbr>Substitution</a></dt><dt><a class="struct" href="struct.Impl.html" title="struct hir::Impl">Impl</a></dt><dt><a class="struct" href="struct.InFileWrapper.html" title="struct hir::InFileWrapper">InFile<wbr>Wrapper</a></dt><dd><code>InFile&lt;T&gt;</code> stores a value of <code>T</code> inside a particular file/syntax tree.</dd><dt><a class="struct" href="struct.InlineAsmOperand.html" title="struct hir::InlineAsmOperand">Inline<wbr>AsmOperand</a></dt><dt><a class="struct" href="struct.InstantiatedEnum.html" title="struct hir::InstantiatedEnum">Instantiated<wbr>Enum</a></dt><dt><a class="struct" href="struct.InstantiatedField.html" title="struct hir::InstantiatedField">Instantiated<wbr>Field</a></dt><dt><a class="struct" href="struct.InstantiatedStruct.html" title="struct hir::InstantiatedStruct">Instantiated<wbr>Struct</a></dt><dt><a class="struct" href="struct.InstantiatedVariant.html" title="struct hir::InstantiatedVariant">Instantiated<wbr>Variant</a></dt><dt><a class="struct" href="struct.Label.html" title="struct hir::Label">Label</a></dt><dt><a class="struct" href="struct.Layout.html" title="struct hir::Layout">Layout</a></dt><dt><a class="struct" href="struct.LifetimeParam.html" title="struct hir::LifetimeParam">Lifetime<wbr>Param</a></dt><dt><a class="struct" href="struct.Local.html" title="struct hir::Local">Local</a></dt><dd>A single local definition.</dd><dt><a class="struct" href="struct.LocalSource.html" title="struct hir::LocalSource">Local<wbr>Source</a></dt><dt><a class="struct" href="struct.Macro.html" title="struct hir::Macro">Macro</a></dt><dt><a class="struct" href="struct.MacroCallId.html" title="struct hir::MacroCallId">Macro<wbr>Call<wbr>Id</a></dt><dt><a class="struct" href="struct.ModPath.html" title="struct hir::ModPath">ModPath</a></dt><dt><a class="struct" href="struct.Module.html" title="struct hir::Module">Module</a></dt><dt><a class="struct" href="struct.Name.html" title="struct hir::Name">Name</a></dt><dd><code>Name</code> is a wrapper around string, which is used in hir for both references
and declarations. In theory, names should also carry hygiene info, but we are
not there yet!</dd><dt><a class="struct" href="struct.OverloadedDeref.html" title="struct hir::OverloadedDeref">Overloaded<wbr>Deref</a></dt><dt><a class="struct" href="struct.Param.html" title="struct hir::Param">Param</a></dt><dt><a class="struct" href="struct.PathResolutionPerNs.html" title="struct hir::PathResolutionPerNs">Path<wbr>Resolution<wbr>PerNs</a></dt><dt><a class="struct" href="struct.ProcMacros.html" title="struct hir::ProcMacros">Proc<wbr>Macros</a></dt><dt><a class="struct" href="struct.ProcMacrosBuilder.html" title="struct hir::ProcMacrosBuilder">Proc<wbr>Macros<wbr>Builder</a></dt><dt><a class="struct" href="struct.SelfParam.html" title="struct hir::SelfParam">Self<wbr>Param</a></dt><dt><a class="struct" href="struct.Semantics.html" title="struct hir::Semantics">Semantics</a></dt><dd>Primary API to get semantic information, like types, from syntax trees.</dd><dt><a class="struct" href="struct.SemanticsImpl.html" title="struct hir::SemanticsImpl">Semantics<wbr>Impl</a></dt><dt><a class="struct" href="struct.SemanticsScope.html" title="struct hir::SemanticsScope">Semantics<wbr>Scope</a></dt><dd><code>SemanticsScope</code> encapsulates the notion of a scope (the set of visible
names) at a particular program point.</dd><dt><a class="struct" href="struct.Static.html" title="struct hir::Static">Static</a></dt><dt><a class="struct" href="struct.StaticLifetime.html" title="struct hir::StaticLifetime">Static<wbr>Lifetime</a></dt><dt><a class="struct" href="struct.Struct.html" title="struct hir::Struct">Struct</a></dt><dt><a class="struct" href="struct.Symbol.html" title="struct hir::Symbol">Symbol</a></dt><dt><a class="struct" href="struct.ToolModule.html" title="struct hir::ToolModule">Tool<wbr>Module</a></dt><dt><a class="struct" href="struct.Trait.html" title="struct hir::Trait">Trait</a></dt><dt><a class="struct" href="struct.TraitId.html" title="struct hir::TraitId">TraitId</a></dt><dt><a class="struct" href="struct.TraitRef.html" title="struct hir::TraitRef">Trait<wbr>Ref</a></dt><dt><a class="struct" href="struct.TupleField.html" title="struct hir::TupleField">Tuple<wbr>Field</a></dt><dt><a class="struct" href="struct.Type.html" title="struct hir::Type">Type</a></dt><dt><a class="struct" href="struct.TypeAlias.html" title="struct hir::TypeAlias">Type<wbr>Alias</a></dt><dt><a class="struct" href="struct.TypeInfo.html" title="struct hir::TypeInfo">Type<wbr>Info</a></dt><dt><a class="struct" href="struct.TypeNs.html" title="struct hir::TypeNs">TypeNs</a></dt><dt><a class="struct" href="struct.TypeOrConstParam.html" title="struct hir::TypeOrConstParam">Type<wbr>OrConst<wbr>Param</a></dt><dt><a class="struct" href="struct.TypeParam.html" title="struct hir::TypeParam">Type<wbr>Param</a></dt><dt><a class="struct" href="struct.Union.html" title="struct hir::Union">Union</a></dt><dt><a class="struct" href="struct.Variant.html" title="struct hir::Variant">Variant</a></dt><dt><a class="struct" href="struct.VisibleTraits.html" title="struct hir::VisibleTraits">Visible<wbr>Traits</a></dt></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.Access.html" title="enum hir::Access">Access</a></dt><dt><a class="enum" href="enum.Adjust.html" title="enum hir::Adjust">Adjust</a></dt><dt><a class="enum" href="enum.Adt.html" title="enum hir::Adt">Adt</a></dt><dd>A Data Type</dd><dt><a class="enum" href="enum.AssocItem.html" title="enum hir::AssocItem">Assoc<wbr>Item</a></dt><dd>Invariant: <code>inner.as_assoc_item(db).is_some()</code>
We do not actively enforce this invariant.</dd><dt><a class="enum" href="enum.AssocItemContainer.html" title="enum hir::AssocItemContainer">Assoc<wbr>Item<wbr>Container</a></dt><dt><a class="enum" href="enum.AutoBorrow.html" title="enum hir::AutoBorrow">Auto<wbr>Borrow</a></dt><dt><a class="enum" href="enum.BindingMode.html" title="enum hir::BindingMode">Binding<wbr>Mode</a></dt><dt><a class="enum" href="enum.CallableKind.html" title="enum hir::CallableKind">Callable<wbr>Kind</a></dt><dt><a class="enum" href="enum.CaptureKind.html" title="enum hir::CaptureKind">Capture<wbr>Kind</a></dt><dt><a class="enum" href="enum.CastError.html" title="enum hir::CastError">Cast<wbr>Error</a></dt><dt><a class="enum" href="enum.CfgAtom.html" title="enum hir::CfgAtom">CfgAtom</a></dt><dd>A simple configuration value passed in from the outside.</dd><dt><a class="enum" href="enum.CfgExpr.html" title="enum hir::CfgExpr">CfgExpr</a></dt><dt><a class="enum" href="enum.ClosureStyle.html" title="enum hir::ClosureStyle">Closure<wbr>Style</a></dt><dt><a class="enum" href="enum.Complete.html" title="enum hir::Complete">Complete</a></dt><dd><code>#[rust_analyzer::completions(...)]</code> options.</dd><dt><a class="enum" href="enum.ConstEvalError.html" title="enum hir::ConstEvalError">Const<wbr>Eval<wbr>Error</a></dt><dt><a class="enum" href="enum.DefWithBody.html" title="enum hir::DefWithBody">DefWith<wbr>Body</a></dt><dd>The defs which have a body.</dd><dt><a class="enum" href="enum.DocLinkDef.html" title="enum hir::DocLinkDef">DocLink<wbr>Def</a></dt><dd>Subset of <code>ide_db::Definition</code> that doc links can resolve to.</dd><dt><a class="enum" href="enum.DropGlue.html" title="enum hir::DropGlue">Drop<wbr>Glue</a></dt><dt><a class="enum" href="enum.DynCompatibilityViolation.html" title="enum hir::DynCompatibilityViolation">DynCompatibility<wbr>Violation</a></dt><dt><a class="enum" href="enum.ExternAssocItem.html" title="enum hir::ExternAssocItem">Extern<wbr>Assoc<wbr>Item</a></dt><dd>Invariant: <code>inner.as_extern_assoc_item(db).is_some()</code>
We do not actively enforce this invariant.</dd><dt><a class="enum" href="enum.FieldSource.html" title="enum hir::FieldSource">Field<wbr>Source</a></dt><dt><a class="enum" href="enum.FnAbi.html" title="enum hir::FnAbi">FnAbi</a></dt><dt><a class="enum" href="enum.GenericDef.html" title="enum hir::GenericDef">Generic<wbr>Def</a></dt><dt><a class="enum" href="enum.GenericParam.html" title="enum hir::GenericParam">Generic<wbr>Param</a></dt><dt><a class="enum" href="enum.HirDisplayError.html" title="enum hir::HirDisplayError">HirDisplay<wbr>Error</a></dt><dt><a class="enum" href="enum.HirFileId.html" title="enum hir::HirFileId">HirFile<wbr>Id</a></dt><dt><a class="enum" href="enum.ItemContainer.html" title="enum hir::ItemContainer">Item<wbr>Container</a></dt><dt><a class="enum" href="enum.ItemInNs.html" title="enum hir::ItemInNs">Item<wbr>InNs</a></dt><dt><a class="enum" href="enum.LangItem.html" title="enum hir::LangItem">Lang<wbr>Item</a></dt><dd>A representation of all the valid language items in Rust.</dd><dt><a class="enum" href="enum.LayoutError.html" title="enum hir::LayoutError">Layout<wbr>Error</a></dt><dt><a class="enum" href="enum.MacroKind.html" title="enum hir::MacroKind">Macro<wbr>Kind</a></dt><dt><a class="enum" href="enum.MethodViolationCode.html" title="enum hir::MethodViolationCode">Method<wbr>Violation<wbr>Code</a></dt><dt><a class="enum" href="enum.MirEvalError.html" title="enum hir::MirEvalError">MirEval<wbr>Error</a></dt><dt><a class="enum" href="enum.MirLowerError.html" title="enum hir::MirLowerError">MirLower<wbr>Error</a></dt><dt><a class="enum" href="enum.ModuleDef.html" title="enum hir::ModuleDef">Module<wbr>Def</a></dt><dd>The defs which can be visible in the module.</dd><dt><a class="enum" href="enum.ModuleDefId.html" title="enum hir::ModuleDefId">Module<wbr>DefId</a></dt><dd>The defs which can be visible in the module.</dd><dt><a class="enum" href="enum.ModuleSource.html" title="enum hir::ModuleSource">Module<wbr>Source</a></dt><dt><a class="enum" href="enum.Mutability.html" title="enum hir::Mutability">Mutability</a></dt><dt><a class="enum" href="enum.Namespace.html" title="enum hir::Namespace">Namespace</a></dt><dt><a class="enum" href="enum.PathKind.html" title="enum hir::PathKind">Path<wbr>Kind</a></dt><dt><a class="enum" href="enum.PathResolution.html" title="enum hir::PathResolution">Path<wbr>Resolution</a></dt><dt><a class="enum" href="enum.PointerCast.html" title="enum hir::PointerCast">Pointer<wbr>Cast</a></dt><dt><a class="enum" href="enum.PrefixKind.html" title="enum hir::PrefixKind">Prefix<wbr>Kind</a></dt><dt><a class="enum" href="enum.Safety.html" title="enum hir::Safety">Safety</a></dt><dt><a class="enum" href="enum.ScopeDef.html" title="enum hir::ScopeDef">Scope<wbr>Def</a></dt><dd>For IDE only</dd><dt><a class="enum" href="enum.StructKind.html" title="enum hir::StructKind">Struct<wbr>Kind</a></dt><dt><a class="enum" href="enum.TyFingerprint.html" title="enum hir::TyFingerprint">TyFingerprint</a></dt><dd>This is used as a key for indexing impls.</dd><dt><a class="enum" href="enum.TypeRef.html" title="enum hir::TypeRef">TypeRef</a></dt><dd>Compare ty::Ty</dd><dt><a class="enum" href="enum.UnsafetyReason.html" title="enum hir::UnsafetyReason">Unsafety<wbr>Reason</a></dt><dt><a class="enum" href="enum.Variance.html" title="enum hir::Variance">Variance</a></dt><dt><a class="enum" href="enum.VariantDef.html" title="enum hir::VariantDef">Variant<wbr>Def</a></dt><dt><a class="enum" href="enum.Visibility.html" title="enum hir::Visibility">Visibility</a></dt><dd>Visibility of an item, with the path resolved.</dd></dl><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><dl class="item-table"><dt><a class="trait" href="trait.AsAssocItem.html" title="trait hir::AsAssocItem">AsAssoc<wbr>Item</a></dt><dt><a class="trait" href="trait.AsExternAssocItem.html" title="trait hir::AsExternAssocItem">AsExtern<wbr>Assoc<wbr>Item</a></dt><dt><a class="trait" href="trait.HasAttrs.html" title="trait hir::HasAttrs">HasAttrs</a></dt><dt><a class="trait" href="trait.HasContainer.html" title="trait hir::HasContainer">HasContainer</a></dt><dt><a class="trait" href="trait.HasCrate.html" title="trait hir::HasCrate">HasCrate</a></dt><dd>Trait for obtaining the defining crate of an item.</dd><dt><a class="trait" href="trait.HasSource.html" title="trait hir::HasSource">HasSource</a></dt><dt><a class="trait" href="trait.HasVisibility.html" title="trait hir::HasVisibility">HasVisibility</a></dt><dt><a class="trait" href="trait.HirDisplay.html" title="trait hir::HirDisplay">HirDisplay</a></dt><dt><a class="trait" href="trait.HirWrite.html" title="trait hir::HirWrite">HirWrite</a></dt><dt><a class="trait" href="trait.MethodCandidateCallback.html" title="trait hir::MethodCandidateCallback">Method<wbr>Candidate<wbr>Callback</a></dt><dt><a class="trait" href="trait.PathCandidateCallback.html" title="trait hir::PathCandidateCallback">Path<wbr>Candidate<wbr>Callback</a></dt></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.attach_db.html" title="fn hir::attach_db">attach_<wbr>db</a></dt><dt><a class="fn" href="fn.attach_db_allow_change.html" title="fn hir::attach_db_allow_change">attach_<wbr>db_<wbr>allow_<wbr>change</a></dt><dt><a class="fn" href="fn.clear_tls_solver_cache.html" title="fn hir::clear_tls_solver_cache">clear_<wbr>tls_<wbr>solver_<wbr>cache</a></dt><dd>Clears the thread-local trait solver cache.</dd><dt><a class="fn" href="fn.crate_def_map.html" title="fn hir::crate_def_map">crate_<wbr>def_<wbr>map</a></dt><dt><a class="fn" href="fn.prettify_macro_expansion.html" title="fn hir::prettify_macro_expansion">prettify_<wbr>macro_<wbr>expansion</a></dt><dd>Inserts whitespace and replaces <code>$crate</code> in macro expansions.</dd><dt><a class="fn" href="fn.resolve_absolute_path.html" title="fn hir::resolve_absolute_path">resolve_<wbr>absolute_<wbr>path</a></dt><dt><a class="fn" href="fn.resolve_doc_path_on.html" title="fn hir::resolve_doc_path_on">resolve_<wbr>doc_<wbr>path_<wbr>on</a></dt><dd>Resolves the item <code>link</code> points to in the scope of <code>def</code>.</dd><dt><a class="fn" href="fn.setup_tracing.html" title="fn hir::setup_tracing">setup_<wbr>tracing</a></dt></dl><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><dl class="item-table"><dt><a class="type" href="type.ExpandResult.html" title="type hir::ExpandResult">Expand<wbr>Result</a></dt><dt><a class="type" href="type.FilePosition.html" title="type hir::FilePosition">File<wbr>Position</a></dt><dt><a class="type" href="type.FileRange.html" title="type hir::FileRange">File<wbr>Range</a></dt><dt><a class="type" href="type.HirFilePosition.html" title="type hir::HirFilePosition">HirFile<wbr>Position</a></dt><dt><a class="type" href="type.HirFileRange.html" title="type hir::HirFileRange">HirFile<wbr>Range</a></dt><dt><a class="type" href="type.InFile.html" title="type hir::InFile">InFile</a></dt><dt><a class="type" href="type.InMacroFile.html" title="type hir::InMacroFile">InMacro<wbr>File</a></dt><dt><a class="type" href="type.InRealFile.html" title="type hir::InRealFile">InReal<wbr>File</a></dt><dt><a class="type" href="type.MacroFilePosition.html" title="type hir::MacroFilePosition">Macro<wbr>File<wbr>Position</a></dt><dt><a class="type" href="type.MacroFileRange.html" title="type hir::MacroFileRange">Macro<wbr>File<wbr>Range</a></dt></dl><script type="text/json" id="notable-traits-data">{"TtIter<'_, S>":"<h3>Notable traits for <code>TtIter&lt;'a, S&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.91.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for TtIter&lt;'a, S&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.91.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = TtElement&lt;'a, S&gt;;</div>","TtIter<'a, S>":"<h3>Notable traits for <code>TtIter&lt;'a, S&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, S&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.91.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for TtIter&lt;'a, S&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.91.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = TtElement&lt;'a, S&gt;;</div>"}</script></section></div></main></body></html>