# Struct proc_macro2::Span

source · [−]

    pub struct Span { /* private fields */ }

Expand description

A region of source code, along with macro expansion information.

## Implementations

source

### impl Span

source

#### pub fn call_site() -> Self

The span of the invocation of the current procedural macro.

Identifiers created with this span will be resolved as if they were written directly at the macro call location (call-site hygiene) and other code at the macro call site will be able to refer to them as well.

source

#### pub fn mixed_site() -> Self

The span located at the invocation of the procedural macro, but with local variables, labels, and `$crate` resolved at the definition site of the macro. This is the same hygiene behavior as `macro_rules`.

This function requires Rust 1.45 or later.

source

#### pub fn resolved_at(&self, other: Span) -> Span

Creates a new span with the same line/column information as `self` but that resolves symbols as though it were at `other`.

source

#### pub fn located_at(&self, other: Span) -> Span

Creates a new span with the same name resolution behavior as `self` but with the line/column information of `other`.

source

#### pub fn unwrap(self) -> Span

Convert `proc_macro2::Span` to `proc_macro::Span`.

This method is available when building with a nightly compiler, or when building with rustc 1.29+ without semver exempt features.

##### Panics

Panics if called from outside of a procedural macro. Unlike `proc_macro2::Span`, the `proc_macro::Span` type can only exist within the context of a procedural macro invocation.

source

#### pub fn join(&self, other: Span) -> Option<Span>

Create a new span encompassing `self` and `other`.

Returns `None` if `self` and `other` are from different files.

Warning: the underlying `proc_macro::Span::join` method is nightly-only. When called from within a procedural macro not using a nightly compiler, this method will always return `None`.

## Trait Implementations

source

### impl Clone for Span

source

#### fn clone(&self) -> Span

Returns a copy of the value. Read more

1.0.0 · source

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more

source

### impl Debug for Span

Prints a span in a form convenient for debugging.

source

#### fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

source

### impl From<Span> for Span

source

#### fn from(proc_span: Span) -> Span

Converts to this type from the input type.

source

### impl Copy for Span

## Auto Trait Implementations

### impl RefUnwindSafe for Span

### impl !Send for Span

### impl !Sync for Span

### impl Unpin for Span

### impl UnwindSafe for Span

## Blanket Implementations

source

### impl<T> Any for T where
T: 'static + ?Sized,

source

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more

source

### impl<T> Borrow<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

### impl<T> BorrowMut<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

source

### impl<T> From<T> for T

const: unstable · source

#### fn from(t: T) -> T

Returns the argument unchanged.

source

### impl<T, U> Into<U> for T where
U: From<T>,

const: unstable · source

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source

### impl<T> ToOwned for T where
T: Clone,

#### type Owned = T

The resulting type after obtaining ownership.

source

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more

source

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more

source

### impl<T, U> TryFrom<U> for T where
U: Into<T>,

#### type Error = Infallible

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.

source

### impl<T, U> TryInto<U> for T where
U: TryFrom<T>,

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.