Introduce and document AttributeArgs
diff --git a/src/attr.rs b/src/attr.rs
index 4ab2f0f..bfc41d9 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -473,6 +473,48 @@
     }
 }
 
+/// Conventional argument type associated with an invocation of an attribute
+/// macro.
+///
+/// For example if we are developing an attribute macro that is intended to be
+/// invoked on function items as follows:
+///
+/// ```rust
+/// # const IGNORE: &str = stringify! {
+/// #[my_attribute(path = "/v1/refresh")]
+/// # };
+/// pub fn refresh() {
+///     /* ... */
+/// }
+/// ```
+///
+/// The implementation of this macro would want to parse its attribute arguments
+/// as type `AttributeArgs`.
+///
+/// ```rust
+/// #[macro_use]
+/// extern crate syn;
+///
+/// extern crate proc_macro;
+///
+/// use proc_macro::TokenStream;
+/// use syn::{AttributeArgs, ItemFn};
+///
+/// # const IGNORE: &str = stringify! {
+/// #[proc_macro_attribute]
+/// # };
+/// pub fn my_attribute(args: TokenStream, input: TokenStream) -> TokenStream {
+///     let args = parse_macro_input!(args as AttributeArgs);
+///     let input = parse_macro_input!(input as ItemFn);
+///
+///     /* ... */
+/// #   "".parse().unwrap()
+/// }
+/// #
+/// # fn main() {}
+/// ```
+pub type AttributeArgs = Vec<NestedMeta>;
+
 pub trait FilterAttrs<'a> {
     type Ret: Iterator<Item = &'a Attribute>;
 
diff --git a/src/lib.rs b/src/lib.rs
index 00d5e1d..726569f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -325,7 +325,7 @@
 #[cfg(any(feature = "full", feature = "derive"))]
 mod attr;
 #[cfg(any(feature = "full", feature = "derive"))]
-pub use attr::{AttrStyle, Attribute, Meta, MetaList, MetaNameValue, NestedMeta};
+pub use attr::{AttrStyle, Attribute, AttributeArgs, Meta, MetaList, MetaNameValue, NestedMeta};
 
 #[cfg(any(feature = "full", feature = "derive"))]
 mod data;
diff --git a/src/parse_macro_input.rs b/src/parse_macro_input.rs
index e66d1d4..3c26787 100644
--- a/src/parse_macro_input.rs
+++ b/src/parse_macro_input.rs
@@ -79,9 +79,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Any other types that we want `parse_macro_input!` to be able to parse.
 
-use NestedMeta;
+use AttributeArgs;
 
-impl ParseMacroInput for Vec<NestedMeta> {
+impl ParseMacroInput for AttributeArgs {
     fn parse(input: ParseStream) -> Result<Self> {
         let mut metas = Vec::new();