#![warn(missing_docs)]
#![deny(
// Rust Compiler Errors
dead_code,
unreachable_code,
improper_ctypes_definitions,
future_incompatible,
nonstandard_style,
rust_2018_idioms,
clippy::perf,
clippy::correctness,
clippy::suspicious,
clippy::unwrap_used,
clippy::expect_used,
clippy::indexing_slicing,
clippy::arithmetic_side_effects,
clippy::missing_safety_doc,
clippy::same_item_push,
clippy::implicit_clone,
clippy::all,
clippy::pedantic,
warnings,
missing_docs,
clippy::nursery,
clippy::single_call_fn,
)]
#![warn(
unsafe_code,
clippy::dbg_macro,
clippy::todo,
clippy::unnecessary_safety_comment
)]
#![allow(
clippy::restriction,
clippy::inline_always,
unused_doc_comments,
clippy::empty_line_after_doc_comments
)]
mod error;
pub mod generate;
pub mod parse;
pub mod utils;
pub type Result<T = ()> = std::result::Result<T, Error>;
pub use self::error::Error;
pub mod prelude {
pub use crate::Error;
pub use crate::Result;
pub use crate::generate::FnSelfArg;
pub use crate::generate::Generator;
pub use crate::generate::StreamBuilder;
pub use crate::parse::AttributeAccess;
pub use crate::parse::Body;
pub use crate::parse::EnumVariant;
pub use crate::parse::Fields;
pub use crate::parse::FromAttribute;
pub use crate::parse::Parse;
pub use crate::parse::UnnamedField;
#[cfg(any(test, feature = "proc-macro2"))]
pub use proc_macro2::*;
#[cfg(not(any(test, feature = "proc-macro2")))]
extern crate proc_macro;
#[cfg(not(any(test, feature = "proc-macro2")))]
pub use proc_macro::*;
}
#[cfg(test)]
pub(crate) fn token_stream(
s: &str
) -> std::iter::Peekable<impl Iterator<Item = proc_macro2::TokenTree> + use<>> {
use std::str::FromStr;
let stream = proc_macro2::TokenStream::from_str(s)
.unwrap_or_else(|e| panic!("Could not parse code: {:?}\n{:?}", s, e));
stream.into_iter().peekable()
}