#![doc = include_str!("_docs/readme.md")]
#![no_std]
#![cfg_attr(feature = "unstable", allow(internal_features))]
#![cfg_attr(
feature = "unstable",
feature(
core_intrinsics,
coverage_attribute,
doc_cfg,
doc_auto_cfg,
trusted_len
)
)]
#![cfg_attr(feature = "maint-code", deny(warnings))]
#![cfg_attr(
not(any(
feature = "unsafe",
feature = "unsafe-guarantee",
feature = "unchecked",
test
)),
forbid(unsafe_code)
)]
#![cfg_attr(
all(
not(any(feature = "unsafe", test)),
any(feature = "unchecked", feature = "unsafe-guarantee")
),
deny(unsafe_code)
)]
#![cfg_attr(not(test), warn(missing_docs, clippy::missing_docs_in_private_items))]
#![cfg_attr(
not(feature = "maint-lints"),
allow(unknown_lints, renamed_and_removed_lints)
)]
#![cfg_attr(
test,
allow(
unused_unsafe,
clippy::assertions_on_constants,
clippy::int_plus_one,
clippy::identity_op,
clippy::erasing_op,
clippy::overly_complex_bool_expr,
clippy::logic_bug, // renamed to clippy::overly_complex_bool_expr
clippy::nonminimal_bool
)
)]
#[cfg(any(feature = "alloc", test, doc))]
extern crate alloc;
#[cfg(any(feature = "std", test, doc))]
extern crate std;
mod base64;
mod compare;
mod compare_easy;
mod generate;
mod generate_easy;
mod generate_easy_std;
mod hash;
mod hash_dual;
mod intrinsics;
mod macros;
mod test_utils;
mod utils;
#[cfg(doc)]
#[allow(missing_docs)]
pub mod _docs;
pub use compare::FuzzyHashCompareTarget;
#[cfg(feature = "easy-functions")]
pub use compare_easy::{compare, ParseErrorEither, ParseErrorSide};
pub use generate::{Generator, GeneratorError};
#[cfg(feature = "easy-functions")]
pub use generate_easy::hash_buf;
#[cfg(all(feature = "easy-functions", feature = "std"))]
pub use generate_easy_std::{hash_file, hash_stream, GeneratorOrIOError};
pub use hash::block::{block_hash, block_size, BlockSizeRelation};
pub use hash::parser_state::{ParseError, ParseErrorInfo, ParseErrorKind, ParseErrorOrigin};
pub use hash::{
FuzzyHash, FuzzyHashData, FuzzyHashOperationError, LongFuzzyHash, LongRawFuzzyHash,
RawFuzzyHash,
};
pub use hash_dual::{DualFuzzyHash, FuzzyHashDualData, LongDualFuzzyHash};
#[deprecated]
pub mod internal_hashes {
pub use super::generate::{PartialFNVHash, RollingHash};
}
#[deprecated]
pub mod internal_comparison {
pub use super::compare::position_array::{
block_hash_position_array_element, BlockHashPositionArray, BlockHashPositionArrayData,
BlockHashPositionArrayImpl,
};
#[cfg(feature = "unchecked")]
pub use super::compare::position_array::BlockHashPositionArrayImplUnchecked;
}
pub mod constraints {
pub use super::hash::block::{
BlockHashSize, BlockHashSizes, ConstrainedBlockHashSize, ConstrainedBlockHashSizes,
};
}
pub mod prelude {}
pub const MAX_LEN_IN_STR: usize = LongRawFuzzyHash::MAX_LEN_IN_STR;
#[doc(hidden)]
mod const_asserts {
use super::*;
use static_assertions::const_assert;
const_assert!(usize::BITS >= 16);
const_assert!(MAX_LEN_IN_STR >= FuzzyHash::MAX_LEN_IN_STR);
const_assert!(MAX_LEN_IN_STR >= RawFuzzyHash::MAX_LEN_IN_STR);
const_assert!(MAX_LEN_IN_STR >= LongFuzzyHash::MAX_LEN_IN_STR);
const_assert!(MAX_LEN_IN_STR >= LongRawFuzzyHash::MAX_LEN_IN_STR);
}
mod tests;