| // SPDX-License-Identifier: Apache-2.0 OR MIT |
| |
| /*! |
| <!-- tidy:crate-doc:start --> |
| 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. |
| |
| ## Usage |
| |
| Add this to your `Cargo.toml`: |
| |
| ```toml |
| [dependencies] |
| syn-mid = "0.5" |
| ``` |
| |
| *Compiler support: requires rustc 1.56+* |
| |
| [**Examples**](https://github.com/taiki-e/syn-mid/tree/HEAD/examples) |
| |
| ## Optional features |
| |
| - **`clone-impls`** — Clone impls for all syntax tree types. |
| |
| [syn]: https://github.com/dtolnay/syn |
| |
| <!-- tidy:crate-doc:end --> |
| */ |
| |
| #![doc(test( |
| no_crate_inject, |
| attr( |
| deny(warnings, rust_2018_idioms, single_use_lifetimes), |
| allow(dead_code, unused_variables) |
| ) |
| ))] |
| #![forbid(unsafe_code)] |
| #![warn( |
| rust_2018_idioms, |
| single_use_lifetimes, |
| unreachable_pub, |
| clippy::pedantic, |
| // Lints that may help when writing public library. |
| // missing_debug_implementations, |
| // missing_docs, |
| clippy::alloc_instead_of_core, |
| // clippy::exhaustive_enums, // TODO |
| // clippy::exhaustive_structs, // TODO |
| clippy::impl_trait_in_params, |
| // clippy::missing_inline_in_public_items, |
| // clippy::std_instead_of_alloc, |
| clippy::std_instead_of_core, |
| )] |
| #![allow(clippy::missing_errors_doc, clippy::module_name_repetitions)] |
| |
| // Many of the code contained in this crate are copies from https://github.com/dtolnay/syn. |
| |
| #[cfg(doc)] |
| extern crate self as syn_mid; |
| |
| #[macro_use] |
| mod macros; |
| |
| mod func; |
| mod pat; |
| mod path; |
| |
| #[doc(no_inline)] |
| pub use syn::ExprPath as PatPath; |
| |
| pub use crate::{ |
| func::{Block, FnArg, ItemFn, Receiver, Signature, Variadic}, |
| pat::{ |
| FieldPat, Pat, PatIdent, PatReference, PatRest, PatStruct, PatTuple, PatTupleStruct, |
| PatType, PatWild, |
| }, |
| }; |