ssdeep/internals/
generate_easy.rs

1// SPDX-License-Identifier: MIT
2// SPDX-FileCopyrightText: Copyright (C) 2023–2025 Tsukasa OI <floss_ssdeep@irq.a4lg.com>.
3
4//! Easy generator functions.
5
6#![cfg(feature = "easy-functions")]
7
8use crate::internals::generate::{Generator, GeneratorError};
9use crate::internals::hash::RawFuzzyHash;
10
11/// Generates a fuzzy hash from a given buffer.
12///
13/// # Example
14///
15/// ```
16/// // Requires either the "alloc" feature or std environment
17/// // on your crate to use `to_string()` method (default enabled).
18/// assert_eq!(
19///     ssdeep::hash_buf(b"Hello, World!\n").unwrap().to_string(),
20///     "3:aaX8v:aV"
21/// );
22/// ```
23pub fn hash_buf(buffer: &[u8]) -> Result<RawFuzzyHash, GeneratorError> {
24    let mut generator = Generator::new();
25    generator.set_fixed_input_size_in_usize(buffer.len())?;
26    generator.update(buffer);
27    Ok(generator.finalize().unwrap()) // grcov-excl-br-line:UNREACHABLE ERROR
28}
29
30mod tests;