rust-analyzer/hir/index.html

33 lines
30 KiB
HTML
Raw Permalink Normal View History

<!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-Regular-0fe48ade.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" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-42caa33d.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.84.0 (9fc6b4312 2025-01-07)" data-channel="1.84.0" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../static.files/storage-59e33391.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-6580c154.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]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><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="#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"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><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-6177">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 dont 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><ul class="item-table"><li><div class="item-name"><code>pub use crate::<a class="mod" href="diagnostics/index.html" title="mod hir::diagnostics">diagnostics</a>::*;</code></div></li></ul><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="db/index.html" title="mod hir::db">db</a></div><div class="desc docblock-short">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 didnt do that.</div></li><li><div class="item-name"><a class="mod" href="diagnostics/index.html" title="mod hir::diagnostics">diagnostics</a></div><div class="desc docblock-short">Re-export diagnostics such that clients of <code>hir</code> dont have to depend on
low-level crates.</div></li><li><div class="item-name"><a class="mod" href="import_map/index.html" title="mod hir::import_map">import_<wbr>map</a></div><div class="desc docblock-short">A map of all publicly exported items in a crate.</div></li><li><div class="item-name"><a class="mod" href="mir/index.html" title="mod hir::mir">mir</a></div><div class="desc docblock-short">MIR definitions and implementation</div></li><li><div class="item-name"><a class="mod" href="sym/index.html" title="mod hir::sym">sym</a></div><div class="desc docblock-short">Module defining all known symbols required by the rest of rust-analyzer.</div></li><li><div class="item-name"><a class="mod" href="symbols/index.html" title="mod hir::symbols">symbols</a></div><div class="desc docblock-short">File symbol extraction.</div></li><li><div class="item-name"><a class="mod" href="term_search/index.html" title="mod hir::term_search">term_<wbr>search</a></div><div class="desc docblock-short">Term search</div></li><li><div class="item-name"><a class="mod" href="tt/index.html" title="mod hir::tt">tt</a></div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Adjustment.html" title="struct hir::Adjustment">Adjustment</a></div></li><li><div class="item-name"><a class="struct" href="struct.Attr.html" title="struct hir::Attr">Attr</a></div></li><li><div class="item-name"><a class="struct" href="struct.AttrId.html" title="struct hir::AttrId">AttrId</a></div></li><li><div class="item-name"><a class="struct" href="struct.AttrSourceMap.html" title="struct hir::AttrSourceMap">Attr<wbr>Source<wbr>Map</a></div></li><li><div class="item-name"><a class="struct" href="struct.AttributeTemplate.html" title="struct hir::AttributeTemplate">Attribute<wbr>Template</a></div><div class="desc docblock-short">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.</div></li><li><div class="item-name"><a class="struct" href="struct.Attrs.html" title="struct hir::Attrs">Attrs</a></div><div class="desc docblock-short">Desugared attributes of an item post <code>cfg_attr</code> expansion.</div></li><li><div class="item-name"><a class="struct" href="struct.AttrsWithOwner.html" title="struct hir::AttrsWithOwner">Attrs<wbr>With<wbr>Owner</a></div></li><li><div class="item-name"><a class="struct" href="struct.BuiltinAttr.html" title="struct hir::BuiltinAttr">Builtin<wbr>Attr</a></div></li><li><div class="item-name"><a class="struct" href="struct.BuiltinType.html" title="struct hir::BuiltinType">Builtin<wbr>Type</a></div></li><li><div class="item-name"><a class="struct" href="struct.Callable.html" title="struct hir::Callable">Callable</a></div></li><li><div class="item-name"><a class="struct" href="struct.CaptureUsageSource.html" title="struct hir::CaptureUsageSource">Capture<wbr>Usage<wbr>Source</a></div></li><li><div class="item-name"><a class="struct" href="struct.CaptureUsages.html" title="struct hir::CaptureUsages">Capture<wbr>Usages</a></div></li><li><div class="item-name"><a class="struct" href="struct.CfgOptions.html" title="struct hir::CfgOptions">CfgOptions</a></div><div class="desc docblock-short">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>.</div></li><li><div class="item-name"><a class="struct" href="struct.ChalkTyInterner.html" title="struct hir::ChalkTyInterner">Chalk<wbr>TyInterner</a></div></li><li><div class="item-name"><a class="struct" href="struct.ChangeWithProcMacros.html" title="struct hir::ChangeWithProcMacros">Change<wbr>With<wbr>Proc<wbr>Macros</a></div></li><li><div class="item-name"><a class="struct" href="struct.Closure.html" title="struct hir::Closure">Closure</a></div></li><li><div class="item-name"><a class="struct" href="struct.ClosureCapture.html" title="struct hir::ClosureCapture">Closure<wbr>Capture</a></div></li><li><div class="item-name"><a class="struct" href="struct.Const.html" title="struct hir::Const">Const</a></div></li><li><div class="item-name"><a class="struct" href="struct.ConstParam.html" title="struct hir::ConstParam">Const<wbr>Param</a></div></li><li><div class="item-name"><a class="struct" href="struct.Crate.html" title="struct hir::Crate">Crate</a></div><div class="desc docblock-short">hir::Crate describes a single crate. Its the main interface with which
a crates dependencies interact. Mostly, it should be just a proxy for the
root module.</div></li><li><div class="item-name"><a class="struct" href="struct.CrateDependency.html" title="struct hir::CrateDependency">Crate<wbr>Dependency</a></div></li><li><div class="item-name"><a class="struct" href="struct.DefMap.html" title="struct hir::DefMap">DefMap</a></div><div class="desc docblock-short">Contains the results of (early) name resolution.</div></li><li><div class="item-name"><a class="struct" href="struct.DeriveHelper.html" title="struct hir::DeriveHelper">Derive<wbr>Helper</a></div></li><li><div class="item-name"><a class="struct" href="struct.Enum.html" title="struct hir::Enum">Enum</a></div></li><li><div class="item-name"><a class="struct" href="struct.EvaluatedConst.html" title="struct hir::EvaluatedConst">Evaluated<wbr>Const</a></div></li><li><div class="item-name"><a class="struct" href="struct.ExternCrateDecl.html" title="struct hir::ExternCrateDecl">Extern<wbr>Crate<wbr>Decl</a></div></li><li><div class="item-name"><a class="struct" href="struct.Field.html" title="struct hir::Field">Field</a></div></li><li><div class="item-name"><a class="struct" href="struct.FilePositionWrapper.html" title="struct hir::FilePositionWrapper">File<wbr>Position<wbr>Wrapper</a></div></li><li><div class="item-name"><a class="struct" href="struct.FileRangeWrapper.html" title="struct hir::FileRangeWrapper">File<wbr>Range<wbr>Wrapper</a></div></li><li><div class="item-name"><a class="struct" href="struct.Function.html" title="struct hir::Function">Function</a></div></li><li><div class="item-name"><a class="struct" href="struct.GenericSubstitution.html" title="struct hir::GenericSubstitution">Generic<wbr>Substitution</a></div></li><li><div class="item-name"><a class="struct" href="struct.HirFileId.html" title="struct hir::HirFileId">HirFile<wbr>Id</a></div><div class="desc docblock-short">Input to the analyzer is a set of files, where each file is identified by
<code>FileId</code> and contains source code. However, another source of source code in
Rust are macros: each macro can be thought of as producing a “temporary
file”. To assign an id to such a file, we use the id of the macro call that
produced the file. So, a <code>HirFileId</code> is either a <code>FileId</code> (source code
written by user), or a <code>MacroCallId</code> (source code produced by macro).</div></li><li><div class="item-name"><a class="struct" href="struct.Impl.html" title="struct hir::Impl">Impl</a></div></li><li><div class="item-name"><a class="struct" href="struct.ImportPathConfig.html" title="struct hir::ImportPathConfig">Import<wbr>Path<wbr>Config</a></div><div class="desc docblock-short">A wrapper around three booleans</div></li><li><div class="item-name"><a class="struct" href="struct.InFileWrapper.html" title="struct hir::InFileWrapper">InFile<wbr>Wrapper</a></div><div class="desc docblock-short"><code>InFile&lt;T&gt;</code> stores a value of <code>T</code> inside a particular file/syntax tree.</div></li><li><div class="item-name"><a class="struct" href="struct.InTypeConst.html" title="struct hir::InTypeConst">InType<wbr>Const</a></div></li><li><div class="item-name"><a class="struct" href="struct.InlineAsmOperand.html" title="struct hir::InlineAsmOperand">Inline<wbr>AsmOperand</a></div></li><li><div class="item-name"><a class="struct" href="struct.Label.html" title="struct hir::Label">Label</a></div></li><li><div class="item-name"><a class="struct" href="struct.Layout.html" title="struct hir::Layout">Layout</a></div></li><li><div class="item-name"><a class="struct" href="struct.LifetimeParam.html" title="struct hir::LifetimeParam">Lifetime<wbr>Param</a></div></li><li><div class="item-name"><a class="struct" href="struct.Local.html" title="struct hir::Local">Local</a></div><div class="desc docblock-short">A single local definition.</div></li><li><div class="item-name"><a class="struct" href="struct.LocalSource.html" title="struct hir::LocalSource">Local<wbr>Source</a></div></li><li><div class="item-name"><a class="struct" href="struct.Macro.html" title="struct hir::Macro">Macro</a></div></li><li><div class="item-name"><a class="struct" href="struct.MacroFileId.html" title="struct hir::MacroFileId">Macro<wbr>File<wbr>Id</a></div></li><li><div class="item-name"><a class="struct" href="struct.ModPath.html" title="struct hir::ModPath">ModPath</a></div></li><li><div class="item-name"><a class="struct" href="struct.Module.html" title="struct hir::Module">Module</a></div></li><li><div class="item-name"><a class="struct" href="struct.Name.html" title="struct hir::Name">Name</a></div><div class="desc docblock-short"><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!</div></li><li><div class="item-name"><a class="struct" href="struct.OverloadedDeref.html" title="struct hir::OverloadedDeref">Overloaded<wbr>Deref</a></div></li><li><div class="item-name"><a class="struct" href="struct.Param.html" title="struct hir::Param">Param</a></div></li><li><div class="item-name"><a class="struct" href="struct.ProcMacros.html" title="struct hir::ProcMacros">Proc<wbr>Macros</a></div></li><li><div class="item-name"><a class="struct" href="struct.ProcMacrosBuilder.html" title="struct hir::ProcMacrosBuilder">Proc<wbr>Macros<wbr>Builder</a></div></li><li><div class="item-name"><a class="struct" href="struct.SelfParam.html" title="struct hir::SelfParam">Self<wbr>Param</a></div></li><li><div class="item-name"><a class="struct" href="struct.Semantics.html" title="struct hir::Semantics">Semantics</a></div><div class="desc docblock-short">Primary API to get semantic information, like types, from syntax trees.</div></li><li><div class="item-name"><a class="struct" href="struct.SemanticsImpl.html" title="struct hir::SemanticsImpl">Semantics<wbr>Impl</a></div></li><li><div class="item-name"><a class="struct" href="struct.SemanticsScope.html" title="struct hir::SemanticsScope">Semantics<wbr>Scope</a></div><div class="desc docblock-short"><code>SemanticsScope</code> encapsulates the notion of a scope (the set of visible
names) at a particular program point.</div></li><li><div class="item-name"><a class="struct" href="struct.Static.html" title="struct hir::Static">Static</a></div></li><li><div class="item-name"><a class="struct" href="struct.StaticLifetime.html" title="struct hir::StaticLifetime">Static<wbr>Lifetime</a></div></li><li><div class="item-name"><a class="struct" href="struct.Struct.html" title="struct hir::Struct">Struct</a></div></li><li><div class="item-name"><a class="struct" href="struct.Symbol.html" title="struct hir::Symbol">Symbol</a></div></li><li><div class="item-name"><a class="struct" href="struct.ToolModule.html" title="struct hir::ToolModule">Tool<wbr>Module</a></div></li><li><div class="item-name"><a class="struct" href="struct.Trait.html" title="struct hir::Trait">Trait</a></div></li><li><div class="item-name"><a class="struct" href="struct.TraitAlias.html" title="struct hir::TraitAlias">Trait<wbr>Alias</a></div></li><li><div class="item-name"><a class="struct" href="struct.TraitRef.html" title="struct hir::TraitRef">Trait<wbr>Ref</a></div></li><li><div class="item-name"><a class="struct" href="struct.TupleField.html" title="struct hir::TupleField">Tuple<wbr>Field</a></div></li><li><div class="item-name"><a class="struct" href="struct.Type.html" title="struct hir::Type">Type</a></div></li><li><div class="item-name"><a class="struct" href="struct.TypeAlias.html" title="struct hir::TypeAlias">Type<wbr>Alias</a></div></li><li><div class="item-name"><a class="struct" href="struct.TypeInfo.html" title="struct hir::TypeInfo">Type<wbr>Info</a></div></li><li><div class="item-name"><a class="struct" href="struct.TypeOrConstParam.html" title="struct hir::TypeOrConstParam">Type<wbr>OrConst<wbr>Param</a></div></li><li><div class="item-name"><a class="struct" href="struct.TypeParam.html" title="struct hir::TypeParam">Type<wbr>Param</a></div></li><li><div class="item-name"><a class="struct" href="struct.Union.html" title="struct hir::Union">Union</a></div></li><li><div class="item-name"><a class="struct" href="struct.Variant.html" title="struct hir::Variant">Variant</a></div></li><li><div class="item-name"><a class="struct" href="struct.VisibleTraits.html" title="struct hir::VisibleTraits">Visible<wbr>Traits</a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.Access.html" title="enum hir::Access">Access</a></div></li><li><div class="item-name"><a class="enum" href="enum.Adjust.html" title="enum hir::Adjust">Adjust</a></div></li><li><div class="item-name"><a class="enum" href="enum.Adt.html" title="enum hir::Adt">Adt</a></div><div class="desc docblock-short">A Data Type</div></li><li><div class="item-name"><a class="enum" href="enum.AssocItem.html" title="enum hir::AssocItem">Assoc<wbr>Item</a></div><div class="desc docblock-short">Invariant: <code>inner.as_assoc_item(db).is_some()</code>
We do not actively enforce this invariant.</div></li><li><div class="item-name"><a class="enum" href="enum.AssocItemContainer.html" title="enum hir::AssocItemContainer">Assoc<wbr>Item<wbr>Container</a></div></li><li><div class="item-name"><a class="enum" href="enum.AutoBorrow.html" title="enum hir::AutoBorrow">Auto<wbr>Borrow</a></div></li><li><div class="item-name"><a class="enum" href="enum.BindingMode.html" title="enum hir::BindingMode">Binding<wbr>Mode</a></div></li><li><div class="item-name"><a class="enum" href="enum.CallableKind.html" title="enum hir::CallableKind">Callable<wbr>Kind</a></div></li><li><div class="item-name"><a class="enum" href="enum.CaptureKind.html" title="enum hir::CaptureKind">Capture<wbr>Kind</a></div></li><li><div class="item-name"><a class="enum" href="enum.CastError.html" title="enum hir::CastError">Cast<wbr>Error</a></div></li><li><div class="item-name"><a class="enum" href="enum.CfgAtom.html" title="enum hir::CfgAtom">CfgAtom</a></div><div class="desc docblock-short">A simple configuration value passed in from the outside.</div></li><li><div class="item-name"><a class="enum" href="enum.CfgExpr.html" title="enum hir::CfgExpr">CfgExpr</a></div></li><li><div class="item-name"><a class="enum" href="enum.ClosureStyle.html" title="enum hir::ClosureStyle">Closure<wbr>Style</a></div></li><li><div class="item-name"><a class="enum" href="enum.ConstEvalError.html" title="enum hir::ConstEvalError">Const<wbr>Eval<wbr>Error</a></div></li><li><div class="item-name"><a class="enum" href="enum.DefWithBody.html" title="enum hir::DefWithBody">DefWith<wbr>Body</a></div><div class="desc docblock-short">The defs which have a body.</div></li><li><div class="item-name"><a class="enum" href="enum.DocLinkDef.html" title="enum hir::DocLinkDef">DocLink<wbr>Def</a></div><div class="desc docblock-short">Subset of <code>ide_db::Definition</code> that doc links can resolve to.</div></li><li><div class="item-name"><a class="enum" href="enum.DynCompatibilityViolation.html" title="enum hir::DynCompatibilityViolation">DynCompatibility<wbr>Violation</a></div></li><li><div class="item-name"><a class="enum" href="enum.ExternAssocItem.html" title="enum hir::ExternAssocItem">Extern<wbr>Assoc<wbr>Item</a></div><div class="desc docblock-short">Invariant: <code>inner.as_extern_assoc_item(db).is_some()</code>
We do not actively enforce this invariant.</div></li><li><div class="item-name"><a class="enum" href="enum.FieldSource.html" title="enum hir::FieldSource">Field<wbr>Source</a></div></li><li><div class="item-name"><a class="enum" href="enum.FnAbi.html" title="enum hir::FnAbi">FnAbi</a></div></li><li><div class="item-name"><a class="enum" href="enum.GenericDef.html" title="enum hir::GenericDef">Generic<wbr>Def</a></div></li><li><div class="item-name"><a class="enum" href="enum.GenericParam.html" title="enum hir::GenericParam">Generic<wbr>Param</a></div></li><li><div class="item-name"><a class="enum" href="enum.HirDisplayError.html" title="enum hir::HirDisplayError">HirDisplay<wbr>Error</a></div></li><li><div class="item-name"><a class="enum" href="enum.ItemContainer.html" title="enum hir::ItemContainer">Item<wbr>Container</a></div></li><li><div class="item-name"><a class="enum" href="enum.ItemInNs.html" title="enum hir::ItemInNs">Item<wbr>InNs</a></div></li><li><div class="item-name"><a class="enum" href="enum.LangItem.html" title="enum hir::LangItem">Lang<wbr>Item</a></div><div class="desc docblock-short">A representation of all the valid language items in Rust.</div></li><li><div class="item-name"><a class="enum" href="enum.LayoutError.html" title="enum hir::LayoutError">Layout<wbr>Error</a></div></li><li><div class="item-name"><a class="enum" href="enum.MacroKind.html" title="enum hir::MacroKind">Macro<wbr>Kind</a></div></li><li><div class="item-name"><a class="enum" href="enum.MethodViolationCode.html" title="enum hir::MethodViolationCode">Method<wbr>Violation<wbr>Code</a></div></li><li><div class="item-name"><a class="enum" href="enum.MirEvalError.html" title="enum hir::MirEvalError">MirEval<wbr>Error</a></div></li><li><div class="item-name"><a class="enum" href="enum.MirLowerError.html" title="enum hir::MirLowerError">MirLower<wbr>Error</a></div></li><li><div class="item-name"><a class="enum" href="enum.ModuleDef.html" title="enum hir::ModuleDef">Module<wbr>Def</a></div><div class="desc docblock-short">The defs which can be visible in the module.</div></li><li><div class="item-name"><a class="enum" href="enum.ModuleDefId.html" title="enum hir::ModuleDefId">Module<wbr>DefId</a></div><div class="desc docblock-short">The defs which can be visible in the module.</div></li><li><div class="item-name"><a class="enum" href="enum.ModuleSource.html" title="enum hir::ModuleSource">Module<wbr>Source</a></div></li><li><div class="item-name"><a class="enum" href="enum.Mutability.html" title="enum hir::Mutability">Mutability</a></div></li><li><div class="item-name"><a class="enum" href="enum.Namespace.html" title="enum hir::Namespace">Namespace</a></div></li><li><div class="item-name"><a class="enum" href="enum.PathKind.html" title="enum hir::PathKind">Path<wbr>Kind</a></div></li><li><div class="item-name"><a class="enum" href="enum.PathResolution.html" title="enum hir::PathResolution">Path<wbr>Resolution</a></div></li><li><div class="item-name"><a class="enum" href="enum.PointerCast.html" title="enum hir::PointerCast">Pointer<wbr>Cast</a></div></li><li><div class="item-name"><a class="enum" href="enum.PrefixKind.html" title="enum hir::PrefixKind">Prefix<wbr>Kind</a></div></li><li><div class="item-name"><a class="enum" href="enum.Safety.html" title="enum hir::Safety">Safety</a></div><div class="desc docblock-short">Whether a function is safe or not.</div></li><li><div class="item-name"><a class="enum" href="enum.ScopeDef.html" title="enum hir::ScopeDef">Scope<wbr>Def</a></div><div class="desc docblock-short">For IDE only</div></li><li><div class="item-name"><a class="enum" href="enum.StructKind.html" title="enum hir::StructKind">Struct<wbr>Kind</a></div></li><li><div class="item-name"><a class="enum" href="enum.TyFingerprint.html" title="enum hir::TyFingerprint">TyFingerprint</a></div><div class="desc docblock-short">This is used as a key for indexing impls.</div></li><li><div class="item-name"><a class="enum" href="enum.TypeRef.html" title="enum hir::TypeRef">TypeRef</a></div><div class="desc docblock-short">Compare ty::Ty</div><