use proc_macro2::TokenStream; use quote::TokenStreamExt; use std::fmt::{self, Display}; use syn::Error; use crate::compare::Path; impl Display for Path { fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { for (i, segment) in self.segments.iter().enumerate() { if i > 0 { formatter.write_str("::")?; } segment.fmt(formatter)?; } Ok(()) } } pub fn error(lesser: &Path, greater: &Path) -> Error { let mut spans = TokenStream::new(); spans.append_all(&lesser.segments); let msg = format!("{} should sort before {}", lesser, greater); Error::new_spanned(spans, msg) }