FuzzyHashLengthEncoding

Struct FuzzyHashLengthEncoding 

Source
pub struct FuzzyHashLengthEncoding { /* private fields */ }
Expand description

Approximated input data length encoded as 8-bits in a fuzzy hash.

On TLSH, it compresses a 32-bit input size to an approximated encoding of 8-bits. This enables to distinguish statistically similar files with large differences in the size.

This struct can have a:

  1. A valid encoding for a valid input size,
  2. A “valid” encoding for an invalid input size (only appears when the input is smaller than the TLSH’s lower limit), or
  3. An invalid encoding (does not correspond any of the 32-bit size).

This struct only handles the validness of its encoding. So, the case 2 above is considered “valid” in this type.

Implementations§

Source§

impl FuzzyHashLengthEncoding

Source

pub const MAX_DISTANCE: u32 = 1_536u32

The maximum distance between two length encodings.

Source

pub fn new(len: u32) -> Option<Self>

Encode the 32-bit data length as rough 8-bit representation.

Source

pub fn value(&self) -> u8

Returns the raw encoding.

Source

pub fn is_valid(&self) -> bool

Returns whether the encoding is valid.

Note that, if the encoding only appears when the input size is too small, it also returns true because the encoding itself is still valid. On the other hand, if the encoding exceeds the upper limit, it will return false because it will not correspond to any of 32-bit input size.

Source

pub fn compare(&self, other: &FuzzyHashLengthEncoding) -> u32

Compare against another length encoding and return the distance between them.

Source

pub fn range(&self) -> Option<RangeInclusive<u32>>

Decode the encoded 8-bit length approximation as an inclusive 32-bit input size range that will produce the given encoding.

It will return None if there’s no valid 32-bit size for given encoding.

Trait Implementations§

Source§

impl Clone for FuzzyHashLengthEncoding

Source§

fn clone(&self) -> FuzzyHashLengthEncoding

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FuzzyHashLengthEncoding

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for FuzzyHashLengthEncoding

Source§

fn eq(&self, other: &FuzzyHashLengthEncoding) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<u32> for FuzzyHashLengthEncoding

Source§

type Error = ParseError

The type returned in the event of a conversion error.
Source§

fn try_from(len: u32) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Copy for FuzzyHashLengthEncoding

Source§

impl Eq for FuzzyHashLengthEncoding

Source§

impl StructuralPartialEq for FuzzyHashLengthEncoding

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsOut<T> for T
where T: Copy,

Source§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.