Expand description

Utils for extracting, inspecting or transforming source code

Functions

Like snippet_block, but add braces if the expr is not an ExprKind::Block. Also takes an Option<String> which can be put inside the braces.

Returns a new Span that extends the original Span to the first non-whitespace char of the first line.

Returns the indentation of the line of a span

Returns the positon just before rarrow

Reindent a multiline string with possibility of ignoring the first line.

Converts a span to a code snippet if available, otherwise returns the default.

Converts a span (from a block) to a code snippet if available, otherwise use default.

Same as snippet_block, but adapts the applicability level by the rules of snippet_with_applicability.

Gets a snippet of the indentation of the line of a span

Converts a span to a code snippet. Returns None if not available.

Same as snippet, but it adapts the applicability level by following rules:

Same as snippet_with_applicability, but first walks the span up to the given context. This will result in the macro call, rather then the expansion, if the span is from a child context. If the span is not from a child context, it will be used directly instead.

Same as snippet, but should only be used when it’s clear that the input span is not a macro argument.

Walks the span up to the target context, thereby returning the macro call site if the span is inside a macro expansion, or the original span if it is not. Note this will return None in the case of the span being in a macro expansion, but the target context is from expanding a macro argument.

Removes block comments from the given Vec of lines.