Skip to main content

synthez/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![cfg_attr(any(doc, test), doc = include_str!("../README.md"))]
3#![cfg_attr(not(any(doc, test)), doc = env!("CARGO_PKG_NAME"))]
4#![deny(nonstandard_style, rustdoc::all, trivial_casts, trivial_numeric_casts)]
5#![forbid(non_ascii_idents, unsafe_code)]
6#![warn(
7    clippy::absolute_paths,
8    clippy::allow_attributes,
9    clippy::allow_attributes_without_reason,
10    clippy::as_conversions,
11    clippy::as_pointer_underscore,
12    clippy::as_ptr_cast_mut,
13    clippy::assertions_on_result_states,
14    clippy::branches_sharing_code,
15    clippy::cfg_not_test,
16    clippy::clear_with_drain,
17    clippy::clone_on_ref_ptr,
18    clippy::coerce_container_to_any,
19    clippy::collection_is_never_read,
20    clippy::create_dir,
21    clippy::dbg_macro,
22    clippy::debug_assert_with_mut_call,
23    clippy::decimal_literal_representation,
24    clippy::default_union_representation,
25    clippy::derive_partial_eq_without_eq,
26    clippy::doc_include_without_cfg,
27    clippy::doc_paragraphs_missing_punctuation,
28    clippy::empty_drop,
29    clippy::empty_structs_with_brackets,
30    clippy::equatable_if_let,
31    clippy::empty_enum_variants_with_brackets,
32    clippy::exit,
33    clippy::expect_used,
34    clippy::fallible_impl_from,
35    clippy::filetype_is_file,
36    clippy::float_cmp_const,
37    clippy::fn_to_numeric_cast_any,
38    clippy::get_unwrap,
39    clippy::if_then_some_else_none,
40    clippy::imprecise_flops,
41    clippy::infinite_loop,
42    clippy::iter_on_empty_collections,
43    clippy::iter_on_single_items,
44    clippy::iter_over_hash_type,
45    clippy::iter_with_drain,
46    clippy::large_include_file,
47    clippy::large_stack_frames,
48    clippy::let_underscore_untyped,
49    clippy::literal_string_with_formatting_args,
50    clippy::lossy_float_literal,
51    clippy::map_err_ignore,
52    clippy::map_with_unused_argument_over_ranges,
53    clippy::mem_forget,
54    clippy::missing_assert_message,
55    clippy::missing_asserts_for_indexing,
56    clippy::missing_const_for_fn,
57    clippy::missing_docs_in_private_items,
58    clippy::module_name_repetitions,
59    clippy::multiple_inherent_impl,
60    clippy::multiple_unsafe_ops_per_block,
61    clippy::mutex_atomic,
62    clippy::mutex_integer,
63    clippy::needless_collect,
64    clippy::needless_pass_by_ref_mut,
65    clippy::needless_raw_strings,
66    clippy::needless_type_cast,
67    clippy::non_zero_suggestions,
68    clippy::nonstandard_macro_braces,
69    clippy::option_if_let_else,
70    clippy::or_fun_call,
71    clippy::panic_in_result_fn,
72    clippy::partial_pub_fields,
73    clippy::pathbuf_init_then_push,
74    clippy::pedantic,
75    clippy::precedence_bits,
76    clippy::print_stderr,
77    clippy::print_stdout,
78    clippy::pub_without_shorthand,
79    clippy::rc_buffer,
80    clippy::rc_mutex,
81    clippy::read_zero_byte_vec,
82    clippy::redundant_clone,
83    clippy::redundant_test_prefix,
84    clippy::redundant_type_annotations,
85    clippy::renamed_function_params,
86    clippy::ref_patterns,
87    clippy::rest_pat_in_fully_bound_structs,
88    clippy::return_and_then,
89    clippy::same_name_method,
90    clippy::semicolon_inside_block,
91    clippy::set_contains_or_insert,
92    clippy::shadow_unrelated,
93    clippy::significant_drop_in_scrutinee,
94    clippy::significant_drop_tightening,
95    clippy::single_option_map,
96    clippy::str_to_string,
97    clippy::string_add,
98    clippy::string_lit_as_bytes,
99    clippy::string_lit_chars_any,
100    clippy::string_slice,
101    clippy::suboptimal_flops,
102    clippy::suspicious_operation_groupings,
103    clippy::suspicious_xor_used_as_pow,
104    clippy::tests_outside_test_module,
105    clippy::todo,
106    clippy::too_long_first_doc_paragraph,
107    clippy::trailing_empty_array,
108    clippy::transmute_undefined_repr,
109    clippy::trivial_regex,
110    clippy::try_err,
111    clippy::undocumented_unsafe_blocks,
112    clippy::unimplemented,
113    clippy::uninhabited_references,
114    clippy::unnecessary_safety_comment,
115    clippy::unnecessary_safety_doc,
116    clippy::unnecessary_self_imports,
117    clippy::unnecessary_struct_initialization,
118    clippy::unused_peekable,
119    clippy::unused_result_ok,
120    clippy::unused_trait_names,
121    clippy::unwrap_in_result,
122    clippy::unwrap_used,
123    clippy::use_debug,
124    clippy::use_self,
125    clippy::useless_let_if_seq,
126    clippy::verbose_file_reads,
127    clippy::volatile_composites,
128    clippy::while_float,
129    clippy::wildcard_enum_match_arm,
130    ambiguous_negative_literals,
131    closure_returning_async_block,
132    future_incompatible,
133    impl_trait_redundant_captures,
134    let_underscore_drop,
135    macro_use_extern_crate,
136    meta_variable_misuse,
137    missing_copy_implementations,
138    missing_debug_implementations,
139    missing_docs,
140    redundant_lifetimes,
141    rust_2018_idioms,
142    single_use_lifetimes,
143    unit_bindings,
144    unnameable_types,
145    unreachable_pub,
146    unstable_features,
147    unused,
148    variant_size_differences
149)]
150
151// TODO: Remove once tests run without complains about it.
152#[cfg(test)]
153mod for_docs_only {
154    use syn as _;
155}
156
157#[doc(inline)]
158pub use synthez_codegen::ToTokens;
159#[doc(inline)]
160pub use synthez_core::{ext, field, has, spanned};
161pub use synthez_core::{
162    proc_macro2,
163    quote::{self, ToTokens},
164    syn,
165};
166
167#[doc(inline)]
168pub use self::{
169    ext::{Data as DataExt, Ident as IdentExt},
170    field::Required,
171    parse::{Attrs as ParseAttrs, BufferExt as ParseBufferExt},
172    spanned::Spanning,
173};
174
175pub mod parse {
176    //! Batteries for [`syn::parse`](mod@crate::syn::parse).
177
178    #[doc(inline)]
179    pub use synthez_core::parse::{attr, err, ext};
180
181    #[doc(inline)]
182    pub use self::{attrs::Attrs, ext::ParseBuffer as BufferExt};
183
184    pub mod attrs {
185        //! Machinery for parsing [`syn::Attribute`]s into a custom defined
186        //! struct.
187        //!
188        //! [`syn::Attribute`]: crate::syn::Attribute
189
190        #[doc(inline)]
191        pub use synthez_codegen::ParseAttrs as Attrs;
192        #[doc(inline)]
193        pub use synthez_core::parse::attrs::*;
194    }
195}