diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 106 |
1 files changed, 72 insertions, 34 deletions
@@ -1,32 +1,50 @@ -//! 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 -//! -//! * **`clone-impls`** — Clone impls for all syntax tree types. -//! -//! [`syn_mid::ItemFn`]: ItemFn -//! [`syn_mid::Block`]: Block -//! [syn]: https://github.com/dtolnay/syn +// 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, @@ -36,12 +54,29 @@ ) ))] #![forbid(unsafe_code)] -#![warn(future_incompatible, rust_2018_idioms, single_use_lifetimes, unreachable_pub)] -#![warn(clippy::all, clippy::default_trait_access)] -#![allow(clippy::eval_order_dependence, clippy::large_enum_variant)] +#![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; @@ -49,10 +84,13 @@ mod func; mod pat; mod path; +#[doc(no_inline)] +pub use syn::ExprPath as PatPath; + pub use crate::{ - func::{Block, FnArg, ItemFn, Receiver, Signature}, + func::{Block, FnArg, ItemFn, Receiver, Signature, Variadic}, pat::{ - FieldPat, Pat, PatIdent, PatPath, PatReference, PatStruct, PatTuple, PatTupleStruct, + FieldPat, Pat, PatIdent, PatReference, PatRest, PatStruct, PatTuple, PatTupleStruct, PatType, PatWild, }, }; |