pub trait MaybeSpan: Copy + crate::sealed::MaybeSpan {
#[doc(hidden)]
#[cfg(feature = "proc-macro")]
fn into_span_or_call_site(self) -> proc_macro::Span;
#[doc(hidden)]
#[cfg(feature = "proc-macro")]
fn make_punct(self, punct: proc_macro::Punct) -> proc_macro::Punct;
#[doc(hidden)]
#[cfg(feature = "proc-macro")]
fn make_group(self, g: proc_macro::Group) -> proc_macro::Group;
#[doc(hidden)]
#[cfg(feature = "proc-macro")]
fn make_literal(self, literal: proc_macro::Literal) -> proc_macro::Literal;
#[doc(hidden)]
#[cfg(feature = "proc-macro2")]
fn into_span2_or_call_site(self) -> proc_macro2::Span;
#[doc(hidden)]
#[cfg(feature = "proc-macro2")]
fn make_punct2(self, punct: proc_macro2::Punct) -> proc_macro2::Punct;
#[doc(hidden)]
#[cfg(feature = "proc-macro2")]
fn make_group2(self, g: proc_macro2::Group) -> proc_macro2::Group;
#[doc(hidden)]
#[cfg(feature = "proc-macro2")]
fn make_literal2(self, literal: proc_macro2::Literal) -> proc_macro2::Literal;
#[doc(hidden)]
type Span: crate::Span;
#[doc(hidden)]
fn try_into_span(self) -> Option<Self::Span>;
#[doc(hidden)]
type WithDefaultSpan<S: crate::Span>: crate::Span;
#[doc(hidden)]
fn with_default_span<S: crate::Span>(self, span: S) -> Self::WithDefaultSpan<S>;
#[doc(hidden)]
type WithReplacedSpan<S: crate::Span>: crate::Span;
#[doc(hidden)]
fn with_replaced_span<S: crate::Span>(self, span: S) -> Self::WithReplacedSpan<S>;
}
#[cfg(feature = "proc-macro")]
impl<S: MaybeSpan> crate::into_st::IntoST<proc_macro::Punct> for (proc_macro::Punct, S) {
fn into_st(self) -> proc_macro::Punct {
self.1.make_punct(self.0)
}
}
#[cfg(feature = "proc-macro2")]
impl<S: MaybeSpan> crate::into_st::IntoST<proc_macro2::Punct> for (proc_macro2::Punct, S) {
fn into_st(self) -> proc_macro2::Punct {
self.1.make_punct2(self.0)
}
}
#[cfg(feature = "proc-macro")]
impl<S: MaybeSpan> crate::into_st::IntoST<proc_macro::Group> for (proc_macro::Group, S) {
fn into_st(self) -> proc_macro::Group {
self.1.make_group(self.0)
}
}
#[cfg(feature = "proc-macro2")]
impl<S: MaybeSpan> crate::into_st::IntoST<proc_macro2::Group> for (proc_macro2::Group, S) {
fn into_st(self) -> proc_macro2::Group {
self.1.make_group2(self.0)
}
}
#[cfg(feature = "proc-macro")]
impl<S: MaybeSpan> crate::into_st::IntoST<proc_macro::Literal> for (proc_macro::Literal, S) {
fn into_st(self) -> proc_macro::Literal {
self.1.make_literal(self.0)
}
}
#[cfg(feature = "proc-macro2")]
impl<S: MaybeSpan> crate::into_st::IntoST<proc_macro2::Literal> for (proc_macro2::Literal, S) {
fn into_st(self) -> proc_macro2::Literal {
self.1.make_literal2(self.0)
}
}
#[derive(Debug, Clone, Copy)]
pub struct NoSpan;
impl crate::sealed::MaybeSpan for NoSpan {}
impl MaybeSpan for NoSpan {
#[cfg(feature = "proc-macro")]
fn into_span_or_call_site(self) -> proc_macro::Span {
proc_macro::Span::call_site()
}
#[cfg(feature = "proc-macro")]
fn make_punct(self, punct: proc_macro::Punct) -> proc_macro::Punct {
punct
}
#[cfg(feature = "proc-macro")]
fn make_group(self, g: proc_macro::Group) -> proc_macro::Group {
g
}
#[cfg(feature = "proc-macro")]
fn make_literal(self, literal: proc_macro::Literal) -> proc_macro::Literal {
literal
}
#[cfg(feature = "proc-macro2")]
fn into_span2_or_call_site(self) -> proc_macro2::Span {
proc_macro2::Span::call_site()
}
#[cfg(feature = "proc-macro2")]
fn make_punct2(self, punct: proc_macro2::Punct) -> proc_macro2::Punct {
punct
}
#[cfg(feature = "proc-macro2")]
fn make_group2(self, g: proc_macro2::Group) -> proc_macro2::Group {
g
}
#[cfg(feature = "proc-macro2")]
fn make_literal2(self, literal: proc_macro2::Literal) -> proc_macro2::Literal {
literal
}
type Span = crate::Never;
fn try_into_span(self) -> Option<Self::Span> {
None
}
type WithDefaultSpan<S: crate::Span> = S;
fn with_default_span<S: crate::Span>(self, span: S) -> Self::WithDefaultSpan<S> {
span
}
type WithReplacedSpan<S: crate::Span> = S;
fn with_replaced_span<S: crate::Span>(self, span: S) -> Self::WithReplacedSpan<S> {
span
}
}