syn_prelude/
amend_syn_error.rs

1pub trait AmmendSynError {
2    fn ammend_error(self, ammend: impl Fn(syn::Error) -> syn::Error) -> Self;
3    fn add_error_prefix(self, prefix: impl AsRef<str>) -> Self
4    where
5        Self: Sized,
6    {
7        self.ammend_error(|err| {
8            syn::Error::new(
9                err.span(),
10                format!("{} {}", prefix.as_ref(), err.to_string()),
11            )
12        })
13    }
14    fn add_error_suffix(self, suffix: impl AsRef<str>) -> Self
15    where
16        Self: Sized,
17    {
18        self.ammend_error(|err| {
19            syn::Error::new(
20                err.span(),
21                format!("{} {}", err.to_string(), suffix.as_ref()),
22            )
23        })
24    }
25}
26
27impl<T> AmmendSynError for syn::Result<T> {
28    fn ammend_error(self, ammend: impl Fn(syn::Error) -> syn::Error) -> Self {
29        self.map_err(|err| ammend(err))
30    }
31}