diff options
Diffstat (limited to 'macros/src/util')
| -rw-r--r-- | macros/src/util/syn_path.rs | 39 | 
1 files changed, 24 insertions, 15 deletions
diff --git a/macros/src/util/syn_path.rs b/macros/src/util/syn_path.rs index 0e1b8f4..fc301ab 100644 --- a/macros/src/util/syn_path.rs +++ b/macros/src/util/syn_path.rs @@ -1,21 +1,30 @@  use quote::ToTokens;  use syn::punctuated::Pair; -pub fn syn_path_to_string(path: &syn::Path) -> String +pub trait SynPathExt  { -    path.segments -        .pairs() -        .map(Pair::into_tuple) -        .map(|(segment, opt_punct)| { -            let segment_ident = &segment.ident; +    /// Converts the [`syn::Path`] to a [`String`]. +    fn to_string(&self) -> String; +} + +impl SynPathExt for syn::Path +{ +    fn to_string(&self) -> String +    { +        self.segments +            .pairs() +            .map(Pair::into_tuple) +            .map(|(segment, opt_punct)| { +                let segment_ident = &segment.ident; -            format!( -                "{}{}", -                segment_ident, -                opt_punct.map_or_else(String::new, |punct| punct -                    .to_token_stream() -                    .to_string()) -            ) -        }) -        .collect() +                format!( +                    "{}{}", +                    segment_ident, +                    opt_punct.map_or_else(String::new, |punct| punct +                        .to_token_stream() +                        .to_string()) +                ) +            }) +            .collect() +    }  }  | 
