• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use crate::{
2     usage::{self, UsesLifetimes, UsesTypeParams},
3     FromDeriveInput, FromField, FromGenericParam, FromGenerics, FromMeta, FromTypeParam,
4     FromVariant, Result,
5 };
6 
7 /// An efficient way of discarding data from a syntax element.
8 ///
9 /// All syntax elements will be successfully read into
10 /// the `Ignored` struct, with all properties discarded.
11 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
12 pub struct Ignored;
13 
14 macro_rules! ignored {
15     ($trayt:ident, $method:ident, $syn:path) => {
16         impl $trayt for Ignored {
17             fn $method(_: &$syn) -> Result<Self> {
18                 Ok(Ignored)
19             }
20         }
21     };
22 }
23 
24 ignored!(FromGenericParam, from_generic_param, syn::GenericParam);
25 ignored!(FromGenerics, from_generics, syn::Generics);
26 ignored!(FromTypeParam, from_type_param, syn::TypeParam);
27 ignored!(FromMeta, from_meta, syn::Meta);
28 ignored!(FromDeriveInput, from_derive_input, syn::DeriveInput);
29 ignored!(FromField, from_field, syn::Field);
30 ignored!(FromVariant, from_variant, syn::Variant);
31 
32 impl UsesTypeParams for Ignored {
uses_type_params<'a>( &self, _opts: &usage::Options, _: &'a usage::IdentSet, ) -> usage::IdentRefSet<'a>33     fn uses_type_params<'a>(
34         &self,
35         _opts: &usage::Options,
36         _: &'a usage::IdentSet,
37     ) -> usage::IdentRefSet<'a> {
38         Default::default()
39     }
40 }
41 
42 impl UsesLifetimes for Ignored {
uses_lifetimes<'a>( &self, _opts: &usage::Options, _: &'a usage::LifetimeSet, ) -> usage::LifetimeRefSet<'a>43     fn uses_lifetimes<'a>(
44         &self,
45         _opts: &usage::Options,
46         _: &'a usage::LifetimeSet,
47     ) -> usage::LifetimeRefSet<'a> {
48         Default::default()
49     }
50 }
51