    missing_docs, trivial_casts, unused_import_braces, variant_size_differences,
    unused_qualifications, unused_results
)]

#![warn(clippy, clippy_pedantic)]
#![allow(unknown_lints)]
// List of lints we allow in this code
#![allow(
    float_arithmetic, integer_arithmetic, indexing_slicing, needless_return,
    needless_range_loop, shadow_reuse, shadow_same, shadow_unrelated,
    cast_possible_truncation, cast_precision_loss, cast_sign_loss,
    cast_possible_wrap, float_cmp, or_fun_call, string_add, non_ascii_literal,
    doc_markdown, missing_docs_in_private_items, module_inception, stutter,
    unseparated_literal_suffix, zero_ptr
)]

#[macro_use]
extern crate log;
#[macro_use]
extern crate log_once;
#[macro_use]
extern crate bitflags;
#[macro_use]
extern crate lazy_static;

#[cfg(test)]
#[macro_use]
extern crate approx;

extern crate chemfiles;
extern crate ndarray;
extern crate num_traits as num;
extern crate rand;
extern crate special;

// Helper modules
#[macro_use]
mod utils;
#[macro_use]
mod logging;

pub mod units;
pub mod consts;

pub use logging::{Logger, LogLevel};

// Main modules
pub mod types;
pub mod energy;
pub mod sys;
pub mod sim;
pub mod out;
