syn-mid 0.6.1

Providing the features between "full" and "derive" of syn.
Documentation
// SPDX-License-Identifier: Apache-2.0 OR MIT

/*!
<!-- Note: Document from sync-markdown-to-rustdoc:start through sync-markdown-to-rustdoc:end
     is synchronized from README.md. Any changes to that range are not preserved. -->
<!-- tidy:sync-markdown-to-rustdoc: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.6"
```

[**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:sync-markdown-to-rustdoc:end -->
*/

#![no_std]
#![doc(test(
    no_crate_inject,
    attr(allow(
        dead_code,
        unused_variables,
        clippy::undocumented_unsafe_blocks,
        clippy::unused_trait_names,
    ))
))]
#![forbid(unsafe_code)]
#![warn(
    // 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::std_instead_of_alloc,
    clippy::std_instead_of_core,
    // clippy::missing_inline_in_public_items,
)]

// Many of the code contained in this crate are copies from https://github.com/dtolnay/syn.

extern crate alloc;
#[cfg(doc)]
extern crate self as syn_mid;
extern crate std;

#[macro_use]
mod macros;

mod func;
mod pat;
mod path;

#[doc(no_inline)]
pub use syn::ExprPath as PatPath;

pub use self::{
    func::{Block, FnArg, ItemFn, Receiver, Signature, Variadic},
    pat::{
        FieldPat, Pat, PatIdent, PatReference, PatRest, PatStruct, PatTuple, PatTupleStruct,
        PatType, PatWild,
    },
};