| <!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> <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<T></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<'a, S></code></h3><pre><code><div class=\"where\">impl<'a, S> <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<'a, S></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<'a, S>;</div>","TtIter<'a, S>":"<h3>Notable traits for <code>TtIter<'a, S></code></h3><pre><code><div class=\"where\">impl<'a, S> <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<'a, S></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<'a, S>;</div>"}</script></section></div></main></body></html> |