blob: 4c271eaad855fe28cd074abf54bac5333ec26f1b [file] [log] [blame]
//! Providing the features between "full" and "derive" of syn.
//!
//! This crate provides the following two unique data structures.
//!
//! * [`syn_mid::ItemFn`] -- A function whose body is not parsed.
//!
//! ```text
//! fn process(n: usize) -> Result<()> { ... }
//! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ^
//! ```
//!
//! * [`syn_mid::Block`] -- A block whose body is not parsed.
//!
//! ```text
//! { ... }
//! ^ ^
//! ```
//!
//! Other data structures are the same as data structures of [syn]. These are defined in this crate
//! because they cannot be used in [syn] without "full" feature.
//!
//! # Optional features
//!
//! syn-mid in the default features aims to provide the features between "full"
//! and "derive" of [syn].
//!
//! * **`clone-impls`** — Clone impls for all syntax tree types.
//!
//! [`syn_mid::ItemFn`]: ItemFn
//! [`syn_mid::Block`]: Block
//! [syn]: https://github.com/dtolnay/syn
#![doc(html_root_url = "https://docs.rs/syn-mid/0.5.1")]
#![doc(test(
no_crate_inject,
attr(deny(warnings, rust_2018_idioms, single_use_lifetimes), allow(dead_code))
))]
#![forbid(unsafe_code)]
#![warn(future_incompatible, rust_2018_idioms, single_use_lifetimes, unreachable_pub)]
#![warn(clippy::all, clippy::default_trait_access)]
// mem::take and #[non_exhaustive] requires Rust 1.40, matches! requires Rust 1.42
#![allow(
clippy::mem_replace_with_default,
clippy::manual_non_exhaustive,
clippy::match_like_matches_macro
)]
#![allow(clippy::eval_order_dependence, clippy::large_enum_variant)]
// Many of the code contained in this crate are copies from https://github.com/dtolnay/syn.
#[macro_use]
mod macros;
mod func;
mod pat;
mod path;
pub use crate::{
func::{Block, FnArg, ItemFn, Receiver, Signature},
pat::{
FieldPat, Pat, PatIdent, PatPath, PatReference, PatStruct, PatTuple, PatTupleStruct,
PatType, PatWild,
},
};