Struct rustc_typeck::hir::map::Map [] [src]

pub struct Map<'hir> {
    pub forest: &'hir Forest,
    pub dep_graph: DepGraph,
    // some fields omitted
}
🔬 This is a nightly-only experimental API. (rustc_private)

Represents a mapping from Node IDs to AST elements and their parent Node IDs

Fields

🔬 This is a nightly-only experimental API. (rustc_private)

The backing storage for all the AST nodes.

🔬 This is a nightly-only experimental API. (rustc_private)

Same as the dep_graph in forest, just available with one fewer deref. This is a gratuitious micro-optimization.

Methods

impl<'hir> Map<'hir>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

Registers a read in the dependency graph of the AST node with the given id. This needs to be called each time a public function returns the HIR for a node -- in other words, when it "reveals" the content of a node to the caller (who might not otherwise have had access to those contents, and hence needs a read recorded). If the function just returns a DefId or NodeId, no actual content was returned, so no read is needed.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Returns the NodeId that corresponds to the definition of which this is the body of, i.e. a fn, const or static item (possibly associated), or a closure, or the body itself for embedded constant expressions (e.g. N in [T; N]).

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Get the attributes on the krate. This is preferable to invoking krate.attrs because it registers a tighter dep-graph access.

🔬 This is a nightly-only experimental API. (rustc_private)

Retrieve the Node corresponding to id, panicking if it cannot be found.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Retrieve the Node corresponding to id, returning None if cannot be found.

🔬 This is a nightly-only experimental API. (rustc_private)

Similar to get_parent, returns the parent node id or id if there is no parent. This function returns the immediate parent in the AST, whereas get_parent returns the enclosing item. Note that this might not be the actual parent node in the AST - some kinds of nodes are not in the map and these will never appear as the parent_node. So you can always walk the parent_nodes from a node to the root of the ast (unless you get the same id back here that can happen if the id is not in the map itself or is just weird).

🔬 This is a nightly-only experimental API. (rustc_private)

Check if the node is an argument. An argument is a local variable whose immediate parent is an item or a closure.

🔬 This is a nightly-only experimental API. (rustc_private)

Retrieve the NodeId for id's parent item, or id itself if no parent item is in this map. The "parent item" is the closest parent node in the AST which is recorded by the map and is an item, either an item in a module, trait, or impl.

🔬 This is a nightly-only experimental API. (rustc_private)

Returns the NodeId of id's nearest module parent, or id itself if no module parent is in this map.

🔬 This is a nightly-only experimental API. (rustc_private)

Returns the nearest enclosing scope. A scope is an item or block. FIXME it is not clear to me that all items qualify as scopes - statics and associated types probably shouldn't, for example. Behaviour in this regard should be expected to be highly unstable.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Returns the name associated with the given NodeId's AST.

🔬 This is a nightly-only experimental API. (rustc_private)

Given a node ID, get a list of attributes associated with the AST corresponding to the Node ID

🔬 This is a nightly-only experimental API. (rustc_private)

Returns an iterator that yields the node id's with paths that match parts. (Requires parts is non-empty.)

For example, if given parts equal to ["bar", "quux"], then the iterator will produce node id's for items with paths such as foo::bar::quux, bar::quux, other::bar::quux, and any other such items it can find in the map.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Trait Implementations

impl<'hir> PpAnn for Map<'hir>
[src]

Identical to the PpAnn implementation for hir::Crate, except it avoids creating a dependency on the whole crate.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'hir> Clone for Map<'hir>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more