Files
boc/aamos-ledger-rust/target/debug/deps/libfoldhash-307afae06628b423.rmeta
T

175 lines
61 KiB
Plaintext
Raw Normal View History

rust
¯ò#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁ‰WglobalÁ4§Jó¼ˆJ̇J convenienceÁ\¤&»À|Ž&ífastÁ 
   with_seedÁ write_numÁ¥writeÁwrite_u8Á write_u16Á write_u32Á write_u64Á
write_u128Á write_usizeÁfinishÁ>   build_hasherÁ#>%randomÁ%fixedÁ%Ÿ))Ú,Ÿ.> 00ÚqualityÁ3333333333=Ÿ3?Ê?Ö?å?õ???¦?¸3HHÚ3KûKˆKŸ3OOÚ3RŸ3TTÚseedÁWWWWWWWWWW WFIXED_GLOBAL_SEEDÁWgen_per_hasher_seedÁccccPER_HASHER_NONDETERMINISMÁWh
global_randomÁh global_fixedÁhfrom_u64ÁkmixÁk FORCED_ONESÁWŠnnnnnngenerate_global_seedÁt nGlobalSeedStorageÁvºv§nUNINITÁnLOCKEDÁnINITÁnnGLOBAL_SEED_STORAGEÁ} næ  init_slowÁgetÁW

ARBITRARY0Á
ARBITRARY1Á
ARBITRARY2Á
ARBITRARY3Á
ARBITRARY4Á
ARBITRARY5Á
ARBITRARY6Á
ARBITRARY7Á
ARBITRARY8Á
ARBITRARY9Áfolded_multiplyÁš hash_bytes_mediumÁhash_bytes_longÁ
FoldHasherÁ accumulatorÁspongeÁ
sponge_lenÁ fold_seedÁ expand_seedÁ expand_seed2Á expand_seed3Á
ƒ RandomStateÁper_hasher_seedÁ global_seedÁ  
¢ƒ¤×SeedableRandomStateÁ¦
¦ shared_seedÁ«ƒ­×
FixedStateÁ¯
³ƒµ×3× ·innerÁ3¹ƒ3ó »å33 3
¿ƒ3 Á>3 Ã×3Ï
Åå3
33Ƀ3Ë>3Í×3¤Ïå333Óƒ3Õ>3××W
SharedSeedÁÙseedsÁÚ W܃WÞ×n
GlobalSeedÁà_no_accidental_unsafe_initÁnnnäƒnæ×










"
+
2
>
@
@
A
B
C
D
E
F
G
J
Q
V


œ
£
¥
¥
¥
¬
®
®
®
´



º
À
Ä
Ä
Ä
Ê
Î
Î
Î
Ô
Ø
Ø
Ø
Ý
ß
ß
ß
å
ç
ç
ç
Ø× é ü Š œ ˜­ À šÔ ¿tø¹‰2%¢eÚŠ ó ž
Ÿ
Yhª»˜ dÛÚØÚ¿cÚ³ÚÅeÚŠ ¦¦Ï
§
¨ò
8ÖßÛËØË¿c˳ËÅeËŠ ¯¯¤°
ÊÙF¹ŠJ¬Û¼Ø¼¿c¼³¼Åe¼Ø··× ¸åøØXÚ¢e¢Š »»ó ¼å3µ ’•­•ÔÛàØà³à¿càÅeàŠ ÅÅÏ
Æå3@Õ–@`$jÛÆØÆ³Æ¿cÆÅeÆŠ ÏϤÐå3ðºŒJ–}³Ð۬ج³¬¿c¬Åe¬ØÙÙ«Ú½ZÙÁì?“RŠ¿c vvÈwºnx§næRm¨›bTŠ ààæáønÇÒ .ýGËaÛØ¿c¢«¦³¯¹·¿»ÉÅÓÏÜÙäà?· ©¦±¯½»ÇÅÑÏâࡪ¦²¯¾»ÈÅÒÏãभ¦µ¯Ã»ÍÅ×ÏÞÙæà#¦.¯Á»ËÅÕÏ )¦0¯H»OÅTÏ|vØ
¼¢eFŠ  Û1¿c1³8Åe' $ä§=|§= T¹=ˆ Â=üƒ=K ¯ Í=Ô=-üý;×¼$­<ñ|”<ñŽñ
<ˆñüÖ#Iüò#,|$
#|ò#
/T“$ñ
P $e
lÜÖ#
-wˆ ž$ü¨!‚ Ï ©$°$Süé Ǭ$™!ñ|€!¼æñäñâ
!CÈñüê0  ññŠññTŒñüÒK Ù œü¬rbñ 9ñŠññŒñ³$”ýj , jüÀU´%œß´%iŒþ´%y.b'/bª¸jt´%Ñhßsb
ø+œø,œ
$x,œ¸!-P,°ŽñPg
nx+œ¸!wP+°Žñšø*œ
 x*œ¸!ÅP*°Žñ74ø.œø/œ  
$x/œ¸! -P/°ŽñP g
nx.œ¸!wP.°Žñšø-œ
 x-œ¸!ÅP-°Žñ7
ø1œ ø2œ 


$x2œ¸!
-P2°Žñ P
g
nx1œ¸! wP1°Žñ š ø0œ
 x0œ¸! ÅP0°Žñ
 7 ø4œø5œ4… 

$x5œ¸!-P5°Žñ
Pg
nx4œ¸!wP4°Žñ šø3œ
 x3œ¸!ÅP3°Žñ 7!ü´#§¤Æ#4Æ#
\Ï#mñ Ù#¤ì#4ì#
\õ#mñ ÿ#¤’$4’$

\$mñ ¥$¤¸$4¸$
\Á$mñ Ë$ú ñ Ú$üš#Ì Ù å$ ë$
ì$küªÂüÞŽü‹áüº²üéƒññŒñŒñŠñˆñ¹ñ¹ñ·ñµñæñæñäñâññññ¯$@ñ>ñ>ñññæñæñºñº§Ôseed_aÁjseed_bÁseed_cÁ¨
seed_dÁÇfbŽñ.ŽñöŽñŽñ_Žñ'ŽñÄŽñŽñXŽñõŽñÁŽñŽñAmñmñßmñ®mñ¬÷"L÷"ý"?#/@«6?  ø"ñM?©6o.ñy?©6Lƒ#‰#©6«6#/@«6?  „#ñM©6o.ñy©68
 #Ì÷"
 #ñüÞ"3mññ"ñ¤ñ¤«6¬³ñ#«6+2Zó9ó9³$Ó£…ˆj?$ñ0x243f6a8885a308d3ÁDspñ0x13198a2e03707344ÁÐ1Ÿ)"8 ¤ñ0xa4093822299f31d0Á‰lNì˜ú.ñ0x082efa98ec4e6c89ÁwÐ8æ!(Eñ0x452821e638d01377Ál é4ÏfT¾ñ0xbe5466cf34e90c6cÁÝP|É·)¬Àñ0xc0ac29b7c97c50ddÁ GµµÕ„?ñ0x3f84d5b5b5470917Áûy‰ÙÕ’ñ0x9216d5d98979fb1bÁ¬µß˜¦ 1Ññ0xd1310ba698dfb5acÁ $¥3\¬3 ­3 ¶3LÅ3 Å3Ì= Í3ü¬3#

d¸3
ÈÔV¼¸3
Î3Ý3$â3  \â3 ñ ì3 û3
d€4 $4  
‰4@©6«66
B«6R  <@©6q  Y@©6 4 œ€4
 ñ ’4 Â6Ç6
<Â6  È6 Î6
ß?üû*äü¡3®üÙ3öü÷3Øñ§+ñ ”+ñ œ+Ì=DÌ=DñDÌ=#ñ#ñÁÌ=ÁñžÌ=žÌ=ž«6®µññÃĈÐloÁ3hiÁ
ù ÍA ÜAŒÍA
 dÏA
×ÒE7|ÏA ÝA™Eüó?¦ñœ@ñ ‰@«6 ‘@ñ¢«6Ã#½'R3W…ˆŠŒŽí«Tû%ÙüƒXüFC This crate provides foldhash, a fast, non-cryptographic, minimallyÁüGKH DoS-resistant hashing algorithm designed for computational uses such asÁü“2/ hashmaps, bloom filters, count sketching, etc.ÁÆúüÊ)& When should you **not** use foldhash:ÁôúüøLI - You are afraid of people studying your long-running program's behaviorÁüÅOL to reverse engineer its internal random state and using this knowledge toÁü•HE create many colliding inputs for computational complexity attacks.ÁÞúüâHE - You expect foldhash to have a consistent output across versions orÁü«PM platforms, such as for persistent file formats or communication protocols.Á ÁüƒHE - You are relying on foldhash's properties for any kind of security.ÁüÌDA Foldhash is **not appropriate for any cryptographic purpose**.Áúü•NK Foldhash has two variants, one optimized for speed which is ideal for dataÁüäIF structures such as hash maps and bloom filters, and one optimized forÁü®=: statistical quality which is ideal for algorithms such asÁüì@= [HyperLogLog](https://en.wikipedia.org/wiki/HyperLogLog) andÁü­52 [MinHash](https://en.wikipedia.org/wiki/MinHash).ÁãúüçOL Foldhash can be used in a `#![no_std]` environment by disabling its defaultÁ¤·  `"std"` feature.ÁÌ ú # UsageÁÜ úüà NK The easiest way to use this crate with the standard library [`HashMap`] orÁü¯
IF [`HashSet`] is to import them from `foldhash` instead, along with theÁüù
LI extension traits to make [`HashMap::new`] and [`HashMap::with_capacity`]ÁÄÆ  work out-of-the-box:Áß ú  ```rustÁüï (% use foldhash::{HashMap, HashMapExt};Á˜ úüœ  let mut hm = HashMap::new();Áܽ  hm.insert(42, "hello");Á  ```Áá úüå OL You can also avoid the convenience types and do it manually by initializingÁüµ
[X a [`RandomState`](fast::RandomState), for example if you are using a different hash mapÁü‘B? implementation like [`hashbrown`](https://docs.rs/hashbrown/):ÁÔúºRÜä use hashbrown::HashMap;Áü€$! use foldhash::fast::RandomState;Á¥úü©>; let mut hm = HashMap::with_hasher(RandomState::default());Áäè hm.insert("foo", "bar");Á<…ÚSúü‘IF The above methods are the recommended way to use foldhash, which willÁüÛOL automatically generate a randomly generated hasher instance for you. If youÁü«QN absolutely must have determinism you can use [`FixedState`](fast::FixedState)ÁüýIF instead, but note that this makes you trivially vulnerable to HashDoSÁüÇIF attacks and might lead to quadratic runtime when moving data from oneÁì‘ hashmap/set into another:Á¯úºRü¿" use std::collections::HashSet;Áüâ# use foldhash::fast::FixedState;ÁúüŠA> let mut hm = HashSet::with_hasher(FixedState::with_seed(42));ÁäÌ hm.insert([1, 10, 100]);ÁÚSñúüõLI If you rely on statistical properties of the hash for the correctness ofÁüÂXU your algorithm, such as in [HyperLogLog](https://en.wikipedia.org/wiki/HyperLogLog),Áü›DA it is suggested to use the [`RandomState`](quality::RandomState)ÁüàNK or [`FixedState`](quality::FixedState) from the [`quality`] module insteadÁü¯LI of the [`fast`] module. The latter is optimized purely for speed in hashÁüü30 tables and has known statistical imperfections.Á°úü´PM Finally, you can also directly use the [`RandomState`](quality::RandomState)Áü…KH or [`FixedState`](quality::FixedState) to manually hash items using theÁüÑ2/ [`BuildHasher`](std::hash::BuildHasher) trait:Á\„ºRü use std::hash::BuildHasher;Áü°'$ use foldhash::quality::RandomState;ÁØúüÜ.+ let random_state = RandomState::default();Áü‹41 let hash = random_state.hash_one("hello world");ÁÚSÈú ## SeedingÁÛúüßNK Foldhash relies on a single 8-byte per-hasher seed which should be ideallyÁü®B? be different from each instance to instance, and also a largerÁüñC@ [`SharedSeed`] which may be shared by many different instances.Áµúü¹MJ To reduce overhead, this [`SharedSeed`] is typically initialized once andÁü‡PM stored. To prevent each hashmap unnecessarily containing a reference to thisÁüØLI value there are three kinds of [`BuildHasher`](core::hash::BuildHasher)sÁü¥:7 foldhash provides (both for [`fast`] and [`quality`]):ÁàúüäC@ 1. [`RandomState`](fast::RandomState), which always generates aÁü¨ a^ random per-hasher seed and implicitly stores a reference to [`SharedSeed::global_random`].ÁüŠ!FC 2. [`FixedState`](fast::FixedState), which by default uses a fixedÁüÑ!YV per-hasher seed and implicitly stores a reference to [`SharedSeed::global_fixed`].Áü«"KH 3. [`SeedableRandomState`](fast::SeedableRandomState), which works likeÁü÷"UR [`RandomState`](fast::RandomState) by default but can be seeded in any manner.ÁüÍ#RO This state must include an explicit reference to a [`SharedSeed`], and thusÁü $OL this struct is 16 bytes as opposed to just 8 bytes for the previous two.Á3W…ˆŠŒŽí «
Ù+.1dÄ%ü41 The foldhash implementation optimized for speed.Á$Ì%¦¯\\GÅe4T
Œ   Á  
© ŒÌ š  
 ˆT:¿Á±³\b¦¨ˆ,¢{}ln]_NP?A|ÅÚüÌNüÛFC Initializes this [`FoldHasher`] with the given per-hasher seed andÁœ¦ [`SharedSeed`].ÁLÓèñ èÚ 

ò
üõ ,é éÚ¥¥
ꓪv
æ™vÌ=T…

™v$
à œ
,.Ô›Ú¤e¥e¦e§e¨e©eªe£eüÒ!êë êÚ ë
ó9žv Û
bytesÁ,æìêì ìÚó9žv ö
´ üÆí íÚžv Ó
´ Þü¤î îÚ«6žv ±
´ ¼ü‚ L… ï ïÚñžv 
$” ´ š üà !ð ðÚÌ=žv î 
´ ù ü»"#\¾"ñ ñÚ³$žv Ê"
$Ï"´ Õ"¼Í$4Ð$ò òÚñ ×$
$Ø$äµ(Ú´¤î(<ñ(Ú
ü‡* Ú!"ÆeÇe"\®*4³*  Úüã*$dæ*ó óÚÚ  ó*