65 lines · 1.2 KB · Rust
RawDownload
// SPDX-License-Identifier: Apache-2.0 OR MIT use proc_macro2::extra::DelimSpan;use proc_macro2::{Delimiter, Group, Span, TokenStream}; #[doc(hidden)]pub trait IntoSpans<S> {    fn into_spans(self) -> S;} impl IntoSpans<Span> for Span {    fn into_spans(self) -> Span {        self    }} impl IntoSpans<[Span; 1]> for Span {    fn into_spans(self) -> [Span; 1] {        [self]    }} impl IntoSpans<[Span; 2]> for Span {    fn into_spans(self) -> [Span; 2] {        [self, self]    }} impl IntoSpans<[Span; 3]> for Span {    fn into_spans(self) -> [Span; 3] {        [self, self, self]    }} impl IntoSpans<[Span; 1]> for [Span; 1] {    fn into_spans(self) -> [Span; 1] {        self    }} impl IntoSpans<[Span; 2]> for [Span; 2] {    fn into_spans(self) -> [Span; 2] {        self    }} impl IntoSpans<[Span; 3]> for [Span; 3] {    fn into_spans(self) -> [Span; 3] {        self    }} impl IntoSpans<DelimSpan> for Span {    fn into_spans(self) -> DelimSpan {        let mut group = Group::new(Delimiter::None, TokenStream::new());        group.set_span(self);        group.delim_span()    }} impl IntoSpans<DelimSpan> for DelimSpan {    fn into_spans(self) -> DelimSpan {        self    }}