#![doc = include_str!("_docs/readme.md")]
#![cfg_attr(not(any(test, doc, feature = "std")), no_std)]
#![cfg_attr(feature = "unstable", allow(internal_features))]
#![cfg_attr(feature = "unstable", feature(doc_cfg))]
#![cfg_attr(feature = "unstable", feature(doc_auto_cfg))]
#![cfg_attr(feature = "unstable", feature(core_intrinsics))]
#![cfg_attr(feature = "unstable", feature(coverage_attribute))]
#![cfg_attr(feature = "unstable", feature(error_in_core))]
#![cfg_attr(feature = "unstable", feature(portable_simd))]
#![cfg_attr(
all(feature = "unstable", target_arch = "arm"),
feature(arm_target_feature)
)]
#![cfg_attr(
all(feature = "unstable", target_arch = "arm"),
feature(stdarch_arm_feature_detection)
)]
#![cfg_attr(
all(feature = "unstable", target_arch = "arm"),
feature(stdarch_arm_neon_intrinsics)
)]
#![cfg_attr(feature = "maint-code", deny(warnings))]
#![cfg_attr(
not(any(feature = "simd-per-arch", feature = "unsafe")),
forbid(unsafe_code)
)]
#![cfg_attr(
all(feature = "simd-per-arch", not(feature = "unsafe")),
deny(unsafe_code)
)]
#![cfg_attr(not(test), warn(missing_docs))]
#![cfg_attr(not(test), warn(clippy::missing_docs_in_private_items))]
#![cfg_attr(not(feature = "maint-lints"), allow(unknown_lints))]
#![cfg_attr(not(feature = "maint-lints"), allow(renamed_and_removed_lints))]
#![cfg_attr(test, allow(unused_unsafe))]
#![cfg_attr(test, allow(clippy::nonminimal_bool))]
#![cfg_attr(test, allow(clippy::assertions_on_constants))]
#[cfg(any(feature = "alloc", test, doc))]
extern crate alloc;
pub mod _docs;
pub mod buckets;
pub mod compare;
mod compare_easy;
pub mod errors;
pub mod generate;
mod generate_easy;
mod generate_easy_std;
pub mod hash;
pub mod hashes;
mod intrinsics;
pub mod length;
mod macros;
mod params;
mod parse;
#[cfg(not(any(doc, feature = "experiment-pearson")))]
mod pearson;
#[cfg(any(doc, feature = "experiment-pearson"))]
#[cfg_attr(feature = "unstable", doc(cfg(feature = "experiment-pearson")))]
pub mod pearson;
#[cfg(feature = "easy-functions")]
pub use compare_easy::{compare, compare_with};
#[cfg(feature = "easy-functions")]
pub use generate_easy::{hash_buf, hash_buf_for};
#[cfg(all(feature = "easy-functions", feature = "std"))]
pub use generate_easy_std::{hash_file, hash_file_for, hash_stream, hash_stream_for};
pub use generate::public::GeneratorType;
pub use hash::public::FuzzyHashType;
pub type Tlsh = hashes::Normal;
pub type TlshGenerator = generate::Generator<Tlsh>;
pub type TlshGeneratorFor<T> = generate::Generator<T>;
pub mod prelude {
pub use super::FuzzyHashType as _;
pub use super::GeneratorType as _;
pub use super::Tlsh;
pub use super::{TlshGenerator, TlshGeneratorFor};
}
mod tests;