#![cfg_attr(feature = "better-docs", feature(doc_cfg, decl_macro, rustc_attrs))]

//! Ilyvion's hodgepodge collection of useful utility types and functions.

// <editor-fold desc="Coding conventions" defaultstate="collapsed">
// Coding conventions
//
// Deny (don't do this)
#![deny(anonymous_parameters)]
#![deny(elided_lifetimes_in_paths)]
#![deny(ellipsis_inclusive_range_patterns)]
#![deny(nonstandard_style)]
#![deny(rust_2018_idioms)]
#![deny(trivial_numeric_casts)]
#![deny(unsafe_code)]
#![deny(rustdoc::broken_intra_doc_links)]
//#![deny(unused)]
//
// Warn (try not to do this)
#![warn(missing_copy_implementations)]
#![warn(missing_debug_implementations)]
#![warn(missing_docs)]
#![warn(variant_size_differences)]
//
// Clippy conventions
//
// Deny (don't do this)
#![deny(clippy::cast_lossless)]
#![deny(clippy::default_trait_access)]
#![deny(clippy::empty_enum)]
#![deny(clippy::enum_glob_use)]
#![deny(clippy::expl_impl_clone_on_copy)]
#![deny(clippy::explicit_into_iter_loop)]
#![deny(clippy::explicit_iter_loop)]
#![deny(clippy::manual_filter_map)]
#![deny(clippy::filter_map_next)]
#![deny(clippy::if_not_else)]
#![deny(clippy::invalid_upcast_comparisons)]
#![deny(clippy::items_after_statements)]
#![deny(clippy::large_digit_groups)]
#![deny(clippy::map_flatten)]
#![deny(clippy::match_same_arms)]
#![deny(clippy::mut_mut)]
#![deny(clippy::needless_continue)]
#![deny(clippy::needless_pass_by_value)]
#![deny(clippy::map_unwrap_or)]
#![deny(clippy::redundant_closure_for_method_calls)]
#![deny(clippy::single_match_else)]
#![deny(clippy::string_add_assign)]
#![deny(clippy::type_repetition_in_bounds)]
#![deny(clippy::unseparated_literal_suffix)]
#![deny(clippy::unused_self)]
#![deny(clippy::use_self)] // Sometimes gives false positives; feel free to disable.
#![deny(clippy::used_underscore_binding)]
#![deny(clippy::semicolon_if_nothing_returned)]
//
// Warn (try not to do this)
#![warn(clippy::must_use_candidate)]
#![warn(clippy::enum_variant_names)]
#![warn(clippy::shadow_unrelated)]
#![warn(clippy::similar_names)]
#![warn(clippy::too_many_lines)]
#![warn(clippy::unused_async)]
#![warn(clippy::inconsistent_struct_constructor)]
// </editor-fold>

pub mod cache;
pub mod color;
pub mod file;
pub mod float_extensions;
pub mod iterator_extensions;
pub mod map_any;
pub mod map_extensions;
pub mod multi_dimensional;
pub mod non_nan;
pub mod string_extensions;

#[cfg(feature = "borrowned")]
#[cfg_attr(feature = "better-docs", doc(cfg(feature = "borrowned")))]
pub mod ownership;

#[cfg(feature = "permutation")]
#[cfg_attr(feature = "better-docs", doc(cfg(feature = "permutation")))]
pub mod permutation;

#[cfg(feature = "chrono")]
#[cfg_attr(feature = "better-docs", doc(cfg(feature = "chrono")))]
pub mod chrono;

#[cfg(feature = "environment")]
#[cfg_attr(feature = "better-docs", doc(cfg(feature = "environment")))]
pub mod environment;
