mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-11 20:58:54 +00:00
33 lines
30 KiB
HTML
33 lines
30 KiB
HTML
|
<!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 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><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 didn’t 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> don’t 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. It’s the main interface with which
|
|||
|
a crate’s 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<T></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><
|