Skip to main content

zyn_core/mark/
span.rs

1//! Span utilities for diagnostics.
2
3use proc_macro2::Span;
4
5/// A type that can be converted into a list of [`Span`]s.
6///
7/// Implemented for `Span`, `Vec<Span>`, and `&[Span]`.
8pub trait MultiSpan {
9    fn into_spans(self) -> Vec<Span>;
10}
11
12impl MultiSpan for Span {
13    fn into_spans(self) -> Vec<Span> {
14        vec![self]
15    }
16}
17
18impl MultiSpan for Vec<Span> {
19    fn into_spans(self) -> Vec<Span> {
20        self
21    }
22}
23
24impl MultiSpan for &[Span] {
25    fn into_spans(self) -> Vec<Span> {
26        self.to_vec()
27    }
28}