#[macro_export]
macro_rules! uses_type_params {
($impl_type:ty, $accessor:ident) => {
impl $crate::usage::UsesTypeParams for $impl_type {
fn uses_type_params<'gen>(
&self,
options: &$crate::usage::Options,
type_set: &'gen $crate::usage::IdentSet
) -> $crate::usage::IdentRefSet<'gen> {
self.$accessor.uses_type_params(options, type_set)
}
}
};
($impl_type:ty, $first:ident, $($field:ident),+) => {
impl $crate::usage::UsesTypeParams for $impl_type {
fn uses_type_params<'gen>(
&self,
options: &$crate::usage::Options,
type_set: &'gen $crate::usage::IdentSet
) -> $crate::usage::IdentRefSet<'gen> {
let mut hits = self.$first.uses_type_params(options, type_set);
$(
hits.extend(self.$field.uses_type_params(options, type_set));
)*
hits
}
}
};
}
#[macro_export]
macro_rules! uses_lifetimes {
($impl_type:ty, $accessor:ident) => {
impl $crate::usage::UsesLifetimes for $impl_type {
fn uses_lifetimes<'gen>(
&self,
options: &$crate::usage::Options,
type_set: &'gen $crate::usage::LifetimeSet
) -> $crate::usage::LifetimeRefSet<'gen> {
self.$accessor.uses_lifetimes(options, type_set)
}
}
};
($impl_type:ty, $first:ident, $($field:ident),+) => {
impl $crate::usage::UsesLifetimes for $impl_type {
fn uses_lifetimes<'gen>(
&self,
options: &$crate::usage::Options,
type_set: &'gen $crate::usage::LifetimeSet
) -> $crate::usage::LifetimeRefSet<'gen> {
let mut hits = self.$first.uses_lifetimes(options, type_set);
$(
hits.extend(self.$field.uses_lifetimes(options, type_set));
)*
hits
}
}
};
}