Skip to main content

funcmap_derive/
lib.rs

1//! Derive macros for the `funcmap` crate
2//!
3//! This crate should not be depended on directly. See the documentation of
4//! [funcmap](/funcmap) instead.
5
6#![deny(missing_copy_implementations)]
7#![deny(missing_debug_implementations)]
8#![deny(missing_docs)]
9#![deny(unreachable_pub)]
10#![deny(unused_crate_dependencies)]
11#![deny(unused_extern_crates)]
12#![deny(unused_lifetimes)]
13#![deny(unused_qualifications)]
14#![deny(clippy::all)]
15#![deny(clippy::pedantic)]
16#![deny(clippy::cargo_common_metadata)]
17#![deny(clippy::multiple_crate_versions)]
18#![deny(clippy::rest_pat_in_fully_bound_structs)]
19#![deny(clippy::use_debug)]
20#![allow(clippy::module_name_repetitions)]
21#![allow(clippy::too_many_lines)]
22#![deny(rustdoc::broken_intra_doc_links)]
23#![deny(rustdoc::private_intra_doc_links)]
24#![deny(rustdoc::invalid_codeblock_attributes)]
25#![deny(rustdoc::invalid_rust_codeblocks)]
26#![deny(rustdoc::bare_urls)]
27
28use derivable::Derivable;
29
30use proc_macro::TokenStream;
31
32mod derivable;
33mod derive;
34mod ident;
35mod ident_collector;
36mod input;
37mod map;
38mod opts;
39mod predicates;
40mod result;
41mod syn_ext;
42
43/// Derive macro generating implementations of the `FuncMap` trait
44#[proc_macro_derive(FuncMap, attributes(funcmap))]
45pub fn derive_func_map(item: TokenStream) -> TokenStream {
46    derive::derive(item.into(), Derivable::Standard).into()
47}
48
49/// Derive macro generating implementations of the `TryFuncMap` trait
50#[proc_macro_derive(TryFuncMap, attributes(funcmap))]
51pub fn derive_try_func_map(item: TokenStream) -> TokenStream {
52    derive::derive(item.into(), Derivable::Fallible).into()
53}