pub struct Fingerprint(pub [u8; 16]);Expand description
A stable transaction fingerprint for import deduplication.
Computed from date + amount + normalized description text using BLAKE3. Stored as 128 bits (16 bytes) — sufficient for collision resistance in typical ledger sizes (millions of transactions).
Unlike structural_hash, this fingerprint is designed to match
transactions that refer to the same real-world event even if they have
slightly different representations (e.g., imported vs manually entered).
Tuple Fields§
§0: [u8; 16]Implementations§
Source§impl Fingerprint
impl Fingerprint
Sourcepub fn compute(date: &str, amount: Option<&str>, text: &str) -> Self
pub fn compute(date: &str, amount: Option<&str>, text: &str) -> Self
Compute a fingerprint from transaction components.
The text is normalized (lowercased, whitespace-collapsed) before hashing to handle minor formatting differences between import sources.
Sourcepub fn from_transaction(date: &str, txn: &TransactionData) -> Self
pub fn from_transaction(date: &str, txn: &TransactionData) -> Self
Compute a fingerprint from a TransactionData and date.
Uses the first posting’s amount and the payee+narration as text.
Trait Implementations§
Source§impl Clone for Fingerprint
impl Clone for Fingerprint
Source§fn clone(&self) -> Fingerprint
fn clone(&self) -> Fingerprint
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Fingerprint
Source§impl Debug for Fingerprint
impl Debug for Fingerprint
Source§impl Display for Fingerprint
impl Display for Fingerprint
impl Eq for Fingerprint
Source§impl Hash for Fingerprint
impl Hash for Fingerprint
Source§impl PartialEq for Fingerprint
impl PartialEq for Fingerprint
Source§fn eq(&self, other: &Fingerprint) -> bool
fn eq(&self, other: &Fingerprint) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for Fingerprint
Auto Trait Implementations§
impl Freeze for Fingerprint
impl RefUnwindSafe for Fingerprint
impl Send for Fingerprint
impl Sync for Fingerprint
impl Unpin for Fingerprint
impl UnsafeUnpin for Fingerprint
impl UnwindSafe for Fingerprint
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.