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}