Files
boc/aamos-ledger-rust/target/debug/deps/libhashbrown-7d7f68df13b21e9e.rmeta
T

2999 lines
858 KiB
Plaintext
Raw Normal View History

rust
h
#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁallocator_api2ÁÆÛŠfêxuìÌ@˜(}Ïu-7b02f80e4eb85c1bÁ
equivalentÁ˜úôa ,tùƳJ8®ød-293c030140ba1879ÁfoldhashÁ¨%¹9ü'?ž˜ë‰4Î-307afae06628b423ÁDefaultHashBuilderÁ”Ô
»default-hasherÁÔ­
ä¬
À
¦»nightlyÁœ¦[
AllocErrorÁT)$[innerÁ,½»¨œ£`¹[Ô»¨œ­»allocator-api2ÁÔÂü¬1ü¨6A¹$Atest_mapÁD $‚‘ likelyÁ4Œ»¨œTûD”»¨rayonÁ,)»¡ŒserdeÁ,N»»Œ6Ž make_hashÁLšE»¨œÉDŽÒD—Š $ŒŠ õ
ÒD‹€$€€ rustc_entryÁ\»rustc-internal-apiÁôöÚ test_setÁD—Ý$ŒÝtestsÁ,ÿ· $ô· ì¡»¡Œœî¡»¡Œøð¡»¡ŒÚ
EquivalentÁTÙ"»è´¤Ä£µ
ðµ¼À
impÁÖ
ðµlsxÁÌ
Ȭσ
Ί
»¨genericÁ<
ðµfìôœå
ìõ´ú
üä-
µ 

ü¶u
ì¼ü
ðà ¼
ílittleÁÄÆ
µ 

üò
»¨´ì¾Üæ
𣴋
µ
ü¿|
XÃ
¿
΢
ðµ2ìôÍìõËɵ ÆÄÂì¿ðà ½í¾ µµ ³±¯»¨_쾬𣪵 ¨¦¤¡ž íΤmacrosÁcfg_ifÁ¦controlÁbitmaskÁ       invertÁremove_lowest_bitÁ any_bit_setÁlowest_set_bitÁtrailing_zerosÁnonzero_trailing_zerosÁ
leading_zerosÁ IntoIterÁê ó groupÁtagÁ''''+EMPTYÁ+DELETEDÁ+is_fullÁ+
is_specialÁ+special_is_emptyÁ+1 MIN_HASH_LENÁ'3×' TagSliceExtÁ5fill_tagÁ5
fill_emptyÁ'8Ã@AAAAAAAAAA A
A A A
AAAAAAAAAAAA¤[[[[[Ô``````do_allocÁfAAAAA offset_fromÁl¥Ancapacity_overflowÁn alloc_errÁASizedTypePropertiesÁq
IS_ZERO_SIZEDÁq
NEEDS_DROPÁAt¥Ah1ÁAw move_nextÁAcapacity_to_bucketsÁAbucket_mask_to_capacityÁA{æ |¥{calculate_layout_forÁA
InsertSlotÁÖABucketÁ¥µ A¥A¥ƒA¥from_base_indexÁ
to_base_indexÁas_ptrÁ as_non_nullÁnext_nÁãreadÁwriteÁÉ'aÁas_mutÁÃARawTableÁ¥tableÁ¤ÚA
RawTableInnerÁ bucket_maskÁctrlÁ growth_leftÁitemsÁA¢¥¢æ ¢
with_capacityÁA¦¥¦¦ TABLE_LAYOUTÁ¦new_inÁ¦new_uninitializedÁ¦with_capacity_inÁ¦¨¦data_endÁ¦allocation_sizeÁ¦ bucket_indexÁ¦bucketÁ¦
erase_no_dropÁ¦eraseÁ¦removeÁ¦ remove_entryÁµimpl FnMut(&T) -> boolÁ¦
clear_no_dropÁ¦clearÁ¸ ¦ shrink_toÁºimpl Fn(&T) -> u64Á¦reserveÁ¼í¦ try_reserveÁ¾í¦reserve_rehashÁÀíÀ À ¦resizeÁÄíÄ ¦insertÁÇí¦ insert_entryÁÉí¦replace_bucket_withÁ˦find_or_find_insert_slotÁÍÍíÍ ¦insert_in_slotÁ¦findÁÒÒ ¦getÁÕ¦get_mutÁצ get_many_mutÁÙŸÙ Ùimpl FnMut(usize, &T) -> boolÁÙ Ù Þ ¦get_many_unchecked_mutÁàŸà àà à å ¦get_many_mut_pointersÁçŸç çç ç ì ì ¦capacityÁ¦¦is_emptyÁ¦bucketsÁ¦is_bucket_fullÁ¦ù¦ iter_hashÁ¦drainÁ¦drain_iter_fromÁ¦into_iter_fromÁ¦into_allocationÁA ú¥úA
ý¥ýA NEWÁæ A ƒÑƒfallible_with_capacityÁ ƒƒfix_insert_slotÁƒfind_insert_slot_in_groupÁƒfind_or_find_insert_slot_innerÁƒprepare_insert_slotÁƒfind_insert_slotÁƒ
find_innerÁƒprepare_rehash_in_placeÁƒù¥ƒ
drop_elementsÁ¥ƒdrop_inner_tableÁ¥ƒÅ¥ƒ
bucket_ptrÁƒŠœ¥ƒ probe_seqÁƒrecord_item_insert_atÁƒis_in_same_groupÁ  ƒ
set_ctrl_hashÁƒreplace_ctrl_hashÁƒset_ctrlÁƒÆƒ
ctrl_sliceÁƒäƒóƒnum_ctrl_bytesÁƒis_empty_singletonÁƒprepare_resizeÁ«Ã««« ƒreserve_rehash_innerÁ°ƒfull_buckets_indicesÁƒ resize_innerÁ³ƒrehash_in_placeÁµ ƒ free_bucketsÁ·ƒallocation_infoÁƒallocation_size_or_zeroÁƒµƒèA
½¥½½ƒ½Á A
RawTableCloneÁÃclone_from_specÁAÅ¥ÅAÈ¥ÈÈclone_from_implÁË AÍ¥ÍÍ>AÑ¥ÑÑãAÕ¥ÕÕÕÒ
ÕêA RawIterRangeÁÛ¥Û
current_groupÁÛdataÁÛ next_ctrlÁÛþAá¥áæ á next_implÁäDO_CHECK_PTR_RANGEÁá fold_implÁææAé¥Aë¥Aí¥íƒAð¥ððó ó ð size_hintÁAö¥ARawIterÁø¥øùøåAü¥üÓ"Aÿ¥ÿƒA¥>A¥ó ˆ ´+foldÁAŽ¥A¥AFullBucketsIndicesÁÍ)group_first_indexÁÆåA›*A ó ´+A!A"A RawIntoIterÁŸ¥ŸŸùŸ
allocationÁŸÚA#¥¥¥¥ùA$©¥©A%¬¥¬A&¯¥¯¯ãA'³¥³³>A(·¥···ó ·´+A)½¥½A*À¥ÀARawDrainÁÃÃÃ¥ÃÃùÃÃ
orig_tableÁÃÚA+Ë¥ËËùA,Ï¥ÏA-Ò¥ÒA.Õ¥ÕÕãA/Ù¥ÙÙÙó Ù´+A0ߥßA1â¥âA RawIterHashÁå¥åÔå_markerÁA2é¥éæ ëA3í¥íƒA4ð¥ð>A5óæ A6õ¥õõó A7ùùó A RawExtractIfÁüÃü¥üüùüA8¥ó utilÁðû invalid_mutÁ¥external_trait_implsÁØŽŽŽŽŽŽŽŽŽŽ Ž
Ž Ž Ž
ŽŽŽŽŽŽŽŽŽŽŽŽ¨œ¨§¨¤¨¨ hash_builderÁ¨Ž¯œ¯§¯¤¯¯ƒ¯Ž make_hasherÁ¢§¤ Žequivalent_keyÁ¼¢¼œ¼§¼¼ Žè¢œÂ ŽÕÇ¢Ç¤ÇŽËœË§Ëæ ˎМЧÐÐÃÐêŽÖœÖ§Ö¤Ö with_hasherÁÖwith_capacity_and_hasherÁŽÜœÜ§Ü¤ÜܨÜwith_hasher_inÁÜwith_capacity_and_hasher_inÁÜhasherÁܼÜkeysÁܼÜ
values_mutÁÜùÜúÜÜÔÜ¢ÜretainÁîÜ
extract_ifÁðÜÊÜ into_keysÁÜ into_valuesÁŽõœõ§õ¤õõõžõ
shrink_to_fitÁõÜõentryÁõ entry_refÁÿÃÿ'bÁÿ¢õµƒ¢õ
get_key_value碛 get_inner碛get_key_value_mut碛 contains_key碛颛
get_inner_mutÁ¢õߢŸ    õ´˜¢˜Ÿ˜ ˜ ˜  õget_many_key_value_mutÁŸ¢ŸŸŸ Ÿ Ÿ ¤ õ get_many_key_value_unchecked_mutÁ¦¢¦Ÿ¦ ¦ ¦ « õget_many_mut_innerÁ­¢­Ÿ­ ­ ­ õget_many_unchecked_mut_innerÁ³¢³Ÿ³ ³ ³ õbuild_hashes_innerÁ¹¢¹Ÿ¹ ¹ ¹ õüõÑÀ¢õinsert_unique_uncheckedÁõ
try_insertÁõõÄ¢õƒÆ¢õšŽÉœÉ§É¤ÉÉÎ Ï ŽÑœÑ§Ñ¤ÑŽÖœÖ§Ö¤ÖÖ׎ ܜܧܤÜÜ>Ž
âœâ¢â§â¤ââ°âÖŽ êœê§êêŸê ê÷ð ŽIterÁòÃòœò§òÔòÚŽ øœø§øƒŽ
üœü§ü׎IterMutÁܧÔÚŽœ§Žœ§ùŽÒ
œ§ÔŽœ§ùŽIntoKeysÁœ§ÔŽœœœ§œœ>Ž¡œ¡§¡¡¡ó ¦ ¡´+¡Û,©©© Ž­œ­§­­Ž²œ²§²Žœ§×º Ž
IntoValuesÁ¼œ¼§¼¼ÔŽÁœÁ§ÁÁ>ŽÆœÆ§ÆÆÆó Ë Æ´+ÆÛ,ÎÎÎ ŽÒœÒ§ÒҎלק׎ۜۧÛÛ×ß ŽKeysÁáÃáœá§áÔŽæœæ§æƒŽêœê§ê׎ValuesÁîÃîœî§îÔŽóœó§óƒŽ÷œ÷§÷׎DrainÁûÃûœû§ûûÔŽœ§ùŽ ExtractIfÁܧ±ÔŽ ŽœŽ§ŽŽŽŽó  Ž´+Ž!œ§Ž ValuesMutÁܧԎEntryÁ Ã œ § ¤  OccupiedÁ¦
¦ˆ VacantÁ©
©ˆŽ"¬œ¬§¬¤¬¬×Ž
OccupiedEntryÁ²Ã²œ²§²¤²²§²elemÁ²Ž#»œ»§»¤»Ž$ÀœÀ§À¤ÀŽ%ŜŧŤÅÅ׎ VacantEntryÁËØ˧ˤË˧ËkeyÁËŽ&ԜԧԤÔÔ׎EntryRefÁÚÃÚò<ڜڢڧڤÚÚóOâ
âˆÚPå
刎'èœè¢è§è¤èè׎VacantEntryRefÁïÃïò<ïœï¢ï§ï¤ïï§ïëRïŽ(úœú¢ú§ú¤úú׎
OccupiedErrorÁܧ¤Ì<»Ž)œ§¤×Ž*œ§¤×Ž+ܧ¤Ò
êŽ,žÃžœž§ž¤žžžÒ
žêŽ-§œ§§§¤§§§Ò
§êŽ.¯œ¯§¯>Ž/³Ã³œ³§³³ó ³´+³Û,ººº Ž0¾œ¾§¾Ž1ϤŽ2ŜŧÅ>Ž3ÉÃɜɧÉÉó É´+ÉÛ,ÐÐÐ Ž4ԜԧԎ5؜اŽ6ۜۧÛ׎7ߜߧßß>Ž8äœä§äääó ä´+äÛ,ëëŽ9îœî§îîŽ:óœó§óŽ;÷œ÷§÷÷׎<üœü§ü>Ž=ܧó ´+Û,Ž> œ §Ž? œ §Ž@œ § >ŽA à œ§ó ´+Û,   ŽB¡ œ¡ §¡ ŽC¥ œ¥ §ŽD¨ œ¨ §¨ >ŽE¬ ì œ¬ §¬ ¬ ó ¬ ´+¬ Û,³ ³ ³ ŽF· œ· §· ŽG» œ» §ŽH¾ œ¾ §¾ ×Á ŽIà œà §à à à ó à ´+à Û,Ê Ê ŽJÍ œÍ §Í Í ŽKÒ œÒ §Ò ŽLÖ œÖ §Ö Ö ×ŽMÛ ÃÛ œÛ §Û ¤Û Û üÛ  or_insertÁÛ or_insert_entryÁÛ or_insert_withÁä Û or_insert_with_keyÁæ Û ëRÛ 
and_modifyÁé Û and_replace_entry_withÁë ŽNí Ãí œí §í ¤í í 
or_defaultÁŽOô Ãô œô §ô ¤ô ô ëRô ƒô µô Èô into_mutÁô üô õô replace_entry_withÁ

ŽP
Ã
œ
§
¤

ëR
into_keyÁ
ü
ŽQŽ
ÃŽ
ò<Ž
œŽ
¢Ž
§Ž
¤Ž
Ž
üŽ
ûbŽ
£c˜
Ž
Ácš
Ž
ëRŽ
ëc
ŽRŸ
ß
ò<Ÿ
œŸ
¢Ÿ
§Ÿ
¤Ÿ
Ÿ
ØdŸ
or_default_entryÁŽS©
é
ò<©
ϩ
¢©
§©
¤©
©
ëR©
ü©
ŽT´
ϫ
§´
¤´
´
ù¹
¥¹
ŽU¼
œ¼
§¼
¤¼
¼
extendÁÁ
¥Á
ŽVÄ
ÃÄ
π
§Ä
¤Ä
Ä
éiÊ
¥Ê
ŽWÍ
ÃÍ
œÍ
§Í
¤Í
Í
éiÓ
¥Ó
Žassert_covarianceÁÖ
map_keyÁ×
'newÁÖ
map_valÁÙ
°kÖ
iter_keyÁÛ
ÃÛ
°kÖ
iter_valÁÞ
ÃÞ
°kÖ

into_iter_keyÁá
°ká
Ö

into_iter_valÁä
°kä
Ö
keys_keyÁç
Ãç
°kÖ
keys_valÁê
Ãê
°kÖ

values_keyÁí
Ãí
°kÖ

values_valÁð
Ãð
°kÖ
¢ó
°k raw_entryÁõ
õ
õ
õ
õ
õ
õ
õ
õ
õ
 õ

õ
 õ
 õ

õ
õ
õ
õ
õ
õ
 œ § ¤  
raw_entry_mutÁ ðmõ
RawEntryBuilderMutÁ à œ § ¤  Øõ
 RawEntryMutÁ à œ § ¤  óO
 ˆ P 
  ˆõ
RawOccupiedEntryMutÁ£ ã œ£ §£ ¤£ £ Q£ £ µ6õ
¬ œ¬ §¬ ¤¬ õ
± œ± §± ¤± õ
RawVacantEntryMutÁ à œ § ¤   µ6õ
RawEntryBuilderÁ¾ þ œ¾ §¾ ¤¾ ¾ Øõ
Å ÃÅ œÅ §Å ¤Å Å from_keyÁË ¢Å from_key_hashed_nocheckÁÍ ¢õ
Ï ÃÏ œÏ §Ï ¤Ï Ï  from_hashÁÕ Õ ò<Ï searchÁØ Ø ò<Ø õ
Ü ÃÜ œÜ §Ü ¤Ü Ü »sâ ¢Ü Ósä ¢Ü Ètæ æ Ü §té õ
ë Ãë œë §ë ¤ë ë üë ûbë £có ë ëcõ ë …d÷ õ
ù Ãù œù §ù ¤ù ù ëRù key_mutÁù ³fù µù ·eù Èù ”=ù Ê=ù into_key_valueÁù üù 
insert_keyÁù õù ƒù ×eŒ Œ Ž õ
 à œ § ¤  ü insert_hashed_nocheckÁ insert_with_hasherÁ˜ ˜  õ
 œ œœ §œ ¤œ œ ×õ

¢ œ¢ §¢ ¤¢ ¢ ×õ
 ¨ œ¨ §¨ ¤¨ ¨ ×õ
 ® œ® §® ¤® ® ×õ

´ œ´ §´ ¤´ ´ ×
scopeguardÁº º º º º º º 
ScopeGuardÁÁ ¥Á Á dropfnÁÁ »º £Æ ¥Æ º É ¥É É 
into_innerÁº Í ¥Í Í åÍ ´º Ò ¥Ò Ò º Ö ¥Ö Ö ãsetÁÚ Ú Ú Ú Ú Ú Ú Ú Ú Ú  Ú 
Ú  Ú  Ú 
Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú Ú ú ¥ú ¤ú ú ØÚ ÿ ¥ÿ ¤ÿ ÿ ƒÿ Ú 
¥
æ 
Ú 
¥

Ã
êÚ Ž
¥Ž
¤Ž
Ž
¼Ž
ùŽ
Ž
ÔŽ
¢Ž
ž;

Ž
´;š
Ž
ÊÚ 
¥
¤
¡9
´9Ú ¢
¥¢
¤¢
¢
¨¢
:¢
—:¢
º:Ú ª
¥ª
¤ª
ª
ª
žª
¯<ª
ܪ

differenceÁ²
ê
symmetric_differenceÁ´
ê
 intersectionÁ
ê
C¸
ê
containsÁº
¢ª
µ¼
¢ª

get_or_insertÁª
get_or_insert_withÁ¿
¢¿
ª
Ì<ª
 is_disjointÁª
 is_subsetÁÄ
ª
 is_supersetÁª
üª
çAª
replaceÁª
õÊ
¢ª
takeÁÌ
¢ª
šÚ Ï
¥Ï
¤Ï
Ï
Ó
Ú Õ
¥Õ
¤Õ
Ú  Ù
¥Ù
¤Ù
Ù
×Ú 
Þ
¥Þ
¤Þ
Þ
÷Ú  ã
¥ã
¤ã
ã
ùç
šÚ  é
¥é
é
Ÿé
é
֔
Ú 
ð
¥ð
¤ð
ð
éiô
šô
Ú ÷
Ã÷
¥÷
¤÷
÷
éiü
šÚ þ
¥þ
¤þ
þ
>Ú ƒ¥ƒ¤ƒƒ°ƒ±Ú ¥¤°¯Ú ¥¤°µÚ ¥¤°ÚÚ ¥¤²Ú  ¥ ¤  °¤ Ú ¦¥¦¤¦¦Ú «¥«¤««Û¯ Ú éD±Ã±œ±ùÚ Ò
µœµµùÚ ‹M¹Ã¹œ¹¹ùÚ åM¾Ã¾œ¾¾¾±¾ÔÚ  IntersectionÁÅÃťŤÅÅùŹ
Ú 
DifferenceÁÌḀ̤̃ÌÌù̹
Ú SymmetricDifferenceÁÓÃÓ¥Ó¤ÓÓùÚ ôÙÃ٥٤ÙÙùÚ ßÃߥߤßßßÒ
ßêÚ ç¥ç¤çççÒ
çêÚ îœîƒÚ ñœñ>Ú ôÃôœôôó ô´+ôÛ,úúÚ ýœýÚ œÚ œ×Ú  œ>Ú !œó ´+Û, Ú "œÚ #œÚ $šœšš× Ú %ŸœŸŸŸó Ÿ´+ŸÛ,¥¥¥ Ú &©œ©©Ú '­œ­Ú (°œ°°×³ Ú )µœµµµµó º º µ´+Ú *¾œ¾¾Ú +¥¤ÂÂƒÚ ,ÇÃǥǤÇÇÇó Ç´+ÇÛ,ÏÏÏ Ú -Ó¥Ó¤ÓÓ×Ú .إؤØÚ /ܥܤÜÜƒÚ 0áÃá¥á¤áááó á´+áÛ,ééé Ú 1í¥í¤íÚ 2ñ¥ñ¤ññ×Ú 3ö¥ö¤ööƒÚ 4ûÃû¥û¤ûûûó û´+ûÛ,ƒƒÚ 5¥¤Ú 6Š¥Š¤ŠŠ×Ú 7¥¤ƒÚ 8¥¤Ú 9˜¥˜¤˜˜×Ú :Ã¥¤ó ´+Û,¥¥Ú ¾O¨Ã¨¥¨¤¨¨óO­
­ˆ¨P°
°ˆÚ ;³¥³¤³³×Ú ØP¸Ã¸¥¸¤¸¸ÔÚ <¾¥¾¤¾¾×Ú ¨RÃÃåäÃÃÔÚ =ɥɤÉÉ×Ú >ÎÃΥΤÎÎüÎûbÎµÚ ?Ö¥Ö¤ÖÖµÖõÚ @ÜÃܥܤÜܵÜ
into_valueÁÜüÚ ˆkäþ|å°käùçÃç°käêê°kêäÌíÃí°kíäæñÃñ°kñ䊂õÃõ°kõäCùÃù°kùä¢ý°ký 
  
 HashTableÁ¥@¥æ š¥ššÃšêš¨šœ šfind_mutÁ¢š
find_entryÁ¤šÌ<¦¦íš
insert_uniqueÁ©íšÊš¯<¬íšÜ®íš°íšž²íš¼ššÔšùšúšš
iter_hash_mutÁšž;»impl FnMut(&mut T) -> boolÁš¢š´;¾šßÀŸÀ ÀÀ š´ÅŸÅ ÅÅ ššË¥ËËËÒ
ËêÑÃÑ¥ÑÑÑÒ
ÑêØÃØ¥ØØØÒ
Øêߥßß>ã¥ããƒç¥çç×¾OëÃë¥ëëóOï
ïˆëPò
òˆõ¥õõ× ùÃù¥ùùüùûbù£cÿimpl FnOnce() -> TÁùëcimpl FnOnce(&mut T)ÁØPƒÃƒ¥ƒƒ§ƒÅƒ
ХР¥ ¥×
Ã¥õµÈ·e
into_tableÁ¨RÃ¥§ insert_slotÁ¤¥¤¤×¨Ã¨¥¨¨ü¨é§ AbsentEntryÁ®Ã®¥®®³¥³³×·Ã·¥··é§éD¼Ã¼¥¼Ô¼ÚÁ¥Á>ÄÃÄ¥ÄÄó Ä´+ÄÛ,ÊÊÊ Î¥ÎÑ¥ÓÃӥӃץ×××EÚÃÚ¥ÚÔÚÚߥß>âÃâ¥ââó â´+âÛ,èèè ì¥ìï¥ñ¥ñ×IterHashÁôÃô¥ôÔôÚù¥ù>üÃü¥üüó üÛ, ¥ Ã¥ƒ!¥× IterHashMutÁŽÃŽ¥ŽÔŽÚ"¥>#Ã¥ó Û, $Ÿ¥%¡¥¡×Ò
¤¥¤¤Ô&¨¥¨¨>'¬¥¬¬¬ó ¬´+¬Û,²²(µ¥µµ)¹¥¹*¼¥¼¼×‹MÀÃÀ¥ÀÀÔ+Å¥ÅÅÅó Å´+ÅÛ,ËË,Î¥ÎÎ-Ò¥Ò.Õ¥ÕÕ×åMÙÃÙ¥ÙÙÙ±ÙÔ/à¥ààààó å à´+0è¥èèhash_mapÁìhash_setÁî
hash_tableÁð BitMaskÁö
öˆ   ûƒ  BitMaskIterÁý
ýˆ ƒà  BitMaskWordÁNonZeroBitMaskWordÁBITMASK_STRIDEÁ BITMASK_MASKÁBITMASK_ITER_MASKÁŽWIDTHÁŽ static_emptyÁ  AlignedTagsÁ_alignÁ tagsÁ  ALIGNED_TAGSÁ Ž¬Ž load_alignedÁŽ
store_alignedÁŽ match_tagÁŽ match_emptyÁŽmatch_empty_or_deletedÁŽ
match_fullÁŽ,convert_special_to_empty_and_full_to_deletedÁGroupÁ¢
¢ˆ§ƒ'TagÁ©
©ˆ'''®ƒ''±'³ÖA FallibilityÁµFallibleÁ
µ
InfallibleÁ¸
A9A:A;¼ƒAProbeSeqÁ¾posÁ¾strideÁA<ÁƒA TableLayoutÁÃÃ
ctrl_alignÁA=A>A?ȃÅô'ARawIterHashInnerÁË³ËÆËtag_hashÁËÊ#Ëú
Ë A@ÒƒTryReserveErrorÁÔCapacityOverflowÁÕ
Ô¹×layoutÁÙƒÜÞÖà×
4
4
4
6
7
9
f
x
ˆ
Œ

Ž






­
®
¯
°
°
±
²
²
³
´
µ
µ
·
¸
º
º
¼
¼
¾
¾
À
À
Ä
Ä
Ç
Ç
É
É
Ë
Í
Í
Í
Ñ
Ò
Ò
Õ
Õ
×
×
Ù
Ù
à
à
ç
ç
ï
ð
ñ
ò
ó
ô
õ
ö
÷




Œ
Œ
Œ


Ž










œ
ž
Ÿ
 
¢
£
¤
¥
¦
§
¨
©
ª
«
«
°
°
°
°
²
³
³
³
³
µ
µ
µ
·
·
¹
º
»
¼
À
Á
Á
Ä
Ä
Ë
Ë
Ô
ä
ï
ó
õ
þ

ˆ
Š
˜

œ
¨
²
»
¼
Ë
Î
Ï
Ò
Õ
Ø
Ù
Ý
Þ
ß
â
ë
ï
ô
ø
û



´
µ
µ


¼
¼
Â
Â
Ç
Ç
á
ä
å
æ
ç
è
é
ê
ë
ì
í
î
î
î
ð
ð
ð
ò
ú
û
ü
ý
þ
ƒ
ƒ














˜
˜
Ÿ
Ÿ
¦
¦
­
­
³
³
¹
¹
¿
À
À
Â
Ã
Ä
Ä
Æ
Æ
È
Î
Î
Û
Û
Û
â
é
é
ø
û
ü
ÿ
ÿ
ÿ


Œ

¦
¨
±
º
º
º
Ë
Í
Ö
ß
ß
ß
æ
é
ê
í
í
í
ó
ö
÷
ú
ú
ú


Ž
Ž
Ž





¬
±
±
±
»
À
Å
Ê
Ê
Ê
Ô
Ù
Ù
Ù
è
è
î
î
î
ú
ú




Ž
Ž
Ž




¯
¸
¹
¾
Á
Â
Å
Î
Ï
Ô
×
Ø
Û
Þ
Þ
Þ
é
ê
ò
û
û
û
ü



Ž



œ
¡
¤
¥
¨
±
²
·
º
»
¾
Á
Á
Á
Ã
È
É
Í
Ñ
Ò
Ö
Ú
Ú
Ú
æ
è
é
ë
ú
ü
ý
ÿ

Š
š
œ

±
Á
Ê
Ó
Ž

¬
±
Ë
Í
â
ä
æ
é
õ
õ
÷
ÿ





ˆ

Œ
˜
œ
¡
¡
¡
¢
§
§
§
¨
­
­
­
®
³
³
³
´
¹
¹
¹
Á
Æ
É
Í
Ñ
Ò
Õ
Ö
Ù
ƒ









š
š
œ
¦
©
®
¯
°
±
º
º
¼
¼
¾
¿
¿
¿
Â
Ã
Ã
Ä
Ä
Æ
Æ
Ç
È
É
Ê
Ê
Ì
Ì
Î
Ó
Ó
Ý
Ý
Ý
ô
ü
ƒ
ƒ
ˆ


Ž





š

Ÿ
Ÿ
 
¤
¤
¦
ª
ª
«
¯
¯
î
ð
ñ
ø
ù
ý
ÿ






Ž




Ÿ
£
¤
©
¬
­
°
³
³
³
µ
µ
º
½
¾
¾
Â
Æ
Í
Î
Ó
×
×
×
Ø
Ü
à
ç
è
í
ñ
õ
õ
õ
ö
ú



Š
Ž
Ž
Ž



˜
œ
œ
œ
£
¤
³
·
·
·
¾
Â
Â
Â
É
Í
Í
Í
Õ
Ö
Ú
á
Ÿ
 
 
¢
¢
¤
¤
¦
¦
¦
©
©
«
¬
¬
®
®
°
°
²
²
´
µ

·
¸
¹
º
»
»
½
¾
¾
À
À
Å
Å
Ê
æ
ê
ê
ê
õ
ø
ø
ø

Š






š
¤
§
§
§
³



Á
È
É
Î
Ð
Ñ
Ö
×
Ù
Ù
Ù
ß
æ
ç
ì
î
ï
ñ
ó
ó
ó
ù


Š





š
Ÿ
¡
£
£
£
°
±
¸
¿
¿
¿
Å
É
Ê
Î
Ñ
Ò
Õ
Ø
Ø
Ø
à
à
å
ç
è
è
ü

œ ž Ÿ ¨
¯
²
²
´
½
Â
É
Ê
Ê
Ó
Ú
Ý
Ý
ß
á
á
á
º8À8Å8®Ã5qÊ öö÷î´øˆ Û§áz®RÛòÛØòÛÇLòÛØýýþµÿˆ g+Â)èâXùMÌÜŠ ¢¢£–¹¤ˆ >%Yc…ÛÝØÝŠ ©©ªƹ«ˆ ‡²hŠÄJ6lÛàÝØàÝÐìàݵßàÝàÝàÝ¿càÝ5
àÝŠ µ· º¸¹µº-?Á>:?ÛìÞØìÞq¥Ø¾¾ߺ¿ïºAÀúºA²äþMŠ ÃÓ»ÄAÅ®»AZ9L áÛàØàÌìõƒµ AjùÜfB‚‹¨ÀߨçàÌìâšA¤AœÚAi†bªñüzÀß «áØ«áëᳫáŒ"«áÇL«áÌìÛÛ±)ÝÍ)AÞâ)Aßî)AàþAöyç¸QWYÀß ÂâØÂâùMÂâòPÂâØøøÐ+úùûåAé9qeZïhÀß³ÇãùMÇãÃMÇãòPÇãùMŽ-Í)A°-AÆAåA¢e ¶ÜìãAÃM¶äòP¶äÌ쟟ˆ.¢ùA£³.A¤ÚAÑ\ÈÝß^qÀßòá ¢åŒ"¢å³¢åùM¢åÃM¢åòP¢åÌìÃÛ0ÇùAÈAÉÓ0AÊÚAâPºA…8¥ ·æŒ"·æùM·æÃM·æòP·æØËËۻ̳AÍÆA΃¼AÏÊ#AÐú
AÑ AvÐ2HîÄ—Øåå 2çÔAèÃ2A“¦h§b¢
žÀß³ÁèùMÁèùMÔçØ¨¨­µ6®Õ:Ç$Ö>Eœ§¤µß¥é¥é¥é¿c¥é³¥éÙ¢¨¨­µ6®Õ:Ç$Ö>Eœ§¤ 8¢é¨¨­µ6®Õ:Ç$Ö>EÝéãé RandomStateÁžper_hasher_seedÁŸ global_seedÁYhª»˜ dçÝéãéŸØòòéDöÔŽ÷ÚŽ5G®Ï&€u8æê§¿cÈìÌì×EÔŽÚŽP…sôhæþë8æê‹í³GÔŽ£r7?&¿ãÀÝéãéçùMòíÃMòíòPòí¿còí³¼¼¤IÀÔŽ‰eR‰sN¯oÝéãéçùMßîÃMßîòPßî¿cßîØáá½KåÔŽíýW*¸¡ÀÑ8æê‹í¿cÌïØîî£LòÔŽh±U8æê‹í¿c™ðùMåMŒ±ŽÔŽ—!]±OÁ8æê‹íòPåMŒ±ŽÔŽ—!]±OÁ8æê‹í­ñÄÄÅGlobalÁ £‰]ÆÔ˜~¿c ¦§óO¨ˆ©ªP«ˆÛ-k<׌E8æê‹í¤³ñÌì²²ØP¸§Ž¹QŽºŽ¥±£PUPÄã8æê‹í“ó³ñ ¥ó¿c¥ó¿cË˨RѧŽÒëRŽÓŽJò…ôËÙË8æê‹í“ó³ñ¿cÚâãóOäˆåæPçˆì˜Ò—­Y88œ¢§¤¿cïïÒT÷§ŽøëRŽùŽ-2RY±¾È88Ñõ×õÝõãõéõ¿cíUÌ<ˆ»/ÁµŸ`š8æê‹í“ó³ñÄcáöÇL 設µ6®Õ:Ç$Ö>Eæê‹í“ó³ñÇL ÃÂ÷ÇL¥é³ÈìùMòòéDöÔŽ÷ÚŽ5G®Ï&€uÃæê‹íÃMÈìòPÈ쳤íùM×EÔŽÚŽP…sôhæþëÃæê‹íÃM¤íòP¤í¿c¤í³Ò
ÔŽõsY4è±ôÝéãéçùMšúÃMšúòPšú¿cšú³ÌïùMáá½KåÔŽíýW*¸¡ÀÑÃæê‹íÃMÌïòPÌï³™ðùMîî£LòÔŽh±UÃæê‹íÃM™ðòP™ð³OŸÔ޽F<ˆÑ Ò8æê‹íùMOŸÔ޽F<ˆÑ ÒÃæê‹íÃMÏüòPÏü¿cÏüùMûû‹MÔŽá6´ïÖ6­8æê‹íïéÃMõýòPõý¿cõýÃL¥é³ìÐL¥é³ìÐLÂ÷ Ãæê ËíÐLÂ÷ Ãæê‹íÌì£ £ Ñp© Qõ
ª õ
« µ6õ
©B·á}ÂÞø8æê‹í“ó³ñ ¸ÿ¿c  ¢o Øõ
Ì@­™âP<Ý8æê‹í“ó³ñ¿c  ž óOŸ ˆ  ¡ P¢ ˆ"ø0ôÂw‚8æê‹í“ó³ñ¿c¸ÿ¿c  öq¼ õ
½ µ6õ
âж^_X8æê‹í“ó³ñ¿c¾ ¾ ÇrÄ Øõ
%ø:Îi1œÉ8æê‹í“ó³ñé!Á Á ©{Ä Ë{º Å »º Ú›"!'`Àßö!þ‚Œ"þ‚Øú ú þ Ø)æÜ$à×¶Àߤçµß߃߃߃¿c߃é߃¨¨­µ6®Õ:Ç$Ö>EÀßçÃL߃Àßéú ú þ Ø)æÜ$à×¶ÀßÑëòáÀߟÐL߃ÀßÐLú ú þ Ø)æÜ$à×¶Šçééïé Êç³߃–ú 8ú ú þ Ø)æÜ$à×¶¥“ó³ñ 8݆öø؆™‡¶û؆™‡ï؆™‡•˜ 8Þ—߇̘߇œö߇ÇL ÃÇL߃ر±éD´ùÚ D`¢ØÃ¯Ä08æê³½ˆùM±±éD´ùÚ D`¢ØÃ¯Ä0ÃæêÃM½ˆòP½ˆ¿c½ˆ³µµÒ
¸ùÚ ñfnb…ÊÎÝéòáùMæ‰ÃMæ‰òP承cæ‰ùM¹¹‹M½ùÚ øúU¾½³ð´8æêçÃMÏŠòPÏŠ¿cÏŠùM¾¾åMÃ±Ú ÄÔÚ ™ÄÂ5JæG8æêïéòP²‹ØÅÅ•‹ÊùÚ Ë¹
Ú _„$FËàä`8ŠçééïéùMÅÅ•‹ÊùÚ Ë¹
Ú _„$FËàä`Êçééïé¿c‘ŒòP‘ŒØÌÌÙ‹ÑùÚ Ò¹
Ú …Ø–†Ãñç8ŠçééïéùMÌÌÙ‹ÑùÚ Ò¹
Ú …Ø–†ÃñçÊçééïéòPοcÎØÓÓ›ŒØùÚ ߟÖÚÈsž8ŠçééïéùMÓÓ›ŒØùÚ ߟÖÚÈsžÃŠçééïéòP¿cØÙÙôÞùÚ ¥ Æ 7ii8ŠçééïéòP°¿c°ùMÙÙôÞùÚ ¥ Æ 7iiÊçééïé¿c¨­®óO¯ˆ°±P²ˆh±¶)#‹j—8Šçééïé¿c¸¸ØP½ÔÚ k]3BП B8Šçééïé¿cÃèRÈÔÚ F9 !›Ànt8ŠçééïéÇLãž@q)$ØÍ/€ÀßòáÇL Ããž@q)$ØÍ/€ŠççÇL ó¿“Ø¿“¿c¿“¿cëïðóOñˆòóPôˆFÐWdÔæN8ŠççÌ샃ØP§ˆÅtÒæìše¾‚8Šçç Ε¿cΕ¿c¨R¡§¢£¨£€:X¦ßÎ8Šçç¿c®®‰©²ÖO?k`æ±8Šçç³¼¼éD¿ÔÀÚ5åTÉWªM°8ŠçùM¼¼éD¿ÔÀÚ5åTÉWªM°ÃŠçÃMÜ—òPܗئ˜¿cÜ—³ÚÚ×EÝÔÞÚ¼SvËcçM8ŠçùMÚÚ×EÝÔÞÚ¼SvËcçMÊçÃMòP¿c³ôô–­÷ÔøÚ)¨°¨6%œ‡8ŠçùMôô–­÷ÔøÚ)¨°¨6%œ‡ÃŠçòPӚ؞›¿cÓš³ŽŽÛ®ÔÚ/e‡§œ%08ŠçùMŽŽÛ®ÔÚ/e‡§œ%0ÊçòP‹œ¿c‹œ³¤¤Ò
§ÔÒÔŠÌ‹¹ÀßòáùM¸ÃM¸òP¸¿c¸ùMÀÀ‹MÄÔñ,yä4Åç8ŠççÃM¡žòP¡ž¿c¡žùMÙÙåMÞ±ßÔÇý!sº2Øq8Šçõ‹ïéòP„ŸØÔÕÖͼ×¹Øò¼xéƒi«ÕÐì៵ßáŸáŸáŸ¿cáŸùö¥¢¬©ºµÆÃúö¦¢­©»µÇÃûöý§¢®©¼µÁ¾ÈýíÛÿøÒËí寨øòæáóîÿ ú î±ÂÅÜÌöÓÙãÓ¼ôÙÔöÕ
ž
§¨ß
çú ËÑ
Ø
ýðÛø·ŸÙÃõåùË¡Æ¼Ž³òÉäáî¬ Ã ûô±µŸ¹µ¾ÇÅáÌûÓÙļâÚüôެ¤ÅÀàÙ°©ÛÔ±©É¨Ï
ú ÜÔ³©Ñ¨Õ
ú ÞÔ3©Ö¨üòÛ¼êá÷ŲÔËèÚúïÛ÷¾ Ö ûœ  ¢  ¨ £ ®  ´ ¾ Ù
ú ±šµ°¹ÓÅñÌŠÓ˜Ù³¨¾¸ÉÃçõ냤³®×¼ñÚô¡Ž¼¤ÕÀàÔ8 túéÛ©ŸÏû²¬ £ ŠƒýëÛ¬ŸÒÃÀ²± £ ƒÅÍø³ŸðåܨœÁ¼¯òÅßüáî¨ þ
ú ñ±µßÁ¼ßÚùôލ¤Ñ¯ŸÕÃÖ Á öÛøžÀŸâò׼ÂòØó á¥ î» Ò û±µ­¹¾¾ØÅíÌÓÙѼïÚôŸŽ¹¤ÒÀèÙŽø½ŸßíҼ¾òÔîá¡ î· Í ûý±µ©¹Î¼ìÚµ¤ÎÀâ¨ê¨Þ
ú é
ú ´
¨ã
ú ¼
¨Ä
¨Í
¨ð
ú ÷
ú Í Á Ò Á ƒ



ú  ú ¦ú «ú Š Æ
Û#Ø#ÇL
½ùM!;Ðìæµß¿c-5ºqÌì  ?Ã1³Œ"šòPÃMÒÙ¢ŒéÄcÃLÐLé!#ö!–úöø¶ûޗ̘œö  œ üî0 Œ\ %€€€€€€€€0x8080_8080_8080_8080Á´¦
 ¤¦ 
ÀÝ%ü†7  %”ß  ‰·œ·¯·UD@
ZàÝz ö ÷ üˆï  ²²ä® ÷²¾æ± ä±Ð6æ±*2汃ä±0æ±s@æ± 
&18< Group::WIDTHÁ 
&18< Group::WIDTHÁš  ÝÔ°  ,àÝüø]  Ô üÖ æ± Ý ²²EŽ,àÝ 
˜&18< Group::WIDTHÁ„÷ © ÿüÙ/ ,àÝñ %„Þ © ü¾1 -àÝØ %l‰ 4‰  $’   ”‰  š 
¡ .üÕL  àÝ :     Ê ”¾  Ï 
Ö /ü‡O  àÝ :ù!¤ST ñ"§S 
É#ÔS Œ $ 
"T† 
/.d† F  #íS   #ìS 
ù!ÆS2 
ØJ®´
»À
àW# 
Ý!øS  . !÷S 
l 4       ©    ® 
µ 0ü¶
 àÝ ØÔ°­àÝ®ÇÀ¿Gh
$¸
´À
„Á

2 Ð
4 12/by Ô
 'Á Õ
ô¸
@" 6MSϊ


  
  
 ð
 K 
 ö

Äà
 © ÷
  Œ 1üÆÆ ü­
_  àÝí  üüÔÅGþýü§\top7Ák˜D2O2üâ / ¼â 
‰ 
À*¬ü 
ϟ 
À*ev
¼ 
 ¬ 
ëÆ17¬Õ
 œÕ
™Ç ó
üà ² 2,× ë;´‚ 
¤‚ 
À-Ü‚  œ üæ 8r ~*̼ 
 ¼¼ 
ЦÉ&ü£ 3s #4ð4”ù4
 „ù4
Ë‚Àß'l®54®5
#$µ5
È‚14µ5 º5üÕ5ìØ5tØ54Ø5
#,ß5
É‚1<ß5 å5Wdé5s ô54ˆ6tˆ6
 ,6ÃÌ0<6 •6ÛWd¼6
 Õ6ü•5Ì Ã à6 æ6ç6|üÈ4Ÿüì4û à$Ý4èØèØ éØ²‚êØŸ²‚ªë¥CHÈ4  ôÎ
ÎËËÁÏÌÁÏ\ò¼}²,4‡Í  Ä\£Í  ÀßüÆÌs Àß‹ò”àÌžž³AŸÆA ÒA¡åAðe”?ûES ¸Í ¿Í¤ü¡ÌžâšA¤AœÚAi†bªñüzÀß‹ò$·Ì‹ò; PhantomDataÁFu\»ŸÀß[¥+Ѽ†Ð

¬†Ð
|Àß'üäÏ:©à\øÏ(,ÄÔ \ßÔ  ÀßüŠÔk ÀßòᔤÔÑ ôÔ ûÔªüÚÓ¡«á$ûÓòá,îÓòá¯ëÒ£¤CѤ…Ò

”…Ò
#üóÑ'Ñ$þÑ(üåÕoü•Ö0ü•Ö)ô•Ö¬•Ö 
œ•Ö
59F àÞ ©Öl
s4«Ö
„tàÝD«Ö ²Ö¯
D´Ö
áàÝÆT´Ö ½Öò
ù$¿Ö
ÂàÝ 4¿Ö ÄÖüþÕH
 ´þÕ
žT. ÅÖü‡Õ¦  ïÖ ¡× …× ¬× ²×³×üæÔÍÑ$øÔ§ ïíe¼îËè¿*: : àÝ; àÝ<î×<÷²E÷²NŒtrueÁfalseÁd‚… |£…
l£…
¤³ì/üï„N ¨Ýéãééé‹ò ¼… Ã…ü³„Ú¨¨­µ6®Õ:Ç$Ö>EÝéãééé‹ò$à„éédÌ„ééâšA¤AœÚAi†bªñüz³ì‹òTµ6fÞdéž ¼ŠŸ,›Ÿ 
$„ŠŸ
ª³ìïé:L  ŸüÖžV ¨Ýéãéééïé «Ÿ ²Ÿüž¥â¥é$Çžééd©žïé,ºžééâšA¤AœÚAi†bªñüz³ìïéAïéAµ6z¤|»ä§z4¼z
"¤§z
ÚÀß;L Âzüz? ú Àß‹ò ÍzÔzüÙy{ 
ú ú þ Ø)æÜ$à×¶Àß‹ò$€z4òy¨¨­µ6®Õ:Ç$Ö>EÀß‹ò9:º:aÇüÑ”&4é” ,ñ” 2
9¼Ñ”
âÀßçUFm ö” ü¹”I ú Àßç ˆ•üö“§
߃$ª”4’”ç,Ë„ûùçíº:0¤2q 
 
¤Àß,ü˜2 Àß‹ò É Ð ˜üó] ãž@q)$ØÍ/€Àß‹ò$‰ Ò´Q¼Ÿ& ,°& 
"„Ÿ& 
ªÀßòá8I µ& ü‡&: Àßòá À& Ç& ü×%p ¿“$ø% òá,ë% «áºòẤMÌØ
ö÷%òÛ18?ìú
ýþ%ÌÜ1òÛ9@¼‰ ¢£%Ý1ç‘ç‘è‘ uint8x8_tÁ鑈 õݖ亭sz¬u ©ª$àÝ07>Dé«  æê‹í“ó³ñ+§8 ¦§óO¨ˆ©ªP«ˆÛ-k<׌Eæê‹í“ó³ñ𲲨P¸§Ž¹QŽºŽ¥±£PUPÄãæê‹í“ó³ñöý4Þ®  æê‹í“ó³ñ+ª8«îDË˨RѧŽÒëRŽÓŽJò…ôËÙËæê‹í“ó³ñ §D™Û ÚÑõ×õÝõãõéõ1ã>ÚâãóOäˆåæPçˆì˜Ò—­YÑõ×õÝõãõéõ¦²²ØP¸§Ž¹QŽºŽ¥±£PUPÄãÑõÝõãõéõ
4Þ ÚÑõ×õÝõãõéõ1æ>ññJïïÒT÷§ŽøëRŽùŽ-2RY±¾ÈÑõ×õÝõãõéõ¬³DÖ\  æê‹í“ó³ñ*ž 7  ž óOŸ ˆ  ¡ P¢ ˆ"ø0ôÂw‚æê‹í“ó³ñ£ £ Ñp© Qõ
ª õ
« µ6õ
©B·á}ÂÞøæê‹í“ó³ñõü4õ_  æê‹í“ó³ñ*¡ 7ÄõC  öq¼ õ
½ µ6õ
âж^_Xæê‹í“ó³ñšD…“ ¨Šçééïé'®4¨­®óO¯ˆ°±P²ˆh±¶)#‹j—Šçééï鸸ØP½ÔÚ k]3BП BŠçééïéÒÙ4ò• ¨Šçééïé'±4óø@ÃèRÈÔÚ F9 !›ÀntŠçééïéD—È ëŠçç#ð0ëïðóOñˆòóPôˆFÐWdÔæNŠç犃ƒØP§ˆÅtÒæìše¾‚ŠççÞå4Î ëŠçç#ó0ëû<¨R¡§¢£¨£€:X¦ßΊçç˜A‡Žõ
º Ú ìîðÔí¤,‰¨òú óãžL‹ôÑõü¼*üLI This crate is a Rust port of Google's high-performance [SwissTable] hashÁüMOL map, adapted to make it a drop-in replacement for Rust's standard `HashMap`ÁÄ and `HashSet` types.ÁúüºJG The original C++ version of [SwissTable] can be found [here], and thisÁü…?< [CppCon talk] gives an overview of how the algorithm works.ÁÅúüÉ=: [SwissTable]: https://abseil.io/blog/20180927-swisstablesÁü‡c` [here]: https://github.com/abseil/abseil-cpp/blob/master/absl/container/internal/raw_hash_set.hÁüë>; [CppCon talk]: https://www.youtube.com/watch?v=ncHmEUmJZf4ÁA‡Žõ
º Ú ìîðÔí
¤
¨ò ú óãž ôÑ
õpsvÜ­ üÖ 30 Default hasher for [`HashMap`] and [`HashSet`].Á»íÔ üŠ "”¶ Ñë”üÒœ64C J   ç,   ¼8Œ+   ¥8â  ¤,   ¡, 8û$˜& œ8û$$ ¢
£ § , © ª ³, «8itÁ¬& ®8÷
´8
Ã8 Ê æ, Ô Õ ß, Ö8it2Á×& Ú8÷
à*é ì 8é  ü þ û  Œ8__itemsÁ< ¡ ¢% ¤, ² ³ Ñ µ Î · Â, ¸ ¹ ¿, º8û$ À
Á Ä Ì, Å Æ Ê, Ç8±‡È
Ë$ Ï
Ò à ð â ã å î, æ ç ì, è8šˆé
í$ ñ%  ¼ Ï8Æ+ É Ê à8âË Î ß, Ï Ð Ü, Ñ8i_metÁ& ×8û$ Ý
Þ â ó, ä å ð, æ8i_itÁ& ë8÷
ñ, ý þ È88+   «8â  ª, š  §, œ8e_metÁ,& ¢8û$ ¨
© ­ ¾, ¯ ° », ±8e_itÁ& 8÷
¼
É*Ñ Ô 8é  ä æ   ô8ûˆ  Š% Œ š  œ ¨,  ž ¥, Ÿ8Œ, $ ¦
§ ª ´, « ¬ ², ­8åŒ
³$ ·, Å Æ ç È ä Ê Ö, Ë Ì Ó, Í8ü$ Ô
Õ Ø â, Ù Ú à, Û8ÔŽ
á$ å
è ö þ ø ù û ü$ ÿ%  Ò ï Ó8ûˆ Ü ë, Ý Þ é, ß8
à& ã8û$ è
ê% í*ñ ô õ% ö ü È  ý8ûˆ  ,  ˆ , 8
Š& 8û$ 
%   ¹  ¨, œ  ¥, ž8¸ Ÿ&  8û$ ¦
§ ª ·, « ¬ µ, ­8±‡®& °8÷
$ º, ¼ ½ Æ, ¾8restÁ$¿& Ã8¯Ä
Ç*Ê Í ƒ
8é 4™
 Ÿ
 ¡
 Û
 £
8__applyÁ
8â¬
 ¯
 Ð
8£°
 ³
 Ï
, ´
 µ
 ¹
,
8¸ ·
$ ¸

º
8
¼
 ¿
 Î
8ºÀ
 Ã
 Í
, Ä
 Å
 Ê
, Æ
8
Ç
$ Ë

Ì
$ Ñ
, Ó
 Ô
 Ø
, Õ
8±‡Ö

Ù
8é  Ð  Ò  ý  Ô 8ûˆ  Ý  ï , Þ  ß  å , à 8
á $ ä 
æ , è  é  í , ê 8¸ ë $ ì 
î % ñ , ó  ô  ú , õ 8­– 
û %
 Í
 ì

 Î
8
, ×
8¸ Ø
& Ù
8û
$ Þ
, à
 á
 ê
, â
8±‡ã
& å
8÷

ë
*î
 ñ
 , û
 ü
 + ý
 þ
 , ÿ
8¸ , ƒ8±‡
% ޼Á»¨œª¬©ü   Ù  Ü ç, Ý Þ å, ß8¯à& â8¯ã
æ*é ì , ö ÷ û, ø8¯ù
ü\ÿ 'î´<5ö:î´÷:µ\bý<µþ<–¹,z¢= ƹ©?ƹª?±\5@\<ö÷ýþîµ\
  "”%
Š  #ŶŒ9
 
$±¶dL
Œ %›¶tZ
 &d
pr^`LN9;&(d§
òÛü¨ "
.\€
òÛòÛ

üÚ
"
.\Ê
ŒÝ
 òÛòÛ

üÿ '
\
òÛ
$™
ü›
3
òÛÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ
$¸
üÏ+

òÛ

ü–?
´™
 ô ô õ ¨÷ ˆÐ  mjçítoé
nonzeroÁ<°
ü¶*

òÛ

ì¥
òÛÈLÉLÊL



ÌÜü!
L“
òÛÌÜ
$
ì®
ÌÜúMûM
$×
üø#

â âÌ܈¤ 

$…
L
,–¹
¢ îµ
"”ý
Š#ŶŒ‘
$±¶
Œ%›¶
&΀
¡„¾

ƒqsacPR?A<ª×  `')í ë'*$ $&D àÝ,-./01ÜÙ  ++àÝì¾  ++àÝüÕ)  àÝ++
.g8ü‡, T àÝ++ò½ì7ü¶2 „Ê àÝ++
0,6üÆ*  àÝ++
1§4Ìà '¼ àÝ4Àc4ü­8 ° ãäå ãàÝ ä c cˆ¢cµ
 `£cbufÁ `àB¤GS
åÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈErrorÁ O˜éBL3 ´ 3
4 ± » ä¢  55Îì¦Éü¢ê 5À°À°676767üó!  æ æ¦ÉàÝ5 ÿ 5
6¦É$„ ¢Š ÄÈ  ç ç¦É5 Ö 5
7¦É Ô àÞ969ü¼ D¿ è èàÞàÝ8 È 8
9 ¢Ó ´&ç $M¤YÉ ds¨ üM;œ x { <Œ[lqvyzÃÛøŸÃåüµ¾ÃËhandle_alloc_errorÁ” œAC 4.èØADµ\LýAF<µþAF<–¹,Y¢AG= ƹ`©AH?±\e5AI@£, Æ AK©{TÁ ALÓ4\± ANð AOû ŠAP¶¼ÔAQǸ&AR
FusedIteratorÁlŽòPASùÑATùÑATíÆëAU§AVž‰fAWhintÁ$ÿ AYµ AZ¦ fi] AllocatorÁLó1j^c™ñÄk_d™ñÅk_03$'t;òõßâÐÓŒwÅȸ»¯²¢¥˜´ÕÌ‚fÌ¡Y9”Ï-!,A`¦DR f]í¶L\1^c™ñ4gÄ_d™ñÅ_d\DSUEG46LỨœ­¬¬»ÔÃü¨6üŸA[f èØ`aí¶1c™ñ4
Äd™ñÅd§<
`eÜõ]¬Þ NPAC”’
&üÐ
Z
é éôÎÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ýÚgg ü
Í으 ç
1œ¼

fœ¼¤
ò¼4€ ,.íðÚÝü’?A Àß’¾¥mmÍìÀß ¨
lÀßtoÁ«÷ „ŠìÞopü€-ŒƒAìÞáŸnn
o$•üÏ 5AìÞôÎáŸnn
pò¼ü¿ œÅ AqqÍì¦É q´À´ÀrsrsÌæ  Aqq´£  AqqüÚ !¥uuµ¾ ß Àß
ÌA
v§$‡Íßxüø+Aê êÍßw w
x³\ü·NœºAàˆ¤
ycapÁÎ table_layoutÁdÚüœ/7¼Ÿ/A
z³\·/„£4à|~ÌÈ4Ñ4Aà{¥}}{µ¾ Õ4ÚÓ  üû6H¤þ6AàÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙôÎ{{
~$“7ä<™7¬÷=T>ÝÖA°æ…F☫°æ…F☫d“>,“>A¤ @4«@¥µ¾ ²@çàjùÜfB‚‹¨ƒ |²B²BA§ ïíe¼îËè¿*Àßü´C!¥µ¾ ÀCçà
ÜÚC¥µ¾ ßCçàˆÙˆ¼ŠD,Dë ëçàçà “D
ˆÀß$”DŒÌD¥ŠŠµ¾ ÑDçàŒŽ&(üßXA|éXAÝÇçà
ÀßbaseÁ$ùXÖ,YüÂu9lÌuAì ìçàÝÇ Úu
ŒÀß$ÛuøÉ$áuô¨í íçà Àß 
ÀßüÂ#Aî îçàÝÇ Ñ
ŽÀßüü¢.4†£Aï ïçàçà £
Àß$Ž£ž
4”£üÕ« $ê«ð ðçà ï«
Àß$ð«ü‡²%$œ²ñ ñçàÀß ¡²
Àß$¢²ü׸),ì¸ò òçàÀß ò¸
Àß$ó¸¹ù¸ü»»(4É»ó óçà ÃÀßà Ի
ÀßÃ$Õ»лüÔÁ,4âÁô ôçà ÃÀßà íÁ
ÀßÃ$îÁéÁüÑÂ-DÜÂ¥˜˜µ¾ åÂÍìòá¬èÂ1òáLë«ái†bªñüzšœÔHJC è‹ò¤…Ã,…ÃAÑDŸÃ,ŸÃAòá´ÜÃ4ÜÃAëÒ¤Ål”ÅAÑðe”?ûESžŸ ¡Æ\ÆAŒ˜Ç$˜ÇAýÚ”€È\€ÈAdÛÈ,ÛÈAÜìÈ¥££µ¾ ñÈÒ¤¥Ô¡Ì®ÌÒ¢¢íçüÏÎ-lÖÎÒ¢¢
¥Àß¼DäÎü¹Ï$¥§¨¨§µ¾ ¾ÏÓ ÁÏ“ÓLÄϫᩪ«¬­®¯°±²³´µ·¸º¼¾ÀÄÇÉËÍÑÒÕ×Ùàçïðñòóôõö÷øùŸüäÏdêÏA¦¦àüÚÓ%4çÓòá«á¦¦Èé¤Bü±ÖŒ»ÖAòáìÞÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
«á៦¦
«Àßòá¤,ÖÖä<èÖ fallibilityÁ\€×ü®Û:„µÛòá«á¦¦
¬Àßòá¼DÆÛ¤,×ÛìáÝLèÝõ õ«á õòᦠòݦ
­Àßòá$óÝü¾á$DÅáö ö«áÝǦ Îá¦
®Àßòá$ÏáüŠï&|‘ï÷ ÷«á¦ ¡ï¦
¯Àßòá$¢ïü°ñ>d¾ñøù ø«á ùçঠËñ¦
°Àßòá$ÌñÅ4ÒñüÑû64ßûú ú«áçঠæû¦
±Àßòá$çûÖ,íûü¾4Aûü û«á üçঠ֦
²Àßòá÷üì/ý ý«áçঠ¦
³Àßòá$…÷$‹ü—“C4¥“þ þ«áçàÀߛƦ ¬“¦
´Àßòá$±“÷$·“ü…–RdŒ–ÿ ÿ«áÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÀߦ ™–¦ÍìÎã´³–“"Îã Àߌ¸–Îããä˜"$Å–
µÀßòáÎã$ž–§$¤–¯–qsü¦™l­™ «á¦ »™¦
·Àßòá$À™¼øš,ÿš «á¦ …›¦
¸Àßòá$Š›¸<closure_kind>Á¹<closure_signature>Á¹<upvars>Á¹¹¸¹Àßòá  «áüРHL× ƒ ƒ«áí¦í»» á ¦Íìíè”…¡"íè ÀßlŠ¡íè¼é˜"”¡
ºÀßòáíè$æ min_sizeÁDì º:4ý z|ü»H<–» «áíè¦í½½ ž»¦šé”Ä»"íè ÀßlÉ»íè«ë˜"Ó»
¼Àßòáíè$£»
additionalÁT©»º:4¼»|~üÇŠ\Π«áíèÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
áŸ¦í¿¿ 㦚错È"íè ˆÀßlžÃˆíèïí˜"¨Ã
¾Àßòáíè$èÂ÷êTöº:4‘ÃsuüÓɲtÝÉA «áíèìÞÜì¦íÁÁ õɦšé”«ÊŠ"íè ŠÀßl°ÊŠíèÛï˜"ºÊ
ÀÀßòáíè$úÉ÷êTˆÊº:4£Ê¥Ú\ÇÊ}tÂÏÀ±æÂÊæÂèæÂÂÀÂÀßòáíè Ñ íè,ùÐÀ±æÃÊæÃèæÃÃÀÃÀßòáíè³ÛüïÙ¨4ùÙA «áíèìÞÜì¦íÅÅ ‰Ú¦šé”½ÚŒ"íè ŒÀßlÂÚŒíèÈó˜"ÌÚ
ÄÀßòáíè$ŽÚ¼DœÚº:4µÚ¥Ú\ÙÚ|~töÞıæÆÊæÆèæÆÆÄÆÀßòáíè²ñËñüÏáV4Öá «áÀßíèçà¦íÈÈ Ýᦚ锅âŽ"íè ŽÀßlŠâŽíè§ö˜"”â
ÇÀßòáíè$âá§$èá»,óáº:4ýá{}üéíYdðí «áÀßíè ÀߦíÊÊ ýí¦šé”¥î"íè Àßlªîíè¥ø˜"´î
ÉÀßòáíè$‚î§$ˆî»,“îº:4î{}ü‰ø}œ—ø «áçàõ‹¦ÌÌ ®ø¦Íìõ‹ «ø–"õ‹Àß´ïøõ‹™ú˜"ÓãLüø
ËÀßòáõ‹$³øÅ4¹ø± Ìø_aüíÿ¹Äôÿ «áÎãíÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
çà›Æ¦ÎíÏÎÏ –€¦Áä´Ä€Íì±û”쀓"Îã ÀߌɀÎãëü˜"$Ö€"±û Àßlñ€±û¬ý˜"û€
ÍÀßòáÎã±û$›€§$©€À€º:4ä€ÒÔÍÏ<¤‡Í±æÐÊæÐèæÐÐÍÐÀßòáÎã±û Îã «áüÈ‹[tÖ‹ «á›ÆÀßçঠ勦
ÑÀßòá$ê‹§$ð‹slotÁ$û‹»,ŒüÃŽR$ÊŽ «áÎãÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙçà¦ÓÓ ÏŽ¦Áä´éŽ“"Îã ÀߌîŽÎãü˜"$ûŽ
ÒÀßòáÎã$ÐŽ§$ÖŽåŽqs<»“Ò±æÔÊæÔèæÔÔÒÔÀßòáÎã–ÿ¢ÿü®–Fµ–˜ ˜«áÎãÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ˜ÀߦÖÖ ¹–¦Áä´Ï–“"Îã ÀߌԖÎãš…˜"$á–
ÕÀßòáÎã$º–§$À–Ë–qsüR<”™š š«áÎãÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ šÀß¦ØØ œ™¦Áä´¶™“"Îã Àߌ»™Îã·˜"$È™
×ÀßòáÎã$¡™§$§™²™qsü¢Ÿœd©Ÿœ œ«áŸÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ œÀߟ¦ŸÚÜÜÚ ÏŸ¦Ÿt¶ŸÍìöˆ쀠“"öˆ ÀßÄ… öˆ¸Š˜"$™ 
ÙÀßòáŸöˆ$ÔŸhashesÁ4âŸüŸ ¼ŸˆŠ,ó£Ù±æÞÊæÞèæÞ
'¥êêµ¾ ˜…
Ââ  ü·…
'¥ììµ¾ Ã…
Ââ  üã…
!¥îîµ¾ è…
ÂâïÙï¼¼†
,¿†
é éÂâÂâí ņ
í
ïÀß$Ɔ
ü–ˆ
$¥ññµ¾ ›ˆ
ÂâòóõúMûMÿMõó&(LÁˆ
$ƈ
ððçàüމ
'$‘‰
ê êÂâõ€ð –‰
ð
óÀß$›‰
$šŠ
üÅŠ
-LÈŠ
ë ëÂ∤ð ÒŠ
ð
õÀß$ÓŠ
ü÷
)¥÷÷µ¾ ü
Ââ  ¬Á”
<Ì”
¥ùùµ¾ Ô”
Çãé9qeZïhúû!#üÝ”
$è”
øøÂâdƒ•
,ĥ
Aøø””•
¥ýýµ¾ ™•
Çãþ ü­•
"l·•
Aì ìÇãü Å•
ü
þÀß$Ê•
äÝ–
¥µ¾ â–
ÇãÙ¼±—
,´—
í íÇãÇãÿ º—
ÿ
Àß$»—
ô°˜
¥ƒƒµ¾ µ˜
Çã´¤†™
<‰™
Çã
Àßü š
¥µ¾ ¥š
Ç㈊úMûMÿMóNŠˆ13LÆš
$Ëš
çàü“›
'$–›
î îÇãõ€ ››

ˆÀß
,ƒž
üýž
-L€Ÿ
ï ïÇã†ñ ŠŸ

ŠÀß$‹Ÿ
üíŸ
l$ðŸ
Çãõ‹­ùŒŒÍì­ù õŸ
üù øŸ
ÍìÇã,­ 
“"õ‹­ùÇãúMÌ¿ 
õ‹ ú˜"­ù × 

Àß­ùõ‹$ûŸ
initÁ$ 
± Š 
ˆŠŒŽü¥¡
(¥µ¾ ª¡
Çã  üÑ¡
$¥µ¾ Ö¡
Çã  üâ§
$”ô§
¶ä¢e ¶ÜìãAÔ„©
l„©
AÌÜÄšª
Œšª
AŒ¨«
$¨«
AýÚdè«
,è«
A¼ù«
¶ä˜ü²°
/L¼°
Að ð¶äˆ¤ ư

˜$˰
üýÀ
$¶äšœúMûMÿMœL¨Á
$­Á
ü©Ã
#$¬Ã
ñ ñ¶äˆ¤ ±Ã

$¶Ã
ü¤Ç
-L§Ç
ò ò¶ä†ñ ±Ç

œ$²Ç
ü„È
-¶äüµÈ
)¶äüÉ
0\¨É
¥ ¡¡ µ¾ ´É
Ó¬·É
“ÓLºÉ
¢åÑ\ÈÝß^q¢£¤²8:< ·É
‹ò„ÔÉ
$ÔÉ
AŸŸÇãüêÉ
,TêÉ
AŸŸñ¡´œÊ
4œÊ
AŸŸëÒü·Ê
'¥¦§¦§µ¾ ¼Ê
Ó ¿Ê
“ÓLÂÊ
¢å¨ "$ü–Ë
$Ë
ó ó¢åÇ㥠¢Ë
¥
¨Àßòá$£Ë
üÜË
W¥ª«ª«µ¾ èË
Ó ëË
“ÓLîË
±£$¡Ì
ã$®Ì
¢å-/13ü¸Ì
W¥­®­®µ¾ ÄÌ
Ó ÇÌ
“ÓLÊÌ
¼¤$ýÌ
ͤ$ŠÍ
¢å-/13üûÐ
0»¨œäÐ
¬ãÐ
üÚÐ
¥°±°±µ¾ €Ñ
Ó ƒÑ
“ÓL†Ñ
¢å²"²&(*,”ãÑ
$æÑ
ô ô¢å¯ ëÑ
¯
²Àßòá$ðÑ
üÔ
3¥´µµ´µ¾ •Ô
Ó ˜Ô
“ÓL›Ô
¢å´&(*,¤ÊÔ
<ÍÔ
¢å³³
ÀßòáüçÕ
4¥¸¹¸¹µ¾ ìÕ
Ó ïÕ
“ÓLòÕ
¢åº»¼úMûMÿM»¼8:<>L¢Ö
$§Ö
··ÀßüçÖ
$êÖ
õ õ¢åÓã· ïÖ
·
»Àßòá$ôÖ
üÔ×
-L××
ö ö¢å†ñ· á×
·
¼Àßòá$â×
ü«Ø
=¥¾¿¿¾µ¾ °Ø
Ó ³Ø
“ÓL¶Ø
¢å!üìØ
9¥ÁÂÁµ¾ ñØ
Ó ôØ
“ÓL÷Ø
¢å!üòÙ
1DýÙ
ÃĥůÄÅÆÍìŠç ŠÚ
Íìç¬Ú
1çLÚ
ŠçÃüšÝ
'çÃÃÛ0ÇùAÈAÉÓ0AÊÚAâPºA…ÊççâPºA…ÇÈÉÊØ†Ú
ÇÉÂ Ú
‹ò„ªÚ
$ªÚ
AÃÃøøÐ+úùûåAé9qeZïhŠç¤õÛ
,õÛ
AÃÃÑüÜ
"TÜ
AÃç ïíe¼îËè¿*Ñs4šÝ
AÃÃùÑFu\»Ÿ ÃâšA¤AœÚAi†bªñüzŠççüÆÝ
(8÷¥ÌÍÌÍ÷’Ž ËÝ
¤Ž ÎÝ
¶ŽLÑÝ
·æÎ "$ü¦Þ
$­Þ
ø ø·æŸË ²Þ
Ë
Î8Šçç$³Þ
üìÞ
X8ù¥ÐÑÐùÑ’Ž øÞ
¤Ž ûÞ
¶ŽLþÞ
ÌìŠç$²ß
Ììç$¿ß
·æ?ACEüÉß
X8ú¥ÓÔÓÔú’Ž Õß
¤Ž Øß
¶ŽLÛß
 Šç$à
 ç$œà
·æ=?ACü§à
18û¥Ö××ûÖ’Ž ¬à
¤Ž ¯à
¶ŽL²à
·æØ"Ø&(*,á
$“á
ü ü·æÕ ˜á
Õ
Ø8Šçç$á
üÿä
58ý¥ÚÛýÚÛ’Ž „å
¤Ž ‡å
¶ŽLŠå
·æÜÝÞúMûMÿMÝÞ8:<>L»å
$Àå
ÙÙŠçü€æ
$ľ
þ þ·æÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙŠçÙ ˆæ
Ù
Ý8Šçç$æ
üžç
-L¡ç
ÿ ÿ·æ†ñÙ «ç
Ù
Þ8Šçç$¬ç
üõç
>8¥àáàá’Ž úç
¤Ž ýç
¶ŽL€è
·æ!ü·è
:8¥ãäãä’Ž ¼è
¤Ž ¿è
¶ŽLÂè
·æ!Ìžð
\©ð
¥ææµ¾ µð
Á蓦h§b¢
žçè!#¼¾ð
,¾ð
AååÔç¼Ûð
<Ûð
AååëÒ´‹õ
¥êêµ¾ õ
Áèë üÙõ
Fãõ
A «áÁèéìì üõ
éÓ çõ
“ÓLêõ

ëÀßòá,õõ
§$ö
-/ü«÷
¥îîµ¾ °÷
ÁèïÙ#ø
,†ø
ƒ ƒÁèÁèí Œø
í
ïÀß$ø
üˆù
"¥ññµ¾ ù
Áèò´ò¤âù
<åù
Áèðð
òÀ߬Ûû
Ôçôü¨ü
7²ü
A ÑÔçó ½ü
ó
ô,¶ü
§$Íü
ü€€ #¥ööµ¾ …€ Áè÷øúMûMøLª€ $¯€ õõçàüÆ€ '$É€  Áèõ€õ ΀ õ
øÀß$Ó€ üß„ "ÔçúûúMûMûLˆ… $ ùùü … ($£…  ÔçÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÔçúMù ¨… ù
û$­… üØŒ 3dêŒ Ãý¥þÿÿýþ’Ž ûŒ ¤Ž þŒ ¶ŽL ÆŽü¬ !׎
üüÐ3ù+xS
;jà
Êçç+xS
;jà
÷Œ ˆŠŒޤ’ $– üüŸ£,° üü È’üÒ ,8¥ƒƒ’Ž × ¤Ž Ú ¶Ž üüÐ3ù+xS
;jà
8Šçç[]_aü¶Ž c$ÄŽ  ªª­ñ«š ÌŽ Íì­ñ ÉŽ ˆ“"­ñ ˆŠç¬ƒ ˆ­ñ¬˜"$” 
8Šçç­ñ$ÑŽ ± ÛŽ moD•$™ˆŠ»¨œª¬©ü  
ˆü¡%»¨œø¬÷üî 
­ üÍ'»¨œ¤¬£üš 
Š­ äü¢3£Ì¥ŒŒµ¾ ¼
ÀßaddrÁ$¿Ä ¤¤¾¨¼ÂÇò¼áîû ²ËÚïÖ
í¶L1Žj^cõ4!Ž™ñ4)ÄŽk_d™ñÅŽk_d›0D1ÃŽÐ3d;üŽˆ.\IŸŽÐ+<VøŽâD_ŽÎ”xŽÑŽšõ¶¼ÔŽY4¼ Žœ× `Žžp,Ú¿cŽŸpÂcŽŸ\\óÅeŽ¡Ž$€šeޢޠeŽ¢­µl—òPŽ£ùÑŽ¤ùÑŽ¤íÏ뎥IndexÁ,ãÙ¢Ž¦¢o”­B §ìo\¤Y §ÑpœÎo£ §öqŒë §Çr|ò‰¾ §TloVYGJõøçêÙÜ,pÎÑÁÄ®±¤®¤ÎŒlo]`Ì‹=̪.
„Ø÷„‘ü›4Gü§B? A hash map implemented with quadratic probing and SIMD lookup.ÁêúüîKH The default hashing algorithm is currently [`foldhash`], though this isÁüºLI subject to change at any point in the future. This hash function is veryÁü‡OL fast for all types of keys, but this algorithm will typically *not* protectÁü×$! against attacks such as HashDoS.Áüúü€LI The hashing algorithm can be replaced on a per-`HashMap` basis using theÁüÍPM [`default`], [`with_hasher`], and [`with_capacity_and_hasher`] methods. ManyÁüžQN alternative algorithms are available on crates.io, such as the [`fnv`] crate.ÁðúüôSP It is required that the keys implement the [`Eq`] and [`Hash`] traits, althoughÁüÈNK this can frequently be achieved by using `#[derive(PartialEq, Eq, Hash)]`.Áü— GD If you implement these yourself, it is important that the followingÁœß  property holds:Áó ú ```textÁüƒ
$! k1 == k2 -> hash(k1) == hash(k2)Á
 ```Á°
úü´
FC In other words, if two keys are equal, their hashes must be equal.Áû
úüÿ
MJ It is a logic error for a key to be modified in such a way that the key'sÁüÍ PM hash, as determined by the [`Hash`] trait, or its equality, as determined byÁüž KH the [`Eq`] trait, changes while it is in the map. This is normally onlyÁüê NK possible through [`Cell`], [`RefCell`], global state, I/O, or unsafe code.Á¹
úü½
OL It is also a logic error for the [`Hash`] implementation of a key to panic.ÁüNK This is generally only possible if the trait is implemented manually. If aÁüÜPM panic does occur then the contents of the `HashMap` may become corrupted andÁü­-* some items may be dropped from the table.ÁÛú # ExamplesÁîúϽÜú use hashbrown::HashMap;ÁúüšDA // Type inference lets us omit an explicit type signature (whichÁüß;8 // would be `HashMap<String, String>` in this example).Áü›*' let mut book_reviews = HashMap::new();ÁÆúÌÊ // Review some books.ÁÄä book_reviews.insert(Áüý52 "Adventures of Huckleberry Finn".to_string(),Áü³(% "My favorite book.".to_string(),Á );ÁÄãÔÆüü*' "Grimms' Fairy Tales".to_string(),Áü§# "Masterpiece.".to_string(),ÁæÇÄÒÔÆüë*' "Pride and Prejudice".to_string(),Áü–&# "Very enjoyable.".to_string(),ÁæÇÄÄÔÆüÝ85 "The Adventures of Sherlock Holmes".to_string(),Áü–)& "Eye lyked it alot.".to_string(),ÁæÇÇúüË  // Check for a specific one.ÁüìFC // When collections store owned values (String), they can still beÁü³'$ // queried using references (&str).ÁüÛ63 if !book_reviews.contains_key("Les Misérables") {Áü’HE println!("We've got {} reviews, but Les Misérables ain't one.",ÁüÛ%" book_reviews.len());Á,úü‹IF // oops, this review has a lot of spelling mistakes, let's delete it.ÁüÕ=: book_reviews.remove("The Adventures of Sherlock Holmes");Áúü—41 // Look up the values associated with some keys.ÁüÌMJ let to_find = ["Pride and Prejudice", "Alice's Adventure in Wonderland"];ÁÜš for &book in &to_find {Áü¶&# match book_reviews.get(book) {ÁüÝ=: Some(review) => println!("{}: {}", book, review),Áü›74 None => println!("{} is unreviewed.", book)ÁõÍãúüçHE // Look up the value for a key (will panic if the key is not found).Áü°IF println!("Review for Jane: {}", book_reviews["Pride and Prejudice"]);Áúúüþ // Iterate over everything.Áüž)& for (book, review) in &book_reviews {ÁüÈ-* println!("{}: \"{}\"", book, review);ÁõÍϽúüˆKH `HashMap` also implements an [`Entry API`](#method.entry), which allowsÁüÔPM for more complex methods of getting, setting, updating and removing keys andÁŒ¥ their values:Á·úϽÜïÄßúüãDA // type inference lets us omit an explicit type signature (whichÁü¨ 52 // would be `HashMap<&str, u8>` in this example).ÁüÞ *' let mut player_stats = HashMap::new();Á‰!úü!! fn random_stat_buff() -> u8 {Áü¯!KH // could actually return some random value here - let's just returnÁüû!# // some fixed value for nowÁTŸ" 42Á,ª"õͰ"úü´"41 // insert a key only if it doesn't already existÁüé"0- player_stats.entry("health").or_insert(100);Áš#úüž#IF // insert a key using a function that provides a new value only if itÁäè# // doesn't already existÁü…$C@ player_stats.entry("defence").or_insert_with(random_stat_buff);ÁÉ$úüÍ$DA // update a key, guarding against the key possibly not being setÁü’%;8 let stat = player_stats.entry("attack").or_insert(100);ÁüÎ% 
*v = "b";Áü‡ê@= assert_eq!(map.get_key_value_mut(&1), Some((&1, &mut "b")));ÁüÌê0- assert_eq!(map.get_key_value_mut(&2), None);Á<ëϽŒ¢ë²³ ²¥é ³óÛÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ²Ýé ²ãéõ¢ŠŠ ·ëõŒÝ ´ëžÝ$öë¯Ýlýë
ÝéãéééïéóÛ$¼ë ÂëACü©ó`üñíEB Returns `true` if the map contains a value for the specified key.Á»îúüÃî?ìÝü‡ïC¶ÞŒÏïƒßåïúüíï;«àü­ð@ðàòðútúðÿÃñú<•ñϽÜ¡ñ¯ÄÁñúüÉñ!Üмïñ©àü‹ò+( assert_eq!(map.contains_key(&1), true);Áü»ò,) assert_eq!(map.contains_key(&2), false);Á<ìòϽd°ó´µ ´¥é µóÛõ¢ŒŒ ÀóõŒÝ ½óžÝ$ëó¯Ýlòó
ÝéãéééïéóÛ$Áó ÇóACü·úiü¿ôFC Returns a mutable reference to the value corresponding to the key.ÁŠõúü’õ?ìÝüÖõC¶ÞŒžöƒß´öúü¼ö;«àüüö@ðàÁ÷útÉ÷ÿÃÜ÷ú<ä÷ϽÜð÷¯Äøúü˜ø!Üм¾ø©àüÚø&# if let Some(x) = map.get_mut(&1) {ÁŒ…ù *x = "b";Á,›ùõÍì¥ù assert_eq!(map[&1], "b");ÁÇùúüÏù&# assert_eq!(map.get_mut(&2), None);Á<úùϽ<¾ú· ¥é ·óÛÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ãéõ¢ŽŽ ÉúõŒÝ ÆúžÝ$‚û¯Ýl‰û
ÝéãéééïéóÛ$Îú ÔúACüöüplùüޏ¹ ¸¥é ¹óÛÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¸³ìõ¢ ŠýõŒÝ ‡ýžÝ$Èý¯ÝlÏý
ÝéãéééïéóÛ$ý •ýACüÄŽŒüÀÿHE Attempts to get mutable references to `N` values in the map at once.Áúü•€]Z Returns an array of length `N` with the results of each query. For soundness, at most oneÁü÷€_\ mutable reference will be returned to any value. `None` will be used if the key is missing.ÁÛúî±ôúüü'$ Panics if any keys are overlapping.Á¨‚út°‚ÿÃÂú<Ë‚ϽÜׂ¯Ä÷‚úüÿ‚'$ let mut libraries = HashMap::new();Áü«ƒ;8 libraries.insert("Bodleian Library".to_string(), 1602);Áüëƒ41 libraries.insert("Athenæum".to_string(), 1807);Áü¤„JG libraries.insert("Herzogin-Anna-Amalia-Bibliothek".to_string(), 1691);Áüó„>; libraries.insert("Library of Congress".to_string(), 1800);Á¶…úü¾…)& // Get Athenæum and Bodleian LibraryÁüì…52 let [Some(a), Some(b)] = libraries.get_many_mut([Á¤¦† "Athenæum",ÁÜ¿† "Bodleian Library",ÁÌ߆ ]) else { panic!() };Áý†úü…‡96 // Assert values of Athenæum and Library of CongressÁüÇ&# let got = libraries.get_many_mut([Á¤î‡®‡ô‡ˆ "Library of Congress",Á<ªˆ ]);Á|¶ˆ assert_eq!(Ádʈ got,ÁLÛˆäéˆ Some(&mut 1807),Á䊉 Some(&mut 1800),ÁT«‰ ],Á4º‰æÇʼnúü͉" // Missing keys result in NoneÁüô‰&戤ŸŠ®‡ü¸Š" "New York Public Library",Á<ߊ̉|ëŠ݉dÿŠö‰LŒŠäž‹ŸŠ„¿‹
NoneÁLÔ‹4â‹æÇ<í‹Ͻù‹úœŒ ```should_panicÁÜ™Œ¯Ä¹ŒúüÁŒ'ÙƒüíŒ4Ñ„¦úä® // Duplicate keys panic!ÁüÏ&戤ú®‡¤“Ž®‡<¬Ž̉<¸ŽϽdËŽº» º¥é 
tåŽÎ±æÏÊæÏèæÏÏÎÏÝéãéééï鮳 ãé ¥éαæÐÊæÐèæÐÐÎÐÝéãéééï鶈 ³‰ ü­tœÒ§Ó¤ÔÕÒÔÕÓ çñ ²øñ µ‰ò ¸šò »ɯæÚ¯ãéøøø«òL—¥éY[]_acegü§bœ×§Ø¤ÙÚÚÙרçñ ¬øñ ¯‰ò ²šò µ¿cÝé¿cãé«òLÿ¥éÛÀcÛZ\^`bdfhü8“‘ÔÕÖ Ô¥é Õ c cˆ¢cµ
 `£cÔ­ `àB¤GS
Öû®Ö —‘Ö
ÛÝéãéééïé$˜‘± ž‘üˆ’bœÝ§Þ¤ßàßÝÞàçñ øñ ‰ò “’šò –’³éé<Æ’³ïé<Ö’«òLà’¥éá´áZ\^`bdfh¤ÿ—üñ’b_ Creates an empty `HashMap<K, V, S, A>`, with the `Default` value for the hasher and allocator.ÁØ“útà“ÿÃó“ú<û“Ͻ܇”¯Äü§”0- use std::collections::hash_map::RandomState;ÁÜ”úüä”LI // You can specify all types of HashMap, including hasher and allocator.Áüµ•52 // Created map is empty and don't allocate memoryÁüï•74 let map: HashMap<u32, String> = Default::default();Áü«–"üÒ–DA let map: HashMap<u32, String, RandomState> = HashMap::default();Áü›—"<—Ͻ<‚˜¥éÜÜ
áÝéãéééïéüä˜8לã¢ä§å¤æçãçäæ×å Íý é˜Îìƒë ì˜Íììê ï˜Íìòê ò˜Íìøê õ˜æê§™šeæê$¬™šeƒë$¹™ƒëæêlÀ™Åeòê\ß™1øêLó™®êèéۢܢéÍÏÈÊÞÀ¹»\„š4‰šââìêôðüššGD Returns a reference to the value corresponding to the supplied key.Áæšúdîšî±ÿšúü‡›63 Panics if the key is not present in the `HashMap`.Á›útÊ›ÿÃÝ›ú<å›ϽÜñ›¯Ä‘œúü™œA> let map: HashMap<_, _> = [("a", "One"), ("b", "Two")].into();Áßœúüçœ! assert_eq!(map[&"a"], "One");Áü! assert_eq!(map[&"b"], "Two");ÁϽØÙ Ø®ê Ùƒë Øìêâ ùâ
é8æêƒëìêòêøêëR€žü¼ŸŒ»íÔŸŸü™Ÿ"œë§ìíŸîìîíëçñ ÁŸøñ ÄŸ¤Ž ÇŸŸtÊŸɯ¢ Ú¯$§ ³ç<´ ¶ŽL¾ ‘ëðëðacegikg Пü¹¢!tÏ ÿÃâ ú<ê ϽÜö ¯Ä–¡úüž¡/, let map1 = HashMap::from([(1, 2), (3, 4)]);ÁüÒ¡63 let map2: HashMap<_, _> = [(1, 2), (3, 4)].into();ÁÜ¢ assert_eq!(map1, map2);Á<­¢Ͻ$¼¢²ì‘ëêê
ðÝéãéçŸarrÁÁ¢Ì…ªüˆ£C@ An iterator over the entries of a `HashMap` in arbitrary order.ÁüÌ£2‹åÿ£úüƒ¤KH This `struct` is created by the [`iter`] method on [`HashMap`]. See itsÁÜϤ documentation for more.Áë¤úüï¤-* [`iter`]: struct.HashMap.html#method.iterÁü¥$! [`HashMap`]: struct.HashMap.htmlÁÂ¥útÆ¥ÿÃÕ¥ú<Ù¥ϽÜ᥯Äý¥úü¦C@ let map: HashMap<_, _> = [(1, "a"), (2, "b"), (3, "c")].into();ÁŦúôɦ let mut iter = map.iter();Áüè¦>; let mut vec = vec![iter.next(), iter.next(), iter.next()];Á§§úü«§DÒèüð§@¡éı¨ðÔüʨLI assert_eq!(vec, [Some((&1, &"a")), Some((&2, &"b")), Some((&3, &"c"))]);Á—©úÜ›© // It is fused iteratorÁü·©" assert_eq!(iter.next(), None);ÁüÚ©"Ó§ <ý©Ͻ$ªÃóœô§õõóôÍý ™ªÞý œªæêÃüÁª#‹íúø5G®Ï&€uö÷•ªOQSU´¥ª,¥ªŽòòøøÐ+úùûåAé9qeZïh¦ÿ¦4ÁªŽòòùÑFu\»Ÿþþü «#8Úœù§úùÚúÍý ¥«Þý ¨«ÈìûÙû!#¼û«,þ«Û ÛÈìÈìø „¬ø
û8æê‹í$…¬üÿ¬68Üœý§þ
 `£cÔ­ `àB¤GS
ßû®ü íü
ÿ8æê‹í$Ä­± Ê­ä±µü¶®JG A mutable iterator over the entries of a `HashMap` in arbitrary order.Áü¯6˜í¸¯úü¼¯OL This `struct` is created by the [`iter_mut`] method on [`HashMap`]. See itsÁÜŒ°Ú¢ ¨°úü¬°52 [`iter_mut`]: struct.HashMap.html#method.iter_mutÁüâ°$Å£ ‡±út‹±ÿÚ±ú<ž±Ͻܦ±¯Ä±úüƱSP let mut map: HashMap<_, _> = [(1, "One".to_owned()), (2, "Two".into())].into();Áš²úüž²" let mut iter = map.iter_mut();ÁüÁ²96 iter.next().map(|(_, v)| v.push_str(" Mississippi"));Áüû²9³ µ³úܹ³­§ üÕ³"Ó§ üø³"Ó§ ›´úüŸ´DA assert_eq!(map.get(&1).unwrap(), &"One Mississippi".to_owned());Áüä´DA assert_eq!(map.get(&2).unwrap(), &"Two Mississippi".to_owned());Á<©µϽ<¼µÃœ§ƒƒÍý ȵÞý ˵â© üž¶'ó© 
ªùP…sôhæþëĵACEG´Ôµ,ÔµŽת g4ž¶ŽùÑFu\»Ÿ€ÿ Ëíü‚¸88àœ§ˆˆàÍý ޏÞý —¸Ììæê$‘¸Ìì‹í$š¸¤í68:<俸8ᜊ§áŠÍý ĸÞý Ǹ¤íŒüÖ¹+$ä¹â â¤íòòéDöÔŽ÷ÚŽ5G®Ï&€uâæê‹í é¹
Œ8æê‹í$ê¹ü­Ã0üîºJG An owning iterator over the entries of a `HashMap` in arbitrary order.Áü¹»*' The iterator element type is `(K, V)`.Áä»úüè»GD This `struct` is created by the [`into_iter`] method on [`HashMap`]Áü°¼MJ (provided by the [`IntoIterator`] trait). See its documentation for more.Áüþ¼52 The map cannot be used after calling that method.Á´½úü¸½74 [`into_iter`]: struct.HashMap.html#method.into_iterÁüð½$Å£ ü•¾QN [`IntoIterator`]: https://doc.rust-lang.org/core/iter/trait.IntoIterator.htmlÁç¾útë¾ÿÃú¾ú<þ¾Ͻ܆¿¯Ä¢¿úü¦¿CŤ ê¿úüî¿# let mut iter = map.into_iter();Áü’À>È¥ ÑÀúüÕÀHE // The `IntoIter` iterator produces items in arbitrary order, so theÁüžÁ@¡éÄßÁðÔüøÁFC assert_eq!(vec, [Some((1, "a")), Some((2, "b")), Some((3, "c"))]);Á¿ÂúÜí§ üßÂ"Ó§ ü‚Ã"Ó§ <¥ÃϽD¸ÃœŽ§Žçñ ÁÃøñ ÄÃ¤Ž¬ÇöŽLÊÚúõsY4è±ô:<>@B ÇËòìäÃ,äÃŽŸŸˆ.¢ùA£³.A¤ÚAÑ\ÈÝß^q³ìçü†Ä*œ§çñ ‹Äøñ ŽÄ¤Ž ‘ĶŽL”Äšú')+-/1ü«Å+$¹Åã ãšúòòéDöÔŽ÷ÚŽ5G®Ï&€uãÝéãé ¾Å
Ýéãéç$¿ÅüçÍ0üÂÆGD An owning iterator over the keys of a `HashMap` in arbitrary order.ÁüŠÇ%ࣰÇúü´ÇHE This `struct` is created by the [`into_keys`] method on [`HashMap`].ÁüýÇ# See its documentation for more.Áü¡È5„¾ ×ÈúüÛÈ74 [`into_keys`]: struct.HashMap.html#method.into_keysÁü“É$Å£ ¸Éút¼ÉÿÃËÉú<ÏÉϽÜ×ɯÄóÉúü÷ÉCŤ »Êúü¿Ê# let mut keys = map.into_keys();ÁüãÊ>; let mut vec = vec![keys.next(), keys.next(), keys.next()];Á¢Ëúü¦ËGö¥üîË?§ÔÄ®ÌðÔüÇÌ1. assert_eq!(vec, [Some(1), Some(2), Some(3)]);ÁùÌúÜýÌ­§ ü™Í" assert_eq!(keys.next(), None);Áü¼Í"äÍ <ßÍϽDòÍœ˜§š˜šçñ ûÍøñ þÍ¤Ž¬Î¶ŽL„Îòí£r7?&¿ãÀ:<>@B ΋òÄžÎ,žÎŽšúü»Î6œ§žŸŸžçñ ÀÎøñ ÃÎ¤Ž ÆÎ¶ŽLÉÎòí ´ /13579¤©Ï<¬Ïò휜
 ÝéãéçüˆÐ7œ¢§£¤¤¢£çñ Ðøñ Ð¤Ž “жŽL–Ðòí¥¦¨©úMûMÿMóN¨¦©LNPRTVLÆÐ$ËС¡ÝéüèÐ$ëÐä äòíÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÝé¡ ðС
¦Ýéãéç$õÐD¨Ñ¦±æ§Êæ§èæ§§¦§Ýéãéç³ìÝéüÌÑ-LÏÑå åòí†ñ¡ ÙÑ¡
¨Ýéãéç$ÚÑü³Òp$¶Òòí¨Î×
 `£cÔ­ `àB¤GS
éû® Ö
ºÝéãéç$‘Ö± —ÖD†×º±æ»Êæ»èæ»»º»Ýéãé篈 ®³üõÞ2ü²×IF An owning iterator over the values of a `HashMap` in arbitrary order.Áüü×%÷¨¢Øúü¦ØJG This `struct` is created by the [`into_values`] method on [`HashMap`].ÁüñØUR See its documentation for more. The map cannot be used after calling that method.ÁÇÙúüËÙ;8 [`into_values`]: struct.HashMap.html#method.into_valuesÁü‡Ú$Å£ ¬Úút°ÚÿÿÚú<ÃÚϽÜËÚ¯ÄçÚúüëÚCŤ ¯Ûúü³Û'$ let mut values = map.into_values();ÁüÛÛDA let mut vec = vec![values.next(), values.next(), values.next()];Á Üúü¤ÜGŽ«üìÜEà«IJÝðÔüËÝ74 assert_eq!(vec, [Some("a"), Some("b"), Some("c")]);ÁƒÞú܇Þ­§ ü£Þ$! assert_eq!(values.next(), None);ÁüÈÞ$Êæ <íÞϽT€ßœ½§¾¿¿½¾çñ ‹ßøñ Žß¤Ž¬‘ß¶ŽL”ßßî‰eR‰sN¯oÀ:<>@B ‘ß‹òÄ®ß,®ß޼¼šúüËß8œÂ§ÃÄÃÄÂçñ Ðßøñ Óß¤Ž Öß¶ŽLÙßßîÅ´Å/13579¤»à<¾àßîÁÁ
ÅÝéãéçüšá9œÇ§ÈÉÇÈÉçñ Ÿáøñ ¢á¤Ž ¥á¶ŽL¨áßîÊËÍÎúMûMÿMóNËÎÍLNPRTVLÚá$ßáÆÆãéüüá$ÿáê êßîÊÓÆ „âÆ
ËÝéãéç$‰âD¼â˱æÌÊæÌèæÌÌËÌÝéãéç¯Ö ãéüàâ-Lãâë ëßî†ñÆ íâÆ
ÍÝéãéç$îâüÇãp$ÊãßîÎ× ¨Î× ÆÏÐÐÏÆ‰Ø ÏãÕ ÒãÍìßî,‹ä“"¨Î× ßîúMÌä¨×ð ˜"Î× µä
ÎÝéãéçÎ× ¨$Õãèù$Ûã± èãlÜäαæÑÊæÑèæÑÑÎÑÝéãéçÎ× ¨§Ú ¹Ú üþäBœÓ§ÔÕÓÔÕçñ ƒåøñ †å¤Ž ‰å¶ŽLŒåßîÖÄMÖ/13579´ÕåØåì ìßîÒ ÜåÒ
ÖÝéãéç$Ýåüæ>œØ§ÙÚØÚÙçñ •æøñ ˜æ¤Ž ›æ¶ŽLžæßî$&(*,.üÓæBœÜ§ÝÞÞÜÝçñ Øæøñ Ûæ¤Ž åæŸŒ ,Þæ¶ŽLèæßîßÀcß8:<>@Büœç8Ÿçíîï íßî î c cˆ¢cµ
 `£cÔ­ `àB¤GS
ïû®Û £çÛ
ßÝéãéç$¤ç± ªçD™èß±æàÊæàèæààßàÝéãé篈 ¶ˆ ÌœïüÅè@= An iterator over the keys of a `HashMap` in arbitrary order.Áü†é)×ϰéúü´éKH This `struct` is created by the [`keys`] method on [`HashMap`]. See itsÁÜ€êÚ¢ œêúü ê-* [`keys`]: struct.HashMap.html#method.keysÁüÎê$Å£ óêút÷êÿÆëú<ŠëϽÜ’ë¯Ä®ëúü²ëCŤ öëúôúë let mut keys = map.keys();Áü™ì>‹Ì ØìúüÜìCÙÓü í?§ÔÄàíðÔüùí41 assert_eq!(vec, [Some(&1), Some(&2), Some(&3)]);Á®îúܲî­§ üÎî"äÍ üñî"äÍ <”ïϽ$§ïÃâœã§äâãäÍý °ïÞý ³ïâ© –*ó© *’ûíýW*¸¡ÀÑå¬ï=?AC¬¼ï,¼ïŽááºøüð#8ðœç§èðèçÍý ’ðÞý •ðÌïéÙé!#¼èð,ëðñ ñÌïÌïæ ñðæ
é8æê‹í$òðüËñ/8òœë§ìòëìÍý ÐñÞý Úñ€® ,ÓñÌïíÀcí&(*,üò8„òóôõ óÌï ô c cˆ¢cµ
 `£cÔ­ `àB¤GS
õû®ê ˆòê
í8æê‹í$‰ò± òÜôùüûòB? An iterator over the values of a `HashMap` in arbitrary order.Áü¾ó)Ø×èóúüìóMJ This `struct` is created by the [`values`] method on [`HashMap`]. See itsÁܺôÚ¢ ÖôúüÚô1. [`values`]: struct.HashMap.html#method.valuesÁüŒõ$Å£ ±õútµõÿÃÄõú<ÈõϽÜÐõ¯ÄìõúüðõCŤ ´öúü¸ö" let mut values = map.values();ÁüÛöDåä  ÷úü¤÷GìÚüì÷A¾ÛÄ®øðÔüÇø:7 assert_eq!(vec, [Some(&"a"), Some(&"b"), Some(&"c")]);Á‚ùú܆ù­§ ü¢ù$Êæ üÇù$Êæ <ìùϽ4ÿùÃïœð§ñïñðÍý ŠúÞý úâ© 
0ó© 0öûh±Uò†ú=?AC¬–ú,–úŽîîºøüçú%8öœô§õõôöÍý ìúÞý ïú™ðöÙö!#¼Äû,Çû÷ ÷™ð™ðó Íûó
ö8æê‹í$Îûü©ü18øœø§ùùøøÍý ®üÞý ±ü‘® ,´ü™ðúÀcú&(*,üáü8äüùúû ù™ð ú c cˆ¢cµ
 `£cÔ­ `àB¤GS
ûû®÷ èü÷
ú8æê‹í$éü± ïüüÿ„1üÛýDA A draining iterator over the entries of a `HashMap` in arbitraryÁü þ1. order. The iterator element type is `(K, V)`.ÁÒþúüÖþLI This `struct` is created by the [`drain`] method on [`HashMap`]. See itsÁÜ£ÿÚ¢ ¿ÿúüÃÿ/, [`drain`]: struct.HashMap.html#method.drainÁüóÿ$Å£ ˜€útœ€ÿë€ú<¯€ϽÜ·€¯ÄÓ€úü×€GD let mut map: HashMap<_, _> = [(1, "a"), (2, "b"), (3, "c")].into();ÁŸúü£%" let mut drain_iter = map.drain();ÁüÉPM let mut vec = vec![drain_iter.next(), drain_iter.next(), drain_iter.next()];Áš‚úüž‚EB // The `Drain` iterator produces items in arbitrary order, so theÁüä‚@¡éÄ¥ƒðÔü¾ƒF¥Â …„ú܉„­§ ü¥„(% assert_eq!(drain_iter.next(), None);Áü΄(Æ”
<÷„Ͻ,Š…Ãüœý§þÿþÿýüÍý ”…Þý —…šò¬š…«òLâ© 0Dó© 8DïéÃGDûû‹MÔŽá6´ïÖ6­Ãæê‹íïéá6´ïÖ6­œž ¢¤ š…‹òô·…,·…ŽûûÃÛ0ÇùAÈAÉÓ0AÊÚAâPºA…æÿïéüÚ…+8üœ§ƒƒüÍý ß…Þý â…šò å…«òLè…õý')+-/1ü€‡+$އý ýõýòòéDöÔŽ÷ÚŽ5G®Ï&€uýæê‹í “‡
8æê‹íïé$”‡üß8ü—ˆUR A draining iterator over entries of a `HashMap` which don't satisfy the predicateÁüíˆNK `f(&k, &mut v)` in arbitrary order. The iterator element type is `(K, V)`.Á¼‰úüÀ‰QN This `struct` is created by the [`extract_if`] method on [`HashMap`]. See itsÁÜ’ŠÚ¢ ®Šúü²Š96 [`extract_if`]: struct.HashMap.html#method.extract_ifÁüìŠ$Å£ ‘‹út•‹ÿä‹ú<¨‹Ͻܰ‹¯ÄÌ‹úüЋLI let mut map: HashMap<i32, &str> = [(1, "a"), (2, "b"), (3, "c")].into();ÁŒúü¡Œ<9 let mut extract_if = map.extract_if(|k, _v| k % 2 != 0);ÁüÞŒ=: let mut vec = vec![extract_if.next(), extract_if.next()];Áœúü IF // The `ExtractIf` iterator produces items in arbitrary order, so theÁüê@¡éÄ«ŽðÔüÄŽ52 assert_eq!(vec, [Some((1, "a")),Some((3, "c"))]);ÁúŽúÜþŽ­§ üš(% assert_eq!(extract_if.next(), None);ÁüÃ(­¢
¬ì drop(extract_if);Áú솆ŸϽ.ü¬2"Iterators are lazy unless consumedÁ܈§ŠˆŠÍý øÞý ûî« þÍì³ñ¬1³ñL„‘â© æ>ó© î>³ñÃý>åMŒ±ŽÔŽ—!]±OÁÃæê‹í­ñ³ñ—!]±OÁŒôÇÉËÍÏÑÊ ‹ò$ž‘ ž‘Ž­ñü¨‘",¨‘ŽüüÐ3ù+xS
;jà
æÿ³ñüÏ‘q8œ§þÿ­ñ þæê ÿ‹í˜"$©’Þý בî« Ú‘Ó¥
Ý‘þÿ“"­ñ¢©
Ì”’Íý Ô‘å¥
L¶’æðúMûMÿM/1vxz|~LÇ’$Ì’ŽŽ¦ÿü‘“($”“ æðÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙæðúMŽ ™“Ž
8æê‹í­ñ³ñ$ž“ÌÔ“±æÊæèææê‹í­ñ³ñ ¦ÿ ­ñü—”-Lš” æð†ñŽ ¤”Ž
8æê‹í­ñ³ñ$¥”üû”Y8œ˜§šš˜ƒ­ñ ƒæê ‹í˜"$ЕÞý ƒ•î« †•ƒ“"­ñœ¯
Ì»•Íý €•Àñ  GIKMôÒœüÙ•IF A mutable iterator over the values of a `HashMap` in arbitrary order.Áü£–-ßÞÑ–úüÕ–QN This `struct` is created by the [`values_mut`] method on [`HashMap`]. See itsÁܧ—Ú¢ ×úüÇ—96 [`values_mut`]: struct.HashMap.html#method.values_mutÁü˜$Å£ ¦˜útª˜ÿù˜ú<½˜ϽÜŘ¯Äá˜úüå˜Sª² ¹™úü½™&# let mut values = map.values_mut();Áüä™63 values.next().map(|v| v.push_str(" Mississippi"));Áü›š6³
ÒšúÜÖš­§ üòš$Êæ ü—›$Êæ ¼›úüÀ›DÛ´ ü…œDªµ <ÊœϽLݜÜœ§žœžÍý ëœÞý îœâ© K?ó© R?‘ý½F<ˆÑ ÒŸçœ=?ACÄ÷œ,÷œŽªùüͨ'ü”PM A view into a single entry in a map, which may either be vacant or occupied.ÁåúüéHE This `enum` is constructed from the [`entry`] method on [`HashMap`].Á²žúü¶ž$Å£ üÛž/, [`entry`]: struct.HashMap.html#method.entryÁ‹ŸútŸÿÞŸú<¢ŸϽüªŸ=: use hashbrown::hash_map::{Entry, HashMap, OccupiedEntry};ÁèŸúüìŸ!ÜÐüŽ 2/ map.extend([("a", 10), ("b", 20), ("c", 30)]);ÁìÁ êÑß úäã  // Existing key (insert)Áü€¡/, let entry: Entry<_, _, _> = map.entry("a");Áü°¡96 let _raw_o: OccupiedEntry<_, _, _> = entry.insert(1);Áìê¡êÑüˆ¢ // Nonexistent key (insert)Á쨢 map.entry("d").insert(4);ÁÆ¢úüÊ¢ // Existing key (or_insert)Áüê¢(% let v = map.entry("b").or_insert(2);Áü“£,) assert_eq!(std::mem::replace(v, 2), 20);ÁüÀ£" // Nonexistent key (or_insert)Áü㣠 map.entry("e").or_insert(5);Á„¤úüˆ¤$! // Existing key (or_insert_with)Áü­¤0- let v = map.entry("c").or_insert_with(|| 3);ÁüÞ¤,) assert_eq!(std::mem::replace(v, 3), 30);Áü‹¥'$ // Nonexistent key (or_insert_with)Áü³¥(% map.entry("f").or_insert_with(|| 6);ÁÜ¥úüà¥'$ println!("Our HashMap: {:?}", map);Áˆ¦úüŒ¦FC let mut vec: Vec<_> = map.iter().map(|(&k, &v)| (k, v)).collect();ÁüÓ¦DÒèü˜§@¡éÄÙ§ðÔüò§RO assert_eq!(vec, [("a", 1), ("b", 2), ("c", 3), ("d", 4), ("e", 5), ("f", 6)]);Á<ŨϽ,֨ᜢ§£¤¤¥¢¤¥£¡Íý à¨Þý ã¨Íì“ó æ¨Ó¥
Té¨å¥
L‚©â© ü‚»"ó© 
“óÃ…¦
 ¦§óO¨ˆ©ªP«ˆÛ-k<׌EÃæê‹í“ó³ñÛ-k<׌E¦§©ª§¨²²ØP¸§Ž¹QŽºŽ¥±£PUPÄãÃæê‹í“ó³ñ€Å
ª«Ë˨RѧŽÒëRŽÓŽJò…ôËÙËÃæê‹í“ó³ñ€Å
ܨ«®±´®±´ 騋ò´“© An occupied entry.Á®©út¶©ÿÃÉ©ú<Ñ©ϽüÝ©.+ use hashbrown::hash_map::{Entry, HashMap};ÁüªA> let mut map: HashMap<_, _> = [("a", 100), ("b", 200)].into();ÁÖªúÔÞª match map.entry("a") {Áüýª+( Entry::Vacant(_) => unreachable!(),Áü­«! Entry::Occupied(_) => { }Á,Ó«õÍ<Ý«Ͻ  
§Ãæê‹í“ó³ñÆ
ہ
  ¸Ë
ìò«  Æ
œ—¬ A vacant entry.Á¯¬út·¬ÿÃʬú<Ò¬ϽüÞ¬.üÇ
ü‘­5¸Ë­úÔÓ­É
üò­-* Entry::Occupied(_) => unreachable!(),Áü¤® Entry::Vacant(_) => { }Á,È®õÍ<Ò®Ͻ  
ªÃæê‹í“ó³ñîÆ
ہ
  ÊÎ
Üå®  îÆ
ü†¯I8œ­§®¤¯°­¯®°Íý ‹¯Þý •¯ºÄ
Ÿ¯Ó¥
¢¯€® ,ޝ‘® ,˜¯å¥
L¥¯¾ò±Àc±JLNPRTVXüÖ¯8Ù¯ˆ ¾ò ˆ c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®¬ ݯ¬
±8æê‹í“ó³ñ$Þ¯± ä¯üºQüر30 A view into an occupied entry in a [`HashMap`].ÁüŒ²74 It is part of the [`Entry`] and [`EntryRef`] enums.ÁIJútȲÿÃײú<Û²Ͻüã²=Ö¸
¡³úü¥³!ÜÐüdz2º¹
ú³úüþ³FC let _entry_o: OccupiedEntry<_, _, _> = map.entry("a").insert(100);ÁìÅ´êÑã´úüç´'$ // Existing key (insert and update)ÁÔµÉ
üªµ+²É
üÖµ&# Entry::Occupied(mut view) => {Áüýµ)& assert_eq!(view.get(), &100);Áü§¶# let v = view.get_mut();Á¬Ë¶ *v *= 10;Áüá¶0- assert_eq!(view.insert(1111), 1000);ÁL’·¦Ò,œ·õÍ¢·úü¦·  assert_eq!(map[&"a"], 1111);ÁìÇ·êÑå·úÔé· // Existing key (take)ÁÔ„¸ match map.entry("c") {ÁüŸ¸+²É
ü˸" Entry::Occupied(view) => {Áüî¸74 assert_eq!(view.remove_entry(), ("c", 30));ÁL¦¹¦Ò,°¹õÍü¶¹$! assert_eq!(map.get(&"c"), None);ÁìÛ¹ assert_eq!(map.len(), 2);Á<ù¹ϽlŒºÃ³œ´§µ¤·µ³´·Íý žºÞý ¡ººÄ
´¤ºÓ¥
¬¼ºå¥
L¿ºâ© ö ó© ý îÄ
 …¦
 Æ
¥±£PUPÄ㸹ºšºjlnpr ¤ºÑë| ¼º‹òLÙº$ÙºŽ²²¤èº$躎²²õƒµ AjùÜfB‚‹¨¦ÿÛ ,‚»Ž²²’øü©»8Šœ¼§½¤¾¿Š¾¼½¿ Íý µ»Þý ¸»ºÄ
»»Ó¥
¾»ѹ $õ»ã¹ $‚¼Ìì“ó$¼Ìì³ñ$œ¼å¥
L£¼¥ócegikmoqü²¼8œÁ§Â¤ÃÄÂÃÁÄ Íý ¾¼Þý Á¼ºÄ
ļӥ
Ǽ æê$þ¼ ‹í$‹½ “ó$˜½ ³ñ$¥½å¥
L¬½¥óqsuwy{}ü¼½Q8ŒœÆ§Ç¤ÈÉŒÉÇÈÆÍý Á½Þý ˽ºÄ
Õ½Ó¥
ؽ€® ,Ľ‘® ,νå¥
LÛ½¥óÊÀcÊJLNPRTVXü”¾8—¾Ž ¥ó Ž c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®Å ›¾Å
Ê8æê‹í“ó³ñ$œ¾± ¢¾ü”ÆOüä¿.+ A view into a vacant entry in a `HashMap`.Áü“À%" It is part of the [`Entry`] enum.Á¹Àúô½À [`Entry`]: enum.Entry.htmlÁÜÀútàÀÿÃïÀú<óÀϽüûÀ;8 use hashbrown::hash_map::{Entry, HashMap, VacantEntry};Á·Áúü»Á.+ let mut map = HashMap::<&str, i32>::new();ÁêÁúüîÁ>; let entry_v: VacantEntry<_, _, _> = match map.entry("a") {Áü­Â$! Entry::Vacant(view) => view,ÁüÒÂ-ÄÌ
4€Ã };Á¼‡Ã entry_v.insert(10);ÁüŸÃ/, assert!(map[&"a"] == 10 && map.len() == 1);ÁÏÃúüÓÃ*' // Nonexistent key (insert and update)ÁÔþà match map.entry("b") {Áü™Ä-ÄÌ
üÇÄ  Entry::Vacant(view) => {ÁüèÄ'$ let value = view.insert(2);ÁüÅ" assert_eq!(*value, 2);ÁijÅ *value = 20;ÁLÌŦÒ,ÖÅõÍüÜÅ/, assert!(map[&"b"] == 20 && map.len() == 2);Á<ŒÆϽ\ŸÆÃ̜ͧΤÏÐÍÎÌÐÏÍý ¯ÆÞý ²ÆºÄ
´µÆÓ¥
¬ÍÆå¥
LÐÆâ© ü…Ç"ó© 
îÄ
…¦
îÆ
Jò…ôËÙËÑÒÓ«Æjlnpr µÆÑë| ÍÆ‹òLêÆ$êÆŽËË4ùÆùÆŽËËæê¸,…ÇŽËË’øü¬ÇH8œÕ§Ö¤×ØØÖ×ÕÍý ±ÇÞý »ÇºÄ
¾ÇÓ¥
ÁÇ€® ,´Çå¥
LÄÇôÙÀcÙACEGIKMOüûÇ8þÇ ô  c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®Ô ‚ÈÔ
Ù8æê‹í“ó³ñ$ƒÈ± ‰ÈüÌ×9üÿÈPM A view into a single entry in a map, which may either be vacant or occupied,ÁüÐÉ1. with any borrowed form of the map's key type.Á‚Êú†ÊúüŠÊLI This `enum` is constructed from the [`entry_ref`] method on [`HashMap`].Á×ÊúüÛÊUR [`Hash`] and [`Eq`] on the borrowed form of the map's key type *must* match thoseÁü±ËSP for the key type. It also require that key may be constructed from the borrowedÁü…Ì$! form through the [`From`] trait.ÁªÌúü®Ì$Å£ üÓÌ74 [`entry_ref`]: struct.HashMap.html#method.entry_refÁü‹Í;«àüÇÍ@ðàüˆÎC@ [`From`]: https://doc.rust-lang.org/std/convert/trait.From.htmlÁÌÎútÐÎÿÃßÎú<ãÎϽüëÎ@= use hashbrown::hash_map::{EntryRef, HashMap, OccupiedEntry};Á¬Ïúü°Ï!ÜÐüÒÏKH map.extend([("a".to_owned(), 10), ("b".into(), 20), ("c".into(), 30)]);ÁìžÐêѼÐúäÀБº
üÝÐ  let key = String::from("a");ÁüþÐ:7 let entry: EntryRef<_, _, _, _> = map.entry_ref(&key);Áü¹Ñ<9 let _raw_o: OccupiedEntry<_, _, _, _> = entry.insert(1);ÁìöÑêÑü”ÒÄ»
ü´Ò! map.entry_ref("d").insert(4);ÁÖÒúüÚÒ¢¼
üúÒ,) let v = map.entry_ref("b").or_insert(2);Áü§Ó,ÿ¼
üÔÓ"¶½
ü÷Ó$! map.entry_ref("e").or_insert(5);ÁœÔúü Ô$›¾
üÅÔ41 let v = map.entry_ref("c").or_insert_with(|| 3);ÁüúÔ,…¿
ü§Õ'¼¿
üÏÕ,) map.entry_ref("f").or_insert_with(|| 6);ÁüÕúü€Ö'®À
¨Öúü¬ÖOL for (key, value) in ["a", "b", "c", "d", "e", "f"].into_iter().zip(1..=6) {ÁüüÖ# assert_eq!(map[key], value)Á×õÍì¦× assert_eq!(map.len(), 6);Á<Ä×ϽDÕ×ÃÛò<ܜݢާߤàááÝÛßàÞÜÍìÑõ æ×Îì×õ é×ÍìÝõ ô×Íìãõ ÷×ÍìéõTú×1éõL“ØÑõíÝõûãõÃÉéõÃ××õò<T³éÚâãóOäˆåæPçˆì˜Ò—­YÃò<Ñõ×õÝõãõéõì˜Ò—­Yâãåæãä²²ØP¸§Ž¹QŽºŽ¥±£PUPÄãÃÑõÝõãõéõË„ æçïïÒT÷§ŽøëRŽùŽ-2RY±¾ÈÃò<Ñõ×õÝõãõéõË„ Þ×â×

 ú׋ò´¤Ø¥Ç
¿ØútÇØÿÃÚØú<âØϽüîØ1. use hashbrown::hash_map::{EntryRef, HashMap};Áü¤ÙSP let mut map: HashMap<_, _> = [("a".to_owned(), 100), ("b".into(), 200)].into();ÁüÙúô„Ú match map.entry_ref("a") {Áü§Ú.+ EntryRef::Vacant(_) => unreachable!(),ÁüÚÚ$! EntryRef::Occupied(_) => { }Á,ƒÛõÍ<ÛϽÚÚ
ãÃò<Ñõ×õÝõãõéõÖ… Ë„ ÚÚº‹ ì¢ÛÚÚÖ… œÇÛ·Ë
ßÛútçÛÿÃúÛú<‚ÜϽüŽÜ1߇ üÄÜ74 let mut map: HashMap<String, i32> = HashMap::new();Á€ÝúôˆÝ…‰ ü«Ý0- EntryRef::Occupied(_) => unreachable!(),ÁüàÝ" EntryRef::Vacant(_) => { }Á,‡ÞõÍ<‘ÞϽÚÚ
æÃò<Ñõ×õÝõãõéõÆ Ë„ ÚÚ ü¤Þ%ÚÚÆ üÏÞ88œé¢ê§ë¤ìííêìéë
šƒ ÔÞ¬ƒ ×Þ¾ƒ ÚÞЃ ÝÞ⃠àÞ¿cÑõ,šß Ñõ×õL¢ß¿c×õ,´ß¿cÝõ,Ëßôƒ LÙßÿôîÀcîüêß8íߘ ÿô  c cˆ¢cµ
 `£cÔ­ `àB¤GS
˜û®è ñßè
î88Ñõ×õÝõãõéõ$òß± øßüÑèLüøá.å
ü§â(% It is part of the [`EntryRef`] enum.ÁÐâúüÔâ$! [`EntryRef`]: enum.EntryRef.htmlÁùâútýâÿÃŒãú<ãϽü˜ãA> use hashbrown::hash_map::{EntryRef, HashMap, VacantEntryRef};ÁÚãúüÞã0- let mut map = HashMap::<String, i32>::new();Áäúü“äHE let entry_v: VacantEntryRef<_, _, _, _> = match map.entry_ref("a") {ÁüÜä'$ EntryRef::Vacant(view) => view,Áü„å0öŒ 4µå€é
¼¼åé
üÔå.+ assert!(map["a"] == 10 && map.len() == 1);Áƒæúü‡æ*ùé
ô²æ match map.entry_ref("b") {ÁüÑæ0öŒ ü‚ç# EntryRef::Vacant(view) => {Áü¦ç'Œë
üÎç"¾ë
Äñçêë
LŠè¦Ò,”èõÍüšè.+ assert!(map["b"] == 20 && map.len() == 2);Á<ÉèϽtÜèÃðò<ñœò¢ó§ô¤õöðöõóñôòšƒ ó謃 ö较 éЃ „é⃠¬‡éôƒ LŠé¼„ ä „„ üÃé"’„ 
 „ ®„ Æ -2RY±¾È÷øùëèïèƒ ‡é‹òL¤é$¤éŽïï ³éŽïï ò<×õË,ÃéŽïï 設µ6®Õ:Ç$Ö>EÑõÝõãõéõüêé88šœû¢ü§ý¤þÿûýÿšüþšƒ ï鬃 ò龃 õéЃ øé⃠û鳑 L»êÈ‘ ,Íêôƒ LäêöõÀcSUWY[]_aceüõê8øêœ öõ œ c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®ú üêú
88Ñõ×õÝõãõéõ$ýê± ƒëüÂò<üýëZW The error returned by [`try_insert`](HashMap::try_insert) when the key already exists.ÁØìúüÜìEB Contains the occupied entry, and the value that was not inserted.Á¢íút¦íÿõíú<¹íϽüÁí63 use hashbrown::hash_map::{HashMap, OccupiedError};Áøíúüüí?< let mut map: HashMap<_, _> = [("a", 10), ("b", 20)].into();Á¼îúüÀîSP // try_insert method returns mutable reference to the value if keys are vacant,Áü”ïPM // but if the map did have key present, nothing is updated, and the providedÁüåï0- // value is returned inside `Err(_)` variantÁü–ð$! match map.try_insert("a", 100) {Áü»ð41 Err(OccupiedError { mut entry, value }) => {Áüðð*' assert_eq!(entry.key(), &"a");Áü›ñ# assert_eq!(value, 100);Áü¿ñ-* assert_eq!(entry.insert(100), 10)ÁLíñ¦Òä÷ñ _ => unreachable!(),Á,”òõÍüšò assert_eq!(map[&"a"], 100);Á<ºòϽlÍò܃§¤ƒÍý ßòÞý âòºÄ
åòÓ¥
¬èòå¥
Lëòâ© ”3ó© ›3îÄ
¢3…¦
©3íUÌ<ˆ»/ÁµŸ`šÃæê‹í“ó³ñ/ÁµŸ`šˆÛò®°²´¸º èò‹òü½ó(ü…ó30 The entry in the map that was already occupied.Á,ÁóÆ
d½ôüëóMJ The value which was not inserted, because the entry was already occupied.Á,Áô‹íüÎôQ8žœŠ§¤ŒžŒŠÍý ÓôÞý ÝôºÄ
çôÓ¥
êô€® ,Öô‘® ,àôå¥
LíôáöŽÀcŽJLNPRTVXü¦õ8©õŸ ¡ Ÿáö   c cˆ¢cµ
 `£cÔ­ `àB¤GS
¡û® ­õ
Ž8æê‹í“ó³ñ$®õ± ´õü³÷X8¢œ§¤¢Íý ¸÷Þý Â÷ºÄ
Ì÷Ó¥
Ï÷€® ,»÷‘® ,Å÷å¥
LÒ÷áöÅcJLNPRTVXü’ø8•ø£¤¥ £áö ¤ c cˆ¢cµ
 `£cÔ­ `àB¤GS
¥û® ™ø
8æê‹í“ó³ñ$šø±  øü¡úHܧ˜¤š˜šÍý ªúÞý ­úºÄ
°úÓ¥
³úå¥
L¶ú¼÷œÈLÉLÊL¦úMOQSUWY[Lðú$õúþþlûD•ûºøüÂ$üµûKH Creates an iterator over the entries of a `HashMap` in arbitrary order.Áü…ü2‹å¼üúüÄüKH Return the same `Iter` struct as by the [`iter`] method on [`HashMap`].Á”ýúüœý-£ üÎý$Å£ ÷ýútÿýÿÃ’þú<šþϽܦþ¯ÄüÆþGD let map_one: HashMap<_, _> = [(1, "a"), (2, "b"), (3, "c")].into();Áü’ÿ%" let mut map_two = HashMap::new();Á¼ÿúüÄÿ" for (key, value) in &map_one {Áüëÿ30 println!("Key: {}, Value: {}", key, value);Áü£€%" map_two.insert(*key, *value);Á,Í€õÍ×€úü߀! assert_eq!(map_one, map_two);Á<…Ͻ¼÷ºø
Ãæê‹í“ó³ñü†‚Lßœ §¡¤¢£¢£¡Ÿ Íý Þý ’‚ºÄ
•‚Ó¥
˜‚å¥
L›‚’ø¤¥¦ÈLÉLÊL¦‹‚MOQSUWY[LÙ‚$Þ‚žžõ¸ lý‚D‚ƒžžªùüº‹'ü¥ƒJG Creates an iterator over the entries of a `HashMap` in arbitrary orderÁüôƒGD with mutable references to the values. The iterator element type isÁÌÀ„ `(&'a K, &'a mut V)`.ÁÞ„úüæ„EB Return the same `IterMut` struct as by the [`iter_mut`] method onÁ„°…
[`HashMap`].ÁÅ…úüÍ…5б ü‡†$Å£ °†út¸†ÿÈú<Ó†ϽÜ߆¯Äüÿ†GD let mut map: HashMap<_, _> = [("a", 1), ("b", 2), ("c", 3)].into();ÁˇúüÓ‡" for (key, value) in &mut map {Áüú‡3ôº ¤²ˆ *value *= 2;Á,ˈõÍÕˆúü݈1. let mut vec = map.iter().collect::<Vec<_>>();Áü“‰DÒèü܉@¡éÄ¡ŠðÔü¾Š:7 assert_eq!(vec, [(&"a", &2), (&"b", &4), (&"c", &6)]);Á<ýŠϽL½‹’øªùžž
¦Ãæê‹í“ó³ñ$Ç‹ü…Œ@œ¨§©¤ª«©«ª¨çñ ŠŒøñ Œ‰ò Œšò “Œ«òL–Œ¥é¬­®ÈLÉLÊL®FHJLNPRTLÌŒ$ÑŒ§§³ìläŒD錧§Ò
ÔŽõsY4è±ôÝéãéïéüð’'üŒHE Creates a consuming iterator, that is, one that moves each key-valueÁüÙHE pair out of the map in arbitrary order. The map cannot be used afterÁŒ¦Ž calling this.Á¼ŽútÄŽÿÃ׎ú<ߎϽÜ뎯Äúü“C@ let map: HashMap<_, _> = [("a", 1), ("b", 2), ("c", 3)].into();ÁÛúüã  // Not possible with .iter()Áüˆ>; let mut vec: Vec<(&str, i32)> = map.into_iter().collect();ÁüËDA // The `IntoIter` iterator produces items in arbitrary order, soÁü”‘DA // the items must be sorted to test them against a sorted array.ÁÄÝ‘ðÔüú‘4úé<³’ϽLó’¥é½É §§
®Ýéãéééïé$ý’üë“%8¦œ°§±±°¦Íý ð“Þý ó“Èì²´²!#¤È”<Ë”È쯯
²8æê‹íüÈ•*ôœµ§µ´Íý Ñ•Þý Ô•ºø·¸¹ºúMûMÿMóN¹º¸Í•ACEGLù•$þ•³³þþüË–,$Ζ§ §ºøÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙþþ³ Ó–³
¸Ãæê‹í$Ø–ü«™-L®™¨ ¨ºø†ñ³ ¸™³
¹Ãæê‹í$¹™üµšp$¸šºøÎ× ¨Î× ³»¼»¼³‰Ø ½šÕ ÀšÍìºø,ùš“"¨Î× ºøúMÌ‹›¨¡Ö ˜"Î× £›
ºÃæê‹íÎ× ¨$Úèù$Éš± ÖšDÊ›º±æ½Êæ½èæ½½º½æê‹íÎ× ¨Î× ŒÞ
Î× ¹Ú ü¯œ/8©œ¿§À¿©ÀÍý ´œÞý ·œÈìÁÄMÁ!#´–ª ªÈì¾ ¾
Á8æê‹íüÑ+8«œÃ§ÄëÄÍý ÖÞý ÙÈìüž(8¬œÆ§Ç¬ÇÆÍý †žÞý ‰ž¤íÈ´È!#¤áž<䞤íÅÅ
È8æê‹íüáŸ-Ãʜ˧ÌÌÊËÍý êŸÞý ퟪùÍÎÏÐúMûMÿMóNÎÐÏæŸACEGL• $š ÉÉõ¸ üë 0$î ­ ­ªùÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙõ¸ É ó É
ÎÃæê‹í$ø üÓ£-LÖ£® ®ªù†ñÉ à£É
ÏÃæê‹í$á£üݤp$पùÎ× ¨Î× ÉÑÒÒÑÉ‰Ø å¤Õ è¤Íìªù,¡¥“"¨Î× ªùúM̳¥¨Šá ˜"Î× Ë¥
ÐÃæê‹íÎ× ¨$ë¤èù$ñ¤± þ¤Dò¥Ð±æÓÊæÓèæÓÓÐÓæê‹íÎ× ¨‡Ø ¹Ú üצ28¯œÕ§Ö¯ÕÖÍý ܦÞý ߦ¤í×ÄM×!#´Á§ħ° °¤íÔ ȧÔ
×8æê‹í$ɧüû§.8±œÙ§ÚÙÚ±Íý €¨Þý ƒ¨¤íü®¨W8²œÜ§ÝÜݲÍý ³¨Þý ¶¨€® T稑® Tú¨¤íÞÀcÞ/135üŒ©8©³´µ ³¤í ´ c cˆ¢cµ
 `£cÔ­ `àB¤GS
µû®Û “©Û
Þ8æê‹í$”©± š©ü…ª6œà§áâáàâçñ Šªøñ ª¤Ž ª¶ŽL“ªšúã´ã/13579¤óª<öªšúßß
ãÝéãéçüÒ«7œå§æçåæççñ ׫øñ Ú«¤Ž Ý«¶ŽL૚úèéêëúMûMÿMóNëêéLNPRTVL¬$•¬ää³ìüÚ¬$$ݬ šú©€ ä â¬ä
éÝéãéç$ç¬üÖ­-LÙ­· ·šú†ñä ã­ä
êÝéãéç$ä­üà®l$㮚úÎ× ¨Î× äìííì䉨 è®Õ ë®Íìšú, ¯“"¨Î× šúúM̲¯¨§î ˜"Î× Ê¯
ëÝéãéçÎ× ¨$î®èù$ô®± ý®üü¯@œï§ðñðïñçñ °øñ „°¤Ž ‡°¶ŽLаšúòÄMò/13579´ô°÷°¸ ¸šúî û°î
òÝéãéç$ü°ü®±<œô§õöõöôçñ ³±øñ ¶±¤Ž ¹±¶ŽL¼±šú$&(*,.üï±Gœø§ùúøùúçñ ô±øñ þ±¤Ž ˆ²ŽŒ ,÷±ŸŒ ,²¶ŽL‹²šúûÀcûACEGIKü½²8À²¹º» ¹šú º c cˆ¢cµ
 `£cÔ­ `àB¤GS
»û®÷ IJ÷
ûÝéãéç$Ų± ˲ü¶³%8¼œý§þýþ¼Íý »³Þý ¾³Ìïÿ´ÿ!#¤“´<–´Ìïüü
ÿ8æê‹íüò´*à œ§ƒ ƒ  Íý û´Þý þ´’û„ … † ‡ úMûMÿMóN÷´ACEGL£µ$¨µ€ÿüìµ#$ïµ½ ½’ûÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ€ÿ ôµ
Ãæê‹í$ùµüò·-Lõ·¾ ¾’û†ñ ÿ·
Ãæê‹í$€¸üü¸p$ÿ¸’ûÎ× ¨Î× ˆ ˆ ‰Ø „¹Õ ‡¹Íì’û,À¹“"¨Î× ’ûúMÌÒ¹¨Äû ˜"Î× ê¹
Ãæê‹íÎ× ¨$йèù$¹± ¹l‘º±æŠ ÊæŠ èæŠ Š Š æê‹íÎ× ¨Î×  æê ‹íÎ× ¹Ú ü²º/8¿œŒ §  ¿Œ Íý ·ºÞý ººÌïŽ ÄMŽ !#´™»œ»À ÀÌï  »
Ž 8æê‹í$¡»üÓ»+8Áœ § ÁÍý Ø»Þý Û»Ìïüƒ¼'8œ§ÂÍý ˆ¼Þý ‹¼™ð´!#¤â¼<å¼™ð
8æê‹íüÁ½,ܘ §˜ Íý ʽÞý ͽöûš › œ úMûMÿMóNœ ƽACEGLô½$ù½Šÿü½¾#$À¾Ã ÃöûÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙŠÿ ž
Ãæê‹í$ʾüÃÀ-LÆÀÄ Äöû†ñ ÐÀ
œ Ãæê‹í$ÑÀüÍÁp$ÐÁöûÎ× ¨Î× ž Ÿ Ÿ ž ‰Ø ÕÁÕ ØÁÍìöû,‘“"¨Î× öûúṂ¨¸† ˜"Î× »Â
Ãæê‹íÎ× ¨$ÛÁèù$áÁ± îÁlâ ±æ  Êæ  èæ       æê‹íÎ× ¨ªý ¹Ú üƒÃ18Åœ¢ §£ Å£ ¢ Íý ˆÃÞý ‹Ã™ð¤ ÄM¤ !#´ìÃïÃÆ Æ™ð¡  óá
¤ 8æê‹í$ôÃü¦Ä-8Çœ¦ §§ ǧ ¦ Íý «ÄÞý ®Ä™ðüØÄ*8Èœ© §ª ª © ÈÍý ÝÄÞý àÄÏü« ´« !#¤ºÅ<½ÅÏü¨ ¨
« 8æê‹íü™Æ/í œ® §¯ ® ¯ ­ Íý ¢ÆÞý ¥Æ‘ý° ± ² ³ úMûMÿMóN³ ± ² žÆACEGLÏÆ$ÔÆ¬ ¬ ú¸ üœÇ'$ŸÇÉ É‘ýÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙú¸ ¬  ¤Ç¬
± Ãæê‹í$©Çü¦É-L©ÉÊ Ê‘ý†ñ¬  ³É¬
² Ãæê‹í$´Éü°Êp$³Ê‘ýÎ× ¨Î× ¬ ´ µ ´ µ ¬ ‰Ø ¸ÊÕ »ÊÍì‘ý,ôÊ“"¨Î× ‘ýúM̆˨“‘ ˜"Î× žË
³ Ãæê‹íÎ× ¨$¾Êèù$Äʱ ÑÊlÅ˳ ±æÊæèæ³ æê‹íÎ× ¨Î× ´ý ‹íÎ× ¹Ú üæË48Ëœ¸ §¹ ¸ ˹ Íý ëËÞý îËÏüº ÄMº !#´ÒÌÕÌÌ
 `£cÔ­ `àB¤GS
Ñû®¾  ƒÎ¾
Á 8æê‹í$„α ŠÎTùÎÁ ±æ Êæ èæ  Á  æê‹í²ý ºý ü©Ï88ÒœÄ §Å Æ ÒÄ Å Æ Íý ®ÏÞý ±Ïšò ´Ï«òL·ÏõýÇ È É Ê úMûMÿMóNÊ È É LNPRTVLèÏ$íÏà à ¦ÿü²Ð$$µÐÓ ÓõýÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¦ÿà  ºÐÃ
È 8æê‹íïé$¿Ðü®Ñ-L±ÑÔ Ôõý†ñà  »ÑÃ
É 8æê‹íïé$¼Ñü¸Òl$»ÒõýÄ à Ë Ì Ë Ì à ÍìÄ ÀÒÍìÉ ÃÒÍìõý,øÒ“"É Ä õýúMÌŠÓÉ ž ˜"Ä ¢Ó
Ê 8æê‹íïéÄ É $ÆÒèù$ÌÒ± ÕÒ˜üÔÓA8՜Π§Ï Ð Ï ÕÎ Ð Íý ÙÓÞý ÜÓšò ßÓ«òLâÓõýÑ ÄMÑ /13579´ÍÔÐÔÖ ÖõýÍ  ÔÔÍ
Ñ 8æê‹íïé$ÕÔü‡Õ=8×œÓ §Ô Õ ×Ô Ó Õ Íý ŒÕÞý Õšò ’Õ«òL•Õõý$&(*,.üÉÕm8Øœ× §Ø Ù Ø Ù × ØÍý ÎÕÞý ÑÕšò ÔÕ€® T†Ö‘® T™Ö«òL¬ÖõýÚ ÀcÚ ACEGIKü½Ö8ÀÖÙÚÛ Ùõý Ú c cˆ¢cµ
 `£cÔ­ `àB¤GS
Ûû®Ö  ÄÖÖ
Ú 8æê‹íïé$ÅÖ± ËÖü¶×5ÃÜ œÝ §Þ ¤ß à Þ ß Ý à Ü Íý ¿×Þý Â׺Ä
Å×Ó¥
È×å¥
LË×€Å
á â ã ä æ è é ë »×LNPRTVXZüõÚqüò×@= Sets the value of the entry, and returns an `OccupiedEntry`.Á·Øút¿ØÿÃÒØú<ÚØϽÜæØ¯Ä†ÙúüŽÙ52 let mut map: HashMap<&str, u32> = HashMap::new();ÁüÈÙ30 let entry = map.entry("horseyland").insert(37);Á€ÚúüˆÚ+( assert_eq!(entry.key(), &"horseyland");Á<¸ÚϽ4üÚ€Å
‹íÆ
Û Û — $ÉÛÅe“ó\ÚÛ
á Ãæê‹í“ó³ñ$ƒÛ»,‰ÛüâbüËÝRO Ensures a value is in the entry by inserting the default if empty, and returnsÁü¢Þ2êÙÞútáÞÿÃôÞú<üÞϽ܈߯Ĩßúü°ß5ù§ êßú´òß // nonexistent keyÁüà(% map.entry("poneyland").or_insert(3);Áüºà$! assert_eq!(map["poneyland"], 3);Áãàúœëà // existing keyÁüƒá/, *map.entry("poneyland").or_insert(10) *= 2;Áü·á$! assert_eq!(map["poneyland"], 6);Á<àáϽL¤â€Å
‹íú¸ Û Û — $ââ‚« \óâ
â Ãæê‹í“ó³ñ$®â><´âüÔé|ü£äFC Ensures a value is in the entry by inserting the default if empty,Áüîä%" and returns an [`OccupiedEntry`].Á˜åút åÿóåú<»åϽÜÇå¯Äçåúüïå5ù§ ©æú´±æ¨¬ üÌæ:7 let entry = map.entry("poneyland").or_insert_entry(3);Áü‹ç*' assert_eq!(entry.key(), &"poneyland");Áüºç  assert_eq!(entry.get(), &3);Áßçúœçç·­ üÿç?< let mut entry = map.entry("poneyland").or_insert_entry(10);ÁüÃè*Œ² üòè Á² <—éϽ|Ûé€Å
‹íÆ
Û Û — $³ê‚« \Äê
ã Ãæê‹í“ó³ñ$ëé><ñéüèðyüïë]Z Ensures a value is in the entry by inserting the result of the default function if empty,ÁüÑì>; and returns a mutable reference to the value in the entry.Á”íútœíÿïíú<·íϽÜÃí¯Äãíúüëí5ù§ ¥îú´­î¨¬ üÈî0- map.entry("poneyland").or_insert_with(|| 3);Áüýî$ü¬ ¦ïúœ®ï·­ üÆï74 *map.entry("poneyland").or_insert_with(|| 10) *= 2;Áü‚ð$® <«ðϽtïð€Å
É ú¸ Û å å Û “ž þð–"É lñÉ ˜"‹í ñ— $Äñ‚« \Õñ
ä Ãæê‹í“ó³ñÉ $ñ><–ñqsü×úü‡ó_\ Ensures a value is in the entry by inserting, if empty, the result of the default function.Áüëó_\ This method allows for generating key-derived values for insertion by providing the defaultÁüÏôXU function a reference to the key that was moved during the `.entry(key)` method call.Á¬õúü´õTQ The reference to the moved key is provided so that cloning or copying the key isÁüö85 unnecessary, unlike with `.or_insert_with(|| ... )`.ÁÊöútÒöÿÃåöú<íöϽÜùö¯Ä™÷úü¡÷74 let mut map: HashMap<&str, usize> = HashMap::new();ÁÝ÷ú´å÷¨¬ ü€øIF map.entry("poneyland").or_insert_with_key(|key| key.chars().count());ÁüÎø$! assert_eq!(map["poneyland"], 9);Á÷øúœÿø·­ ü—ùTQ *map.entry("poneyland").or_insert_with_key(|key| key.chars().count() * 10) *= 2;Áüðù%" assert_eq!(map["poneyland"], 18);Á<šúϽ”Þú€Å
É ú¸ Û ç ç Û “ž ñúÜ–"É  Üæê|ôúÜÉ éà ˜"‹í ‚û— $¹û‚« \Êû
æ Ãæê‹í“ó³ñÉ $…û><‹û¼¨üÉý,) Returns a reference to this entry's key.Áúýút‚þÿÕþú<þϽÜ©þ¯ÄÉþúüÑþ5ù§ ü‹ÿ(ɬ œ¸ÿ·­ üÐÿ;8 assert_eq!(map.entry("poneyland").key(), &"poneyland");Á´¨¬ ü«€;8 assert_eq!(map.entry("horseland").key(), &"horseland");Á<ë€Ͻ¯Ý Ý€Å
ÝæêÛ  ³Û
è Ãæê‹í“ó³ñüÀ‡MüÙ‚DA Provides in-place mutable access to an occupied entry before anyÁü¢ƒ# potential inserts into the map.ÁʃútÒƒÿÃåƒú<íƒϽÜùƒ¯Ä™„úü¡„5ù§ Û„úÔã„ map.entry("poneyland")Áü‚…# .and_modify(|e| { *e += 1 })Á´ª… .or_insert(42);ÁüÅ…%" assert_eq!(map["poneyland"], 42);Áï…úÔ÷…¿É ü–†#äÉ ´¾†‘Ê üÙ†%" assert_eq!(map["poneyland"], 43);Á<ƒ‡ϽTLJ€Å
É €Å
Û ê ê Û “ž Ò‡Þ–"É  Þ‹ítþ‡ÞÉ ²Í ˜"
é Ãæê‹í“ó³ñÉ $Õ‡± Û‡tvüÊ–eüý‰FC Provides shared access to the key and owned access to the value ofÁüÈŠEB an occupied entry and allows to replace or remove it based on theÁü’‹! value of the returned option.Á¸‹útÀ‹ÿÃÓ‹ú<Û‹ϽÜ狯Äü‡Œ# use hashbrown::hash_map::Entry;Á¯Œúü·Œ5ù§ ñŒúœùŒ let entry = mapÁÜ‘ .entry("poneyland")Áü±30 .and_replace_entry_with(|_k, _v| panic!());ÁéúŒñ match entry {Á쇎 Entry::Vacant(e) => {Áü©Ž.+ assert_eq!(e.key(), &"poneyland");ÁLÜŽ¦ÒüêŽ'$ Entry::Occupied(_) => panic!(),Á,õÍ úü¨  map.insert("poneyland", 42);ÁÍúœÕ–Ð Üí³Ð ü(% .and_replace_entry_with(|k, v| {Áüº(% assert_eq!(k, &"poneyland");Áôç assert_eq!(v, 42);Á¼Š‘ Some(v + 1)Á\¦‘ });Á¶‘úŒ¾‘£Ñ üÔ‘ Entry::Occupied(e) => {Áüø‘.æÑ ü«’%" assert_eq!(e.get(), &43);ÁLÕ’¦Òüã’%" Entry::Vacant(_) => panic!(),Á,õÍ—“úüŸ“%šË É“úœÑ“–Ð Ü铳Рü‰”/, .and_replace_entry_with(|_k, _v| None);Á½”úŒÅ”£Ñ üÛ”>; Entry::Vacant(e) => assert_eq!(e.key(), &"poneyland"),Áüž•'­Ò ,Ê•õÍÔ•úüÜ•,) assert!(!map.contains_key("poneyland"));Á<Ͻ´Ñ–€Å
É €Å
Û ì ì Û “ž è–ß–"É  ßæê‹íÔ”—ßÉ ŽÛ ˜"Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ‹íL¥—
ë Ãæê‹í“ó³ñÉ $ë–± ñ–ÀÂüǘ>Ãî œï §ð ¤ñ ò ò î ð ñ ï Íý ИÞý Ó˜ºÄ
ߘӥ
☳‹í<Ö˜å¥
L嘀Å
ó ̘HJLNPRTVü‹žWüŒ™LI Ensures a value is in the entry by inserting the default value if empty,ÁüÝ™>äµ  šút¨šÿûšú<ÚϽÜÏš¯Äïšúü÷š=: let mut map: HashMap<&str, Option<u32>> = HashMap::new();Á¹›ú´Á›¨¬ üÜ›(% map.entry("poneyland").or_default();Áü‰œ'$ assert_eq!(map["poneyland"], None);Áµœúü½œ%" map.insert("horseland", Some(3));Áçœúœïœ·­ ü‡B? assert_eq!(map.entry("horseland").or_default(), &mut Some(3));ÁϽT’ž€Å
ú¸ í í — $Åž‚« \Öž
ó Ãæê‹í“ó³ñ$žü =Ãõ œö §÷ ¤ø ù ÷ õ ù ø ö Íý ˜ Þý › ºÄ
ž Ó¥
¡ å¥
L¤ Æ
ú û ü ý þ ÿ €
” LNPRTVXZ¼Ä¤üÓ -* Gets a reference to the key in the entry.Á…¡út¡ÿà¡ú<¨¡Ͻü´¡.üÇ
ç¡úüï¡5ù§ ü©¢)& map.entry("poneyland").or_insert(12);Á×¢úüߢ" match map.entry("poneyland") {Áü†£%¤Ö ü°£HE Entry::Occupied(entry) => assert_eq!(entry.key(), &"poneyland"),Á,ý£õÍ<‡¤Ͻˤà àÆ
àæêô  Ϥô
ú Ãæê‹í“ó³ñ$ФüÄ«#ü’¥96 Take the ownership of the key and value from the map.ÁüÐ¥)þ¥út†¦ÿÙ¦ú<¡¦ϽÜ­¦¯Äüͦ#ÀÏ õ¦úüý¦5ù§ ¼·§úõüÓ§3œö‹¨úü“¨)Ëå Á¨úüɨ85 if let Entry::Occupied(o) = map.entry("poneyland") {Áü†©,) // We delete the entry from the map.Áü·©85 assert_eq!(o.remove_entry(), ("poneyland", 12));Á,ô©õÍþ©úü†ª52 assert_eq!(map.contains_key("poneyland"), false);ÁüÀª!§þäæª ø<‡«ϽdË«Æ
¦ÿô ô
û Ãæê‹í“ó³ñ$Ø«¼¬°ü­¬/, Gets a reference to the value in the entry.Áá¬úté¬ÿÃü¬ú<„­ϽÜ­¯Äü°­#ÀÏ Ø­úüà­5ù§ üš®)Ëå È®úüЮ"Œæ ü÷®%¤Ö ü¡¯?< Entry::Occupied(entry) => assert_eq!(entry.get(), &12),Á,å¯õÍ<ï¯Ͻ³°á áÆ
á‹íô  ·°ô
ü Ãæê‹í“ó³ñ$¸°üï·#üú°74 Gets a mutable reference to the value in the entry.Á¶±úü¾±HE If you need a reference to the `OccupiedEntry` which may outlive theÁü‹²74 destruction of the `Entry` value, see [`into_mut`].ÁDzúüϲ" [`into_mut`]: #method.into_mutÁö²útþ²ÿѳú<™³ϽÜ¥³¯Äüų#ÀÏ í³úüõ³5ù§ ü¯´)Ëå Ý´úüå´%" assert_eq!(map["poneyland"], 12);Áüµ<9 if let Entry::Occupied(mut o) = map.entry("poneyland") {ÁÜе *o.get_mut() += 10;Áüðµ! assert_eq!(*o.get(), 22);Á–¶úüž¶41 // We can use the same Entry multiple times.ÁÔ×¶ *o.get_mut() += 2;Á,ö¶õÍ€·úüˆ·%" assert_eq!(map["poneyland"], 24);Á<²·Ͻ<ö·â âÆ
 â‹íô  þ·ô
ý Ãæê‹í“ó³ñ$ƒ¸ü¥¿"ü͸SP Converts the `OccupiedEntry` into a mutable reference to the value in the entryÁü¥¹,) with a lifetime bound to the map itself.ÁÖ¹úüÞ¹LI If you need multiple references to the `OccupiedEntry`, see [`get_mut`].Á¯ºúü·º  [`get_mut`]: #method.get_mutÁܺútäºÿÃ÷ºú<ÿºϽü‹».üÇ
¾»úüÆ»5ù§ ü€¼)Ëå ®¼úü¶¼%Õô à¼úÄè¼ let value: &mut u32;Áü…½"Œæ ü¬½;8 Entry::Occupied(entry) => value = entry.into_mut(),Áüì½%¤Ö ,–¾õÍŒ ¾ *value += 10;Á¶¾úü¾¾%" assert_eq!(map["poneyland"], 22);Á<è¾ϽD¬¿Æ
ú¸ ô ô
þ Ãæê‹í“ó³ñ$µ¿üÄ'ü‚ÀC@ Sets the value of the entry, and returns the entry's old value.ÁÊÀútÒÀÿÃåÀú<íÀϽÜùÀ¯Äü™Á#ÀÏ ÁÁúüÉÁ5ù§ üƒÂ)Ëå ±Âúü¹Â<…õ üúÂ%" assert_eq!(o.insert(15), 12);Á,¤ÃõÍ®Ãúü¶Ã%" assert_eq!(map["poneyland"], 15);Á<àÃϽ4¤Äã ãÆ
‹í‹íô  «Äô
ÿ Ãæê‹í“ó³ñ$°Ä»,¶ÄÄæÊüþÄ52 Takes the value out of the entry, and returns it.Áü¸Å)æÅútîÅÿÃÆú<‰ÆϽܕƯÄüµÆ#ÀÏ ÝÆúüåÆ5ù§ ¼ŸÇúõü»Ç3œöóÇúüûÇ)Ëå ©Èúü±È8¿ê üîÈ# assert_eq!(o.remove(), 12);Á,–ÉõÍ Éúü¨É5—ì üâÉ!§þäˆÊ ø<©ÊϽ4íÊÆ
‹íô ô
Ãæê‹í“ó³ñ$ôÊü×rüªËF¯Í üõË=: the entry and allows to replace or remove it based on theÁü·Ì!ÐÎ ÝÌútåÌÿÃøÌú<€ÍϽ܌ͯÄü¬Í#ÀÏ ÔÍúüÜÍ5ù§ ü–Î úÒ »ÎúüÃÎ.+ let entry = match map.entry("poneyland") {ÁüöÎ­Õ üšÏ)& e.replace_entry_with(|k, v| {ÁüÈÏ,) assert_eq!(k, &"poneyland");ÁüùÏ" assert_eq!(v, 42);ÁÜ Ð Some(v + 1)ÁtÀÐ })ÁLÓЦÒüáÐ%¤Ö 4‹Ñ€é
–ÑúŒžÑ£Ñ ü´Ñ­Õ üØÑ.æÑ ü‹Ò%æÕ LµÒ¦ÒüÃÒ%¤Ö ,íÒõÍ÷ÒúüÿÒ%šË ©Óúü±Ó.çˆ
üäÓB? Entry::Occupied(e) => e.replace_entry_with(|_k, _v| None),Áü«Ô%¤Ö 4ÕÔ€é
àÔúŒè ìþÔ¾Ñ ü Õ.æÑ LÓÕ¦ÒüáÕ'­Ò ,ÖõÍ—ÖúüŸÖ,ïØ <ÐÖϽ””ׯ
É €Å
ô 

ô “ž §×ä–"É  äæê‹íÔä×äÉ «
˜"»Û Lõ×
Ãæê‹í“ó³ñÉ $ª×± °×{}t¤Ù
±æƒ
Êæƒ
èæƒ
ƒ

ƒ
æê‹í“ó³ñÉ ¦ÿ¬› É Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙæêüáÝ;Ã
œ
§
¤ˆ

ˆ



Íý êÝÞý íݺÄ
ðÝÓ¥
óÝå¥
LöÝîÆ
Š
Œ
æÝ@BDFHJLN¼¢áü£ÞIF Gets a reference to the key that would be used when inserting a valueÁôñÞ through the `VacantEntry`.Á”ßútœßÿïßú<·ßϽÜÃ߯Äãßúüëß5ù§ ü¥à;®Å <åàϽ©áå åîÆ
åæê
 ­á
Š
Ãæê‹í“ó³ñ$®áÔ‰åôÙá Take ownership of the key.Áüáút„âÿ×âú<ŸâϽü«â.üÇ
Þâúüæâ5ù§  ãúü¨ã"Œæ üÏã'­Ò üûãB? Entry::Vacant(v) => assert_eq!(v.into_key(), "poneyland"),Á,ÂäõÍ<ÌäϽDåîÆ
æê

Ãæê‹í“ó³ñ$™åü¼é]üÂå?< Sets the value of the entry with the [`VacantEntry`]'s key,Áü†æ*' and returns a mutable reference to it.Áµæút½æÿÃÐæú<ØæϽÜ保Äü„ç#ÀÏ ¬çúü´ç5ù§ îçúüöç63 if let Entry::Vacant(o) = map.entry("poneyland") {Á¬±è o.insert(37);Á,ËèõÍüÕè%" assert_eq!(map["poneyland"], 37);Á<ÿèϽ4ÃéîÆ
‹íú¸ 

— $üé‚« \ê
Œ
Ãæê‹í“ó³ñ$Êé»,Ðéü‘ðwü’ì?™
üÖì%œ° €íútˆíÿÛíú<£íϽܯí¯ÄüÏí#ÀÏ ÷íúüÿí5ù§ ¹îúüÁî63 if let Entry::Vacant(v) = map.entry("poneyland") {Áüüî# let o = v.insert_entry(37);Áü¤ï! assert_eq!(o.get(), &37);Á,ÊïõÍ<ÔïϽd˜ðîÆ
‹íÆ


— $ëð‚« \üð
Ãæê‹í“ó³ñ$¥ð»,«ðü³óNÃ
ò<
œ
¢
§
¤







šƒ Àó¬ƒ Ãó¾ƒ ÎóЃ Ñó⃠Ôóôƒ L×óË„
˜
š
œ
¸ó¼óVXZ\^`bdfhü÷üˆô@ݦ ÍôútÕôÿÃèôú<ðôϽÜüô¯Äœõúü¤õ74 let mut map: HashMap<String, u32> = HashMap::new();Áüàõ74 let entry = map.entry_ref("horseyland").insert(37);Áœöúü¤ö*' assert_eq!(entry.key(), "horseyland");Á<ÓöϽ4—÷Ë„ ÝõÖ… Ž
Ž
šeÑõ$ä÷æò Ñõ<ù÷Åeãõ\ø
Ãò<Ñõ×õÝõãõéõ$ž÷»,¤÷üàþzü„úRЪ üÛú2ê’ûútšûÿíûú<µûϽÜÁû¯Äáûúüéû7«¤
¥üú´­ü¨¬ üÈü,) map.entry_ref("poneyland").or_insert(3);Áüùü$ü¬ ¢ýúœªý·­ üÂý30 *map.entry_ref("poneyland").or_insert(10) *= 2;Áüúý$® <£þϽLçþË„ Ýõ ÃÝõŽ
Ž
²§
$¥ÿç
<ºÿا
\Îÿ
Ãò<Ñõ×õÝõãõéõ$ñþ><÷þü‡†ü„]ü´ üæ>äµ ©‚út±‚ÿÃÄ‚ú<Ì‚ϽÜØ‚¯Äø‚úü€ƒ7«¤
¼ƒú´Äƒ¨¬ ü߃41 map.entry_ref("poneyland").or_insert_with(|| 3);Áü˜„$ü¬ Á„úœÉ„·­ üá„;8 *map.entry_ref("poneyland").or_insert_with(|| 10) *= 2;Áü¡…$® <Ê…ϽtކË„ £«
Ž


Ž
Í좯
"¢¯
l †¢¯
˜"Ýõ ¬†²§
$ã†ç
<ø†ا
\Œ‡
˜
Ãò<Ñõ×õÝõãõéõ¢¯
$¯†><µ†üߎ£üĈ_Àº ü¨‰_ª» üŒŠ74 function an access to the borrower form of the key.ÁÈŠútЊÿÃãŠú<ëŠϽÜ÷Нė‹úüŸ‹96 let mut map: HashMap<String, usize> = HashMap::new();ÁÝ‹ú´å‹¨¬ ü€ŒMJ map.entry_ref("poneyland").or_insert_with_key(|key| key.chars().count());ÁüÒŒ$¨À ûŒúœƒ·­ ü›XU *map.entry_ref("poneyland").or_insert_with_key(|key| key.chars().count() * 10) *= 2;Áüø%ÑÁ <¢ŽϽ”æŽË„ ¢¯
£«
Ž


Ž
˯
ùŽæ–"¢¯
 æ×õ|üŽæ¢¯
éµ
˜"Ýõ в§
³‘ ç
ا

š
Ãò<Ñõ×õÝõãõéõ¢¯
$><“¥§üä•7üù‘,úà ª’út²’ÿÃÅ’ú<Í’ϽÜÙ’¯Äù’úü7«¤
ü½“,ɨ
œî“·­ ü†”>; assert_eq!(map.entry_ref("poneyland").key(), "poneyland");Á´É”¨¬ üä”>; assert_eq!(map.entry_ref("horseland").key(), "horseland");Á<§•Ͻë•ç çË„ ç×õŽ
 
³‘ L‘–
œ
Ãò<Ñõ×õÝõãõéõ$ð•ü¹œMüÈ—DÖÇ ü‘˜#¥È ¹˜útÁ˜ÿÃÔ˜ú<ܘϽÜ蘯Ĉ™úü7«¤
Ì™úôÔ™ map.entry_ref("poneyland")Áü÷™#äÉ ´Ÿš‘Ê üºš%²Ê äšúôìšðº
ü#äÉ ´·›‘Ê üÒ›%šË <ü›ϽTÀœË„ ¢¯
Ë„ Ž
ž
ž
Ž
˯
Ëœè–"¢¯
 èÝõt÷œè¢¯
ö½
˜"
Ãò<Ñõ×õÝõãõéõ¢¯
$Μ± Ôœ~ü€ŸWà
ò<¡
Ϣ
¢£
§¤
¤¥
¦
 
¢
£
¡
¥
¦
¤
šƒ Ÿ¬ƒ Ÿ¾ƒ ›ŸЃ §Ÿ⃠ªŸ³Ýõ<žŸôƒ L­ŸË„ §
¨
…Ÿ‰Ÿ[]_acegikmüó¤oüÞŸL°Ý ü¯ >äµ ò útú ÿáú<•¡ϽÜ¡¡¯ÄÁ¡úüÉ¡?< let mut map: HashMap<String, Option<u32>> = HashMap::new();Á¢ú´•¢¨¬ ü°¢,) map.entry_ref("poneyland").or_default();Áüá¢'ýß £úü•£1. map.insert("horseland".to_string(), Some(3));ÁË£úœÓ£·­ üë£FC assert_eq!(map.entry_ref("horseland").or_default(), &mut Some(3));Á<¶¤ϽTú¤Ë„ £«
Ÿ
Ÿ
²§
$­¥ç
<¥ا
\Ö¥
§
Ãò<Ñõ×õÝõãõéõ$…¥üš­ü—§L°Ý üè§%œ° ’¨útš¨ÿí¨ú<µ¨ϽÜÁ¨¯Äá¨úüé¨?Á
­©ú´µ©¨¬ üЩ>; let entry = map.entry_ref("poneyland").or_default_entry();Áü“ª*Œ² üª# assert_eq!(entry.get(), &None);Áêªúœòª·­ üŠ«1¹Â
üÀ«>; let entry = map.entry_ref("horseland").or_default_entry();Áüƒ¬*' assert_eq!(entry.key(), &"horseland");Áü²¬&# assert_eq!(entry.get(), &Some(3));Á<ݬϽ„¡­Ë„ Ö… Ÿ
Ÿ
²§
$î­éÑõò \õ­ا
\®
¨
Ãò<Ñõ×õÝõãõéõ$²­üǯTê
ò<«
œ¬
¢­
§®
¤¯
°
«
­
®
¬
ª
°
¯
šƒ Ô¯¬ƒ ׯ¾ƒ â¯Ѓ å¯⃠è¯ôƒ Lë¯Æ ±
²
³
̯ЯMOQSUWY[]_ÔÆ³ü¢°IË“
üð°! through the `VacantEntryRef`.Á–±útž±ÿñ±ú<¹±ϽÜű¯Äå±úüí±7«¤
ü©²  let key: &str = "poneyland";Áüβ63 assert_eq!(map.entry_ref(key).key(), "poneyland");Á<‰³Ͻͳé éÆ ò ©
 ѳ©
±
Ãò<Ñõ×õÝõãõéõ$Ò³ü£¸uüÿ³@= Sets the value of the entry with the `VacantEntryRef`'s key,ÁüÄ´*Œš
ó´útû´ÿÃ޵ú<–µϽÜ¢µ¯Äüµ&# use hashbrown::hash_map::EntryRef;Áíµúüõµ7«¤
ü±¶ ´Í
Ö¶úüÞ¶52 if let EntryRef::Vacant(o) = map.entry_ref(key) {Á¬˜·ý›
,²·õÍü¼·%«œ
<æ·Ͻ4ª¸Æ Ýõ£«
©
©
²§
$ã¸ç
<ø¸ا
\Œ¹
²
Ãò<Ñõ×õÝõãõéõ$±¸»,·¸ü¤¿ü˜»B? Sets the value of the entry with the [`VacantEntryRef`]'s key,Áüß»%œ° ‰¼út‘¼ÿä¼ú<¬¼Ͻܸ¼¯Äüؼ&ÎÐ
ƒ½úü‹½5ù§ Žúüͽ=: if let EntryRef::Vacant(v) = map.entry_ref("poneyland") {Áü¾#ÄŸ
ü·¾!òŸ
,ݾõÍ<ç¾Ͻd«¿Æ ÝõÖ… ©
©
²§
$þ¿ç
<“Àا
\§À
³
Ãò<Ñõ×õÝõãõéõ$¸¿»,¾¿ü圵
§
¤·
¸
¸

·
µ
çñ êÂøñ í‰ò ðšò óÂɯ°ÃÚ¯$µÃøø\Âù <ÐÃÊ <àëòLêÃ¥é¹
ÅL¹
egikmoqsü¬Ä=L¯Ä¥¥é´
¥º
º
´
ÍìµÚ
¹ÄÇLµÚ
ܼĵÚ
ÈL³ìlÉÄ
¹
ÝéãéééïéµÚ
ù$ÙÄLNDœÆ¹
±æ»
Êæ»
èæ»
»
¹
»
ÝéãéééïéµÚ
¯Ö  ¥éüîÇuüæÆRO Inserts all new key-values from the iterator and replaces values with existingÁü¹Ç41 keys with new values returned from the iterator.Áœ½
§¾
¤¿
À
½
¿
À
¾
çñ óÇøñ öljò ùÇšò üÇɯ³ÈÚ¯$¸Èøø\ÅÈ«òLÙÈ¥éÁ
ÒLÁ
SUWY[]_aüØÓ=üêÈSP Inserts all new key-values from the iterator to existing `HashMap<K, V, S, A>`.ÁüÂÉQN Replace values with existing keys with new values returned from the iterator.Á˜Êút ÊÿóÊú<»ÊϽüÇÊ%" use hashbrown::hash_map::HashMap;ÁñÊúüùÊ!ÜмŸË map.insert(1, 100);Á»ËúüÃË1. let some_iter = [(1, 1), (2, 2)].into_iter();ÁÔùË map.extend(some_iter);Áü˜ÌTQ // Replace values with existing keys with new values returned from the iterator.ÁüñÌ96 // So that the map.get(&1) doesn't return Some(&100).Áü¯Í&# assert_eq!(map.get(&1), Some(&1));ÁÚÍúüâÍ0- let some_vec: Vec<_> = vec![(3, 3), (4, 4)];ÁÌ—Î map.extend(some_vec);ÁµÎúü½Î$! let some_arr = [(5, 5), (6, 6)];ÁÌæÎ map.extend(some_arr);Áü„Ï  let old_map_len = map.len();Á©Ïúü±Ï/, // You can also extend from another HashMapÁüåÏ%" let mut new_map = HashMap::new();ÁÄÐ new_map.extend(map);Áü¬Ð+( assert_eq!(new_map.len(), old_map_len);ÁÜÐúüäÐ85 let mut vec: Vec<_> = new_map.into_iter().collect();Áü¡ÑHµÁ üîÑ@¡éijÒðÔüÐÒFC assert_eq!(vec, [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)]);Á<›ÓϽ4ÛÓê ê¥éµÚ
¼
¥Â
Â
 ‚Ô¼
ÞÚ
âÓðÚ
ÜåÓÛ
lòÓ
Á
ÝéãéééïéµÚ
$‡Ôù$ÔAClØÁ
±æÃ
ÊæÃ
èæÃ
Ã
Á
Ã
ÝéãéééïéµÚ
®Ü
ºÜ
üíÞüåÝRÔÛ
ü¸Þ4±Ü
ÃÅ
Ϯ
§Ç
¤È
É
Å
Æ
È
É
Ç

Íý öÞÞý ùÞºÄ
üÞÓ¥
ÿÞü– ¾ß— $Ãߊ æê$Êߊ ‹í$×ß‚« \äßå¥
LøßÂ÷Ê
ÒLÊ
òÞ|~ˆŠü¯ìEü‰àSÇÞ
üáàQ¥ß
ü·á63 The keys and values must implement [`Copy`] trait.ÁòáúüúáC@ [`Copy`]: https://doc.rust-lang.org/core/marker/trait.Copy.htmlÁÂâútÊâÿÃÝâú<åâϽüñâ%·à
›ãúü£ã!ÜмÉã‚á
åãúüíã let arr = [(1, 1), (2, 2)];Áü‘ä41 let some_iter = arr.iter().map(|(k, v)| (k, v));ÁÔÊäìá
üéäT‘â
üÂå9ðâ
ü€æ&´ã
«æúü³æ0òã
üèæ52 map.extend(some_vec.iter().map(|(k, v)| (k, v)));Á¢çúüªç$Ýä
üÓç52 map.extend(some_arr.iter().map(|(k, v)| (k, v)));Áèúü•è/çå
üÉè%¡æ
Ìóè new_map.extend(&map);Áì‘é assert_eq!(new_map, map);Á³éúü»é8¶ç
üøéHµÁ üÅê@¡éÄŠëðÔü§ëF¥è
<òëϽ4²ìë ëÂ÷¥Ä
¥Ë
Ë
 áìÄ
Íìíõ
¹ìÇLíõ
ü¼ì#íõ
ÈLþþ¬Éì
Ê
Ãæê‹í“ó³ñíõ
$æìù$ìì[]„ íÊ
±æÌ
ÊæÌ
èæÌ
Ì
Ê
Ì
æê‹í“ó³ñíõ
‰™ ¦ÿü‚ñüúïRÔÛ
üÍð4±Ü
ÃÎ
œÏ
§Ð
¤Ñ
Ò
Ð
Î
Ï
Ñ
Ò

Íý ‹ñÞý ŽñºÄ
‘ñÓ¥
”ñü– Ïñ— $ÔñÉí
$ÛñÚí
$èñ‚« \õñå¥
L‰òÂ÷Ó
ÒLÓ
‡ñlnprtvxzüËüAüšòSÇÞ
üòòQ¥ß
üÈó6öí
ƒôúü‹ôCÄî
ÓôútÛôÿÃîôú<öôϽü‚õ%·à
¬õúü´õ!ÜмÚõ‚á
öõúüþõŽð
ü¢ö let some_iter = arr.iter();ÁÔÆöìá
üåöT‘â
ü¾÷9ðâ
üü÷&´ã
§øúü¯ø0òã
Ôäø map.extend(&some_vec);Áƒùúü‹ù$Ýä
Ô´ù map.extend(&some_arr);ÁÓùúüÛù41 let mut vec: Vec<_> = map.into_iter().collect();Áü”úHµÁ üáú@¡éĦûðÔüÃûF¥è
<ŽüϽ4Îüì ìÂ÷íõ
Í
¥Ô
Ô
 ùüÍ
šö
͟š
üØüíõ
ÈL ÿŒåü
Ó
Ãæê‹í“ó³ñíõ
$þüù$„ýSU|¸ýÓ
±æÕ
ÊæÕ
èæÕ
Õ
Ó
Õ
æê‹í“ó³ñíõ
 ¦ÿ¦ÿ´ € Œ£€ Ž
Ö
ü½€ H<À€ ލ¨­µ6®Õ:Ç$Ö>E Ñë‹ò¨¨­µ6®Õ:Ç$Ö>E °kÑë‹ò°kØ
Ø
×
°kÁ ΀ $È€ üœ H ލ¨­µ6®Õ:Ç$Ö>E΂Ñë‹ò¨¨­µ6®Õ:Ç$Ö>E•ƒÑë‹ò°kÚ
Ú
Ù
°kÁ ­  üû O ŽÜ
òòéDöÔŽ÷ÚŽ5G®Ï&€uÜ
΂òòéDöÔŽ÷ÚŽ5G®Ï&€uÜ
•ƒ°kÝ
Ý
‡‚ 
Û
°kÁ ‘‚ $‹‚ üá‚ ODä‚ Žß
òòéDöÔŽ÷ÚŽ5G®Ï&€uß
΂òòéDöÔŽ÷ÚŽ5G®Ï&€uß
•ƒ°kà
à
í‚ 
Þ
°kÁ ÷‚ $ñ‚ üǃ slʃ ŽÒ
ÔŽõsY4è±ô΂òáÒ
ÔŽõsY4è±ô•ƒòá°kâ
ã
ã
â
Ó Þƒ “ÓLრ
á
°kòáÁ õƒ $؃ -/üÑ„ slÔ„ ŽÒ
ÔŽõsY4è±ô΂òáÒ
ÔŽõsY4è±ô•ƒòá°kå
æ
æ
å
Ó è„ “ÓLë„ 
ä
°kòáÁ ÿ„ $â„ -/üÛ… ODÞ… Žè
áá½KåÔŽíýW*¸¡ÀÑè
΂áá½KåÔŽíýW*¸¡ÀÑè
•ƒ°ké
é
ç… 
ç
°kÁ ñ… $ë… üÁ† ODĆ Žë
áá½KåÔŽíýW*¸¡ÀÑë
΂áá½KåÔŽíýW*¸¡ÀÑë
•ƒ°kì
ì
͆ 
ê
°kÁ ׆ $ц ü§‡ UTª‡ Žî
îî£LòÔŽh±Uî
΂îî£LòÔŽh±Uî
•ƒ°kï
ï
µ‡ 
í
°kÁ ¿‡ $¹‡ ü“ˆ UT–ˆ Žñ
îî£LòÔŽh±Uñ
΂îî£LòÔŽh±Uñ
•ƒ°kò
ò
¡ˆ 
ð
°kÁ «ˆ $¥ˆ üÿˆ q,‚‰ Žûû‹MÔŽá6´ïÖ6­΂΂‹òûû‹MÔŽá6´ïÖ6­°k•ƒ•ƒ‹ò°kô
ô
ó
°k¯ —‰ $ˆ‰ » raw-entryÁ¬Éìà £ ¾ èT Âõ
÷
íÕL" Çõ
ø
í†7\- õ
ù
íí¶LL1õ
û
j^cõ4Wõ
ü
™ñ4_Äõ
ý
k_d™ñÅõ
ý
k_dâDgõ
þ
ÑT~õ
 õ¨õ
 ò× `õ
ƒ p,ª¿cõ
 pÂcõ
 \\ÃÅeõ
 Žšeõ
 Ž eõ
 íáëõ
ˆ |ˆvydgT?TW>A/2ùû,vìîÙÛL˜Èžº¼T¶ŠŒLÛiüç/œŠ § ¤Œ   Œ Š çñ ìøñ ï‰ò òšò õ«ò¥éŽ .0358:=?üç#Eü2/ Creates a raw entry builder for the `HashMap`.ÁÔúüÜEB Raw entries provide the lowest level of control for searching andÁü¦IF manipulating a map. They must be manually initialized with a hash andÁüôFC then manually searched. After this, insertions into a vacant entryÁü¿.+ still require an owned key to be provided.Áòúüú96 Raw entries are useful for such exotic situations as:Á¸ú´À * Hash memoizationÁüÛMJ * Deferring the creation of an owned key until it is known to be requiredÁü­@= * Using a search key that doesn't work with the Borrow traitÁüò<9 * Using custom comparison logic without newtype wrappersÁ³úü»MJ Because raw entries provide much more low-level control, it's much easierÁüMJ to put the `HashMap` into an inconsistent state which, while memory-safe,ÁüßLI will cause the map to produce seemingly random results. Higher-level andÁü° GD more foolproof APIs like `entry` should be preferred when possible.Áü úü„
KH In particular, the hash used to initialized the raw entry must still beÁüÔ
OL consistent with the hash of the key that is ultimately stored in the entry.Áü¨ MJ This is because implementations of `HashMap` may need to recompute hashesÁüú >; when resizing, at which point only the keys are available.Á½ úüÅ FC Raw entries give mutable access to the keys. This must not be usedÁü
PM to modify how the key would compare or hash, as the map will not re-evaluateÁüå
HE where the key should go, meaning the keys may become "lost" if theirÁü²LI location does not reflect their state. For instance, if you change a keyÁüƒKH so that the map now contains keys which compare equal, search may startÁüÓRO acting erratically, with two keys randomly masking each other. ImplementationsÁüªPM are free to assume this doesn't happen (within the limits of memory-safety).Áÿút‡ÿÚúϽü®(% use core::hash::{BuildHasher, Hash};ÁüÛ41 use hashbrown::hash_map::{HashMap, RawEntryMut};Áúüœ!ÜÐüÂ52 map.extend([("a", 100), ("b", 200), ("c", 300)]);Áüúü„YV fn compute_hash<K: Hash + ?Sized, S: BuildHasher>(hash_builder: &S, key: &K) -> u64 {Áüâ use core::hash::Hasher;Áü†41 let mut state = hash_builder.build_hasher();Áì¿ key.hash(&mut state);Á´á state.finish()ÁõÍúüŽ'ãÔ
üº.+ match map.raw_entry_mut().from_key(&"a") {Áüí1. RawEntryMut::Vacant(_) => unreachable!(),Áü£,) RawEntryMut::Occupied(mut view) => {ÁüÔ)ãÕ
ü‚#—Ö
üª" let new_v = (*v) * 10;Á¼Ñ *v = new_v;Áüí0äÖ
¦Òõͺúü È×
ìçêÑúÔ‘Ø
ü°0- let hash = compute_hash(map.hasher(), &"c");ÁüåC@ match map.raw_entry_mut().from_key_hashed_nocheck(hash, &"c") {Áü­1¬¯üã(% RawEntryMut::Occupied(view) => {Áü85 assert_eq!(view.remove_entry(), ("c", 300));Á¦ÒõÍüå52 assert_eq!(map.raw_entry().from_key(&"c"), None);Á쟞Ú
ÁúüÉ*ùé
”ø let key = "d";Áü0- let hash = compute_hash(map.hasher(), &key);ÁüÄ>; match map.raw_entry_mut().from_hash(hash, |q| *q == key) {Áü‡30 RawEntryMut::Occupied(_) => unreachable!(),Áü¿&# RawEntryMut::Vacant(view) => {Áüê41 let (k, value) = view.insert("d", 4000);Áü£2/ assert_eq!((*k, *value), ("d", 4000));ÁÜÚ *value = 40000;Á¦ÒõÍü’ ! assert_eq!(map[&"d"], 40000);Áì¸ êÑÚ úüâ >˵ü¥!1¬¯üÛ!(‚³üˆ":7 assert_eq!(view.remove_entry(), ("d", 40000));ÁLÇ"¦Ò,Õ"õÍüß"$! assert_eq!(map.get(&"d"), None);Áìˆ#žÚ
<ª#Ͻlî#í í¥é  ¢o Øõ
Ì@­™âP<ÝíÝéãéééïé  ü#
Ž Ýéãéééïé$$ü©2:üã$<9 Creates a raw immutable entry builder for the `HashMap`.Á¤%úü¬%E‰›üö%IØ›ÜÄ& then manually searched.Áä&ú´ì& This is useful forÁ´‡'žü¢'@„Ÿüç'<Ο¨(úü°(QN Unless you are in such a situation, higher-level and more foolproof APIs likeÁô†) `get` should be preferred.Á©)úü±)XU Immutable raw entries have very limited use; you might instead want `raw_entry_mut`.ÁŽ*út–*ÿé*ú<±*Ͻü½*(éªÜê*¯ÄŠ+úü’+!ÜÐü¸+5ó«ò+úüú+Y¾¬üØ,¡­üü,4Ê­ìµ-‡®´×-­®,ò-õÍü-úü„.-* for k in ["a", "b", "c", "d", "e", "f"] {Áü¶.1. let hash = compute_hash(map.hasher(), k);Áüì.%" let v = map.get(&k).cloned();Áü–/-* let kv = v.as_ref().map(|v| (&k, v));ÁÈ/úüÐ/2/ println!("Key: {} and value: {:?}", k, v);Á‡0úü052 assert_eq!(map.raw_entry().from_key(&k), kv);ÁüÉ0EB assert_eq!(map.raw_entry().from_hash(hash, |q| *q == k), kv);Áü“1JG assert_eq!(map.raw_entry().from_key_hashed_nocheck(hash, &k), kv);Á,â1õÍ<ì1ϽL°2î î¥é¾ ¾ ÇrÄ Øõ
%ø:Îi1œÉîÝéãéééïé  º2
Ýéãéééïé$»2ü¢BAü•3TQ A builder for computing where in a [`HashMap`] a key-value pair would be stored.Áê3úüî3?< See the [`HashMap::raw_entry_mut`] docs for usage examples.Á®4úü²4HE [`HashMap::raw_entry_mut`]: struct.HashMap.html#method.raw_entry_mutÁû4útÿ4ÿÃŽ5ú<5Ͻüš5^[ use hashbrown::hash_map::{RawEntryBuilderMut, RawEntryMut::Vacant, RawEntryMut::Occupied};ÁÜù5¯Äü•6(骾6úüÂ6!ÜÐüä6GD map.extend([(1, 11), (2, 12), (3, 13), (4, 14), (5, 15), (6, 16)]);Áì¬7ó€ Ê7úüÎ7Y¾¬ü¨8¡­üÈ84Ê­ìý8‡®´›9­®,²9õ͸9úü¼9C@ let builder: RawEntryBuilderMut<_, _, _> = map.raw_entry_mut();Á€:úœ„: // Existing keyÁü˜:  match builder.from_key(&6) {Áü¹:$! Vacant(_) => unreachable!(),ÁüÞ:63 Occupied(view) => assert_eq!(view.get(), &16),Á,•;õÍ›;ú´Ÿ; for key in 0..12 {Áü¶;41 let hash = compute_hash(map.hasher(), &key);Áüë;+( let value = map.get(&key).cloned();Áü—<:7 let key_value = value.as_ref().map(|v| (&key, v));ÁÒ<úüÖ<85 println!("Key: {} and value: {:?}", key, value);Á=úü“=2/ match map.raw_entry_mut().from_key(&key) {ÁüÆ=NK Occupied(mut o) => assert_eq!(Some(o.get_key_value()), key_value),Áü•>1. Vacant(_) => assert_eq!(value, None),ÁLÇ>¦ÒüÑ>GD match map.raw_entry_mut().from_key_hashed_nocheck(hash, &key) {Áü™?NÉÑüè?1¡ÒLš@¦Òü¤@B? match map.raw_entry_mut().from_hash(hash, |q| *q == key) {Áüç@NÉÑü¶A1¡ÒLèA¦Ò,òAõÍøAúìüAó€ <šBϽ¼Yà œ § ¤       Íý ÄBÞý ÇBºÄ
ÊBÓ¥
¬ÍBå¥
LÐBâ© üêB ó©  îÄ
…¦
  ¢o Øõ
Ì@­™âP<ÝÃæê‹í“ó³ñÌ@­™âP<Ý ÀBŸ¡¤¦©«® ÍB‹ò°êBõ
  ’øü›Y8üCP
àCúüäC/, This is a lower-level version of [`Entry`].Á”Dúü˜DSP This `enum` is constructed through the [`raw_entry_mut`] method on [`HashMap`],ÁüìDC@ then calling one of the methods of that [`RawEntryBuilderMut`].Á°Eúü´E$Å£ ôÙE‚æ
üøE?< [`raw_entry_mut`]: struct.HashMap.html#method.raw_entry_mutÁü¸F:7 [`RawEntryBuilderMut`]: struct.RawEntryBuilderMut.htmlÁóFút÷FÿÆGú<ŠGϽü’G(éªü»GIF use hashbrown::hash_map::{HashMap, RawEntryMut, RawOccupiedEntryMut};Á…Húü‰H!ÜÐü«H/, map.extend([('a', 1), ('b', 2), ('c', 3)]);ÁìÛHêÑùHúüýHY¾¬ü×I¡­ü÷I4Ê­ì¬J‡®´ÊJ­®,áJõÍçJúäëJ‘º
üˆKGD let raw: RawEntryMut<_, _, _> = map.raw_entry_mut().from_key(&'a');ÁüÐKC@ let _raw_o: RawOccupiedEntryMut<_, _, _> = raw.insert('a', 10);Áì”LêѲLúü¶LÄ»
üÖL74 map.raw_entry_mut().from_key(&'d').insert('d', 40);ÁìŽM“ЬMúü°M¢¼
üÐM0- let hash = compute_hash(map.hasher(), &'b');ÁN
let kv = mapÁÄ’N .raw_entry_mut()Áü«N,) .from_key_hashed_nocheck(hash, &'b')ÁäØN .or_insert('b', 20);ÁüõN'$ assert_eq!(kv, (&mut 'b', &mut 2));Á|O *kv.1 = 20;Áì­O“ŠËOúüÏO"¶½
üòO0- let hash = compute_hash(map.hasher(), &'e');Á„£PïàÄ´PˆáüÍP,) .from_key_hashed_nocheck(hash, &'e')ÁäúP .or_insert('e', 50);Áü—Q(% assert_eq!(kv, (&mut 'e', &mut 50));ÁìÀQ¨©ÞQúüâQ$›¾
ü‡R0- let hash = compute_hash(map.hasher(), &'c');Á„¸RïàÄÉRˆáüâR'$ .from_hash(hash, |q| q == &'c')ÁüŠS&# .or_insert_with(|| ('c', 30));Áü±S'$ assert_eq!(kv, (&mut 'c', &mut 3));Á|ÙS *kv.1 = 30;ÁìéS¨©‡Túü‹T'¼¿
ü³T0- let hash = compute_hash(map.hasher(), &'f');Á„äTïàÄõTˆáüŽU'$ .from_hash(hash, |q| q == &'f')Áü¶U&# .or_insert_with(|| ('f', 60));ÁüÝU(% assert_eq!(kv, (&mut 'f', &mut 60));Áì†Vó€ ¤Vúü¨V'®À
ÐVúüÔVFíÀ
ü›WDÒèüàW@¡éÄ¡XðÔüºXXU assert_eq!(vec, [('a', 10), ('b', 20), ('c', 30), ('d', 40), ('e', 50), ('f', 60)]);Á<“YϽÎYØ œ §š ¤ œ š   œ ˜ Íý ´YÞý ·YºÄ
ºYÓ¥
¬½Yå¥
LÀYâ© ü¦p"ó©  …¦
îÄ
œÎp  ž óOŸ ˆ  ¡ P¢ ˆ"ø0ôÂw‚Ãæê‹í“ó³ñ"ø0ôÂw‚ ž   ¡ ž Ÿ £ £ Ñp© Qõ
ª õ
« µ6õ
©B·á}ÂÞøÃæê‹í“ó³ñùì¡ ¢   öq¼ õ
½ µ6õ
âж^_XÃæê‹í“ó³ñùì°YŠ˜Ÿ ½Y‹òº´ÚY¥Ç
õYútýYÿÃZú<˜ZϽü¤Z41 use hashbrown::{hash_map::RawEntryMut, HashMap};ÁüÝZAµÈ
£[úü«[.ô®üÞ[1¬¯ü”\'$ RawEntryMut::Occupied(_) => { }Á,À\õÍ<Ê\Ͻº 
ž Ãæê‹í“ó³ñººúíùì  —òüß\#  úí»œ‰]·Ë
¡]út©]ÿü]ú<Ä]ϽüÐ]4Ïïü‰^5¸Ã^úüË^-* match map.raw_entry_mut().from_key("a") {Áüý^3“¶üµ_%" RawEntryMut::Vacant(_) => { }Á,ß_õÍ<é_Ͻ» 
¡ Ãæê‹í“ó³ñ»»çîùì  ”õüü_!  çîüÃoBü£`1. A view into an occupied entry in a `HashMap`.ÁüÕ`+( It is part of the [`RawEntryMut`] enum.Áaúü…a*' [`RawEntryMut`]: enum.RawEntryMut.htmlÁ°aút´aÿÃÃaú<ÇaϽüÏa(éªüøaIàÛÂbúüÆb!ÜÐüèb2º¹
›cúüŸcY¾¬üùc¡­ü™d4Ê­ìÎd‡®´ìd­®,ƒeõ͉eúüec` let _raw_o: RawOccupiedEntryMut<_, _, _> = map.raw_entry_mut().from_key(&"a").insert("a", 100);ÁìñeêÑfúü“f'ãÔ
ü»f.ô®üêf1¬¯üœg,ç¯üÉg)ãÕ
üóg#—Ö
ü—h"¹°¼ºhä°üÒh0äÖ
Lƒi¦Ò,iõÍ“iúü—i È×
ì¸iêÑÖiúÔÚiØ
üõi0í±ü¦jC§²üêj1¬¯üœk(‚³üÅk7’Ù
Lýk¦Ò,‡lõÍül5´ìÃlžÚ
álúüål0- let hash = compute_hash(map.hasher(), &"b");Áü–m>; match map.raw_entry_mut().from_hash(hash, |q| *q == "b") {ÁüÕm1¬¯ü‡n(‚³ü°n74 assert_eq!(view.remove_entry(), ("b", 20));ÁLèn¦Ò,ònõÍüøn$! assert_eq!(map.get(&"b"), None);Áìo†Ÿ<»oϽàYä œ¥ §¦ ¤§ ¨ ¨ ¤ ¦ § ¥ Íý æoÞý éoºÄ
ìoÓ¥
¬ïoå¥
Lòoâ© ç ó© î …¦
õ îÄ
ç úí©B·á}ÂÞø© ª « âodfiknps ïo‹ò¤Œp$Œpõ
£ £ ŒÞ
x
,¦põ
£ £ ÃâšA¤AœÚAi†bªñüz¦ÿ³ñÌ
dÎpõ
£ £ ÓóüæpŠ8 §® ¤¯ ° ® ï¯ ­ °  Íý òpÞý õpºÄ
øpÓ¥
ûpѹ $¸qã¹ $Åqèß
$Òqúß
$ßqå¥
Læq¸ÿHJMORTWYüõqŠ8𜲠§³ ¤´ µ ´ µ ³ ð²  Íý rÞý „rºÄ
‡rÓ¥
ŠrÊá
$ÇrÛá
$Ôrìá
$árýá
$îrå¥
Lõr¸ÿHJMORTWYüà@ü…s.å
ü´s+Ðõàsúüäs*‘ötút“tÿâtú<¦tϽü®t(éªü×tGD use hashbrown::hash_map::{HashMap, RawEntryMut, RawVacantEntryMut};ÁŸuúü£u.´ç
ÒuúüÖuY¾¬ü°v¡­üÐv4Ê­ì…w‡®´£w­®,ºwõÍÀwúüÄwVS let raw_v: RawVacantEntryMut<_, _, _> = match map.raw_entry_mut().from_key(&"a") {Áü›x*' RawEntryMut::Vacant(view) => view,ÁüÆx3“¶4úx€é
Ôy raw_v.insert("a", 10);Áüœy/²é
ÌyúüÐy*ùé
üûy0ˆüü¬zC@ match map.raw_entry_mut().from_key_hashed_nocheck(hash, &"b") {Áüðz3“¶ü¤{&жüË{1. let (k, value) = view.insert("b", 2);Áüý{/, assert_eq!((*k, *value), ("b", 2));ÁÄ­|êë
LÆ|¦Ò,Ð|õÍüÖ|/©ì
†}úüŠ}0í±ü»}>; match map.raw_entry_mut().from_hash(hash, |q| *q == "c") {Áüú}3“¶ü®~&жüÕ~B? assert_eq!(view.insert("c", 30), (&mut "c", &mut 30));ÁL˜¦ÒõÍü¨/, assert!(map[&"c"] == 30 && map.len() == 3);ÁϽòY÷ œ¸ §¹ ¤º » ¹ · ¸ º » Íý Þý „€ºÄ
‡€Ó¥
¬Š€å¥
Lâ© ü§€"ó© 
…¦
îÄ
œÏ€çîâж^_X¼ ½ ýjlnprtv Š€‹òw,§€õ
  ð|dÏ€õ
  Ù‚üç‰>üç€TǼúüÀ;8 See the [`HashMap::raw_entry`] docs for usage examples.Áüúü€‚@= [`HashMap::raw_entry`]: struct.HashMap.html#method.raw_entryÁÁ‚útÅ‚ÿÃÔ‚ú<Ø‚Ͻüà‚85 use hashbrown::hash_map::{HashMap, RawEntryBuilder};Áü™ƒ(骃úüƃ!ÜÐüèƒ,) map.extend([(1, 10), (2, 20), (3, 30)]);Á•„úü™„Y¾¬üó„¡­ü“…4Ê­ìÈ…‡®´æ…­®,ý…õ̓†úœ‡† for k in 0..6 {Áü›†2/ let hash = compute_hash(map.hasher(), &k);ÁüΆ%¬Âüô†-Û¢‡úü¦‡2žÃüÙ‡@= let builder: RawEntryBuilder<_, _, _> = map.raw_entry();Áüšˆ-* assert_eq!(builder.from_key(&k), kv);ÁüȈE¥ÄüމJôÄ,Ù‰õÍ<߉ϽZÿ œÀ §Á ¤ à  À Á ¿ à Íý †ŠÞý ‰ŠºÄ
ŒŠÓ¥
¬Šå¥
L’Š⩠䬊ó©  îÄ
…¦
¾ ¾ ÇrÄ Øõ
%ø:Îi1œÉÃæê‹í“ó³ñ%ø:Îi1œÉÄ ‚Š¥§©«­¯± Š‹ò²¬Šõ
¾ ¾ ¼÷üÍŠBÃÆ œÇ §È ¤É Ê Æ Ç É Ê È Íý ÖŠÞý ÙŠºÄ
ÜŠÓ¥
ߊå¥
L⊠×Ë Í ÒŠ:<>@BDFHü‹Šü–‹/, Creates a `RawEntryMut` from the given key.ÁÊ‹útÒ‹ÿÃå‹ú<í‹Ͻüù‹4›«²ŒúüºŒ5ù§ ”ôŒ let key = "a";Áü‹NK let entry: RawEntryMut<&str, u32, _> = map.raw_entry_mut().from_key(&key);ÁÜÞ entry.insert(key, 100);Áüþº© <¢ŽϽD’ñ × ñ¢ùìÅ ¢Ì Ì  §Å ÎìñŸ ‚« šeñŸñŸæê
Ë Ãæê‹í“ó³ññŸ ¤ceüö—ü–‘<9 Creates a `RawEntryMut` from the given key and its hash.Áבútß‘ÿÃò‘ú<ú‘Ͻü†’(éªü³’4›«ì’úüô’Y¾¬üÒ“¡­üö“4Ê­쯔‡®´Ñ”­®,ì”õÍö”úüþ”5ù§ ”¸•üÏ•0‘µü„–c` let entry: RawEntryMut<&str, u32, _> = map.raw_entry_mut().from_key_hashed_nocheck(hash, &key);ÁÜì–†žüŒ—º© <°—Ͻ¼ý—ò × òñŸùìÅ ¢Î Î  ¬˜Å    •˜Ì lä˜
Í Ãæê‹í“ó³ññŸ$˜˜§$ž˜ ©˜GIü·™BÃÐ œÑ §Ò ¤Ó Ô Ñ Ô Ð Ò Ó Íý À™Þý ÙºÄ
ƙӥ
É™å¥
LÌ™ ×Õ Ø ¼™:<>@BDFHüˆ¡ƒü€šFC Creates a `RawEntryMut` from the given hash and matching function.ÁËšútÓšÿÃæšú<îšϽüúš(éªü§›4›«à›úüè›Y¾¬üÆœ¡­üêœ4ʭ죇®´Å­®õÍêúüò5ù§ ”¬žüÞ0‘µüøž^[ let entry: RawEntryMut<&str, u32, _> = map.raw_entry_mut().from_hash(hash, |k| k == &key);ÁÜÛŸ†žüûŸº© <Ÿ ϽL¡ ×É ùìÏ Ö Ö Ï “ž ™¡× “"É  × æê¤ö¡× É ¼¬˜"$†¢
Õ Ãæê‹í“ó³ñÉ $œ¡§$¢¡is_matchÁD­¡ï¡üò¢4õ¢õ
 ×É ùìÏ Ù Ù Ï “ž ü¢Ú “"É  Ú æê¤Ý£Ú É ²®˜"$í£
Ø Ãæê‹í“ó³ñÉ $ÿ¢§$…£ž¬D”£Ö£D¡¤Ø ±æÛ ÊæÛ èæÛ Û Ø Û æê‹í“ó³ñÉ úþ É üȧ?ÃÝ œÞ §ß ¤à á à á ß Ý Þ Íý ѧÞý Ô§ºÄ
×§Ó¥
򤌴
Lݧã™â ä æ é ͧ@BDFHJLNüž«üލ%" Access an immutable entry by key.Á¸¨útÀ¨ÿÃÓ¨ú<Û¨ϽÜ稯ć©úü©B? let map: HashMap<&str, u32> = [("a", 100), ("b", 200)].into();Á”Ö©üí©C@ assert_eq!(map.raw_entry().from_key(&key), Some((&"a", &100)));Á<µªϽD¥«óã™ óñŸ©Ó Ü ¢ã ã  º«Ü    ®«‚« \í«» $…¬Ì lŒ¬
â Ãæê‹í“ó³ññŸ$±« ·«PRüijü¤­41 Access an immutable entry by a key and its hash.ÁÝ­útå­ÿÃø­ú<€®ϽüŒ®(éªܹ®¯ÄÙ®úüá®Y¾¬ü¿¯¡­üã¯4Ê­윰‡®´¾°­®,Ù°õÍã°úüë°B޲”²±üɱ0‘µüþ±XU assert_eq!(map.raw_entry().from_key_hashed_nocheck(hash, &key), Some((&"a", &100)));Á<Û²Ͻ¼Ë³ôã™ ôñŸ©Ó Ü ¢å å  ú³Ü    ã³Ì l­´
ä Ãæê‹í“ó³ññŸ$æ³§$ì³ ÷³GIü³µp4¶µõ
ã™É ©Ó Ü ç ç Ü “ž ½µõ“"É  õæêŒ‘¶õÉ Ë»˜"$ž¶
æ Ãæê‹í“ó³ñÉ $Àµ§$Ƶž¬DÕµDѶæ ±æè Êæè èæè è æ è æê‹í“ó³ñÉ úþ¡°üñ½süη<9 Access an immutable entry by hash and matching function.Á¸út—¸ÿê¸ú<²¸Ͻü¾¸(éªÜ븯ċ¹úü“¹Y¾¬üñ¹¡­ü•º4Ê­ìꇮ´ðº­®,‹»õÍ•»úü»B޲”ä»üû»0‘µü°¼SP assert_eq!(map.raw_entry().from_hash(hash, |k| k == &key), Some((&"a", &100)));Á<ˆ½ϽLø½ã™É ©Ó Ü ê ê Ü “ž ‚¾ö“"É  öæêŒÒ¾öÉ ÇÁ˜"$ß¾
é Ãæê‹í“ó³ñÉ $…¾§$‹¾ž¬D–¾ü˜¿;Ãì œí §î ¤ï ð ð î ì í ï Íý ¡¿Þý ¤¿ºÄ
§¿Ó¥
ª¿å¥
L­¿ùìñ ò ó õ ÷ ¿CEGIKMOQü‘ÃüÚ¿EB Sets the value of the entry, and returns a `RawOccupiedEntryMut`.Á¤Àút¬ÀÿÿÀú<ÇÀϽÜÓÀ¯ÄóÀúüûÀ5ù§ üµÁTQ let entry = map.raw_entry_mut().from_key("horseyland").insert("horseyland", 37);ÁŽÂúü–Â96 assert_eq!(entry.remove_entry(), ("horseyland", 37));Á<ÔÂϽ4˜Ãùìæê‹íúíë ë — $ó« \„Ä
ñ Ãæê‹í“ó³ñ$ŸÃëR¥Ã»,­Ãüîʃü†ÆRЪ üÝÆ96 mutable references to the key and value in the entry.Á›Çút£ÇÿöÇú<¾ÇϽÜÊǯÄêÇúüòÇ5ù§ ¬Èúü´ÈHE map.raw_entry_mut().from_key("poneyland").or_insert("poneyland", 3);ÁüÉ$ü¬ ªÉúü²ÉQN *map.raw_entry_mut().from_key("poneyland").or_insert("poneyland", 10).1 *= 2;ÁüˆÊ$® <±ÊϽLõÊùìæê‹í Ãæêú¸ ë ë — $ÔË‚« \åË
ò Ãæê‹í“ó³ñ$ÿÊ default_keyÁ\…Ë default_valÁ\•ËüÿÑü¸Í]ü´ üšÎEB and returns mutable references to the key and value in the entry.ÁäÎútìÎÿÃÿÎú<‡ÏϽܓϯijÏúü»Ï85 let mut map: HashMap<&str, String> = HashMap::new();ÁøÏúü€ÐA> map.raw_entry_mut().from_key("poneyland").or_insert_with(|| {ÁüÆÐ)& ("poneyland", "hoho".to_string())Á<ôÐ });Á€ÑúüˆÑ52 assert_eq!(map["poneyland"], "hoho".to_string());Á<ÂÑϽt†ÒùìÉ æËë ô ô ë “ž •Ò¶º ”ÙÒÉ ˜"¦ÿ4åÒ— $øÒ‚« \‰Ó
ó Ãæê‹í“ó³ñÉ $˜Ò><žÒfhüÕÚUüÕDÖÇ üØÕ#¥È €ÖútˆÖÿÛÖú<£ÖϽܯÖ¯ÄÏÖúü×Ö5ù§ ‘×ú¼™× map.raw_entry_mut()Áìµ× .from_key("poneyland")Áü××'$ .and_modify(|_k, v| { *v += 1 })ÁüƒØ# .or_insert("poneyland", 42);Áü«Ø%²Ê ÕØú¼ÝصÒìùØÖÒü›Ù'þÒüÇÙ" .or_insert("poneyland", 0);ÁüîÙ%šË <˜ÚϽTÜÚùìÉ ùìë ö ö ë “ž çÚ÷ø–"É  ÷æê ø‹í´“Û÷øÉ ÎÖ˜"!
õ Ãæê‹í“ó³ñÉ $êÚ± ðÚü…ëeü‹ÞF¯Í üÖÞE€Î ü ß!ÐÎ ÆßútÎßÿÃáßú<éßϽÜõ߯Äü•à)& use hashbrown::hash_map::RawEntryMut;ÁÃàúüËà5ù§ …áúœá–РĥáˆáôÂá .from_key("poneyland")Áüåá3ÙÐ âúŒ¥â£Ñ ü»â%" RawEntryMut::Vacant(_) => {},Áüåâ-* RawEntryMut::Occupied(_) => panic!(),Á,—ãõÍ¡ãúü©ã úÒ ÎãúœÖã–Ð Äîãˆáô‹äÆØü®ä(ÎÓ üÛä(Ô ôˆå³Ô ¼«åÛÔ \ÇåüÔ ×åúŒßå£Ñ üõå%" RawEntryMut::Occupied(e) => {ÁüŸæ.æÑ üÒæ%æÕ TüæãÁü‹ç+( RawEntryMut::Vacant(_) => panic!(),Á,»çõÍÅçúüÍç%šË ÷çúœÿç–Ð Ä—èˆáô´èÆØü×è/§× ‹éúŒ“é£Ñ ü©é%™ÙüÓé-ÉÙ,…êõÍêúü—ê,ïØ <ÈêϽ´ŒëùìÉ ùìë ø ø ë “ž £ëù–"É  ùæê‹íÔÏëùÉ ’à˜"»Û Làë
÷ Ãæê‹í“ó³ñÉ $¦ë± ¬ë{}üŽíCÃú œû §ü ¤ý þ ý û ü ú þ Íý —íÞý šíºÄ
íÓ¥
 íå¥
L£íúíÿ ƒ ˆ Š Œ “í^`bdfhjl¼¹ñüØí-²ä Šîút’îÿÃ¥îú<­îϽü¹î4›«òîúüúîFC let mut map: HashMap<&str, u32> = [("a", 100), ("b", 200)].into();ÁÅïúüÍï.ô®ü€ð+¡Üü°ð=: RawEntryMut::Occupied(o) => assert_eq!(o.key(), &"a")Á,òðõÍ<üðϽÀñú úúí úæêù  Äñù
ÿ Ãæê‹í“ó³ñ$Åñü£ù#ü‡ò52 Gets a mutable reference to the key in the entry.ÁÁòútÉòÿÃÜòú<äòϽüðò4›«¤©ó use std::rc::Rc;ÁÂóúüÊó let key_one = Rc::new("a");Áüîó let key_two = Rc::new("a");Á’ôúüšô96 let mut map: HashMap<Rc<&str>, u32> = HashMap::new();ÁüØô$! map.insert(key_one.clone(), 10);Áõúü‰õ" assert_eq!(map[&key_one], 10);Áü°õPM assert!(Rc::strong_count(&key_one) == 2 && Rc::strong_count(&key_two) == 1);Á…öúüö2/ match map.raw_entry_mut().from_key(&key_one) {ÁüÄö+¡Üüôö)& RawEntryMut::Occupied(mut o) => {Áü¢÷+( *o.key_mut() = key_two.clone();ÁLÒ÷¦Ò,à÷õÍüê÷" assert_eq!(map[&key_two], 10);Áü‘øPM assert!(Rc::strong_count(&key_one) == 1 && Rc::strong_count(&key_two) == 2);Á<æøϽ<ªùû ûúí ûæêù  ²ùù
Ãæê‹í“ó³ñ$·ùü•‚"üúGD Converts the entry into a mutable reference to the key in the entryÁüÍú,Äù þúút†ûÿÙûú<¡ûϽü­û4›«¤æûÉæÿûúü‡üõæü«üŸçÏüúü×ü9Öçü•ý$šè¾ýúüÆý"ÖèüíýPƒéÂþúüÊþ" let inside_key: &mut Rc<&str>;Áñþúüùþ2ëéü°ÿ+¡Üüàÿ>; RawEntryMut::Occupied(o) => inside_key = o.into_key(),Á,£€õÍü­€" *inside_key = key_two.clone();ÁÔ€úüÜ€"½ëüƒPêëϽDœ‚úíèËù ù
Ãæê‹í“ó³ñ$¥‚¼Ö†üò‚/ãí ¦ƒút®ƒÿÃÁƒú<ɃϽüÕƒ4›«Ž„úü–„Fåâá„úüé„.ô®üœ…+¡ÜüÌ…>; RawEntryMut::Occupied(o) => assert_eq!(o.get(), &100),Á,õÍ<™†Ͻ݆ü üúí ü‹íù  á†ù
Ãæê‹í“ó³ñ$â†üÁŒ"ü¤‡Sæø üü‡,Äù ­ˆútµˆÿÃȈú<ЈϽü܈4›«•‰úüFåâè‰úÄð‰¯ü Šúü•Š.ô®üÈŠ+¡ÜüøŠ96 RawEntryMut::Occupied(o) => value = o.into_mut(),Á,¶‹õÍ”À‹ *value += 900;Á׋úüß‹  assert_eq!(map[&"a"], 1000);Á<„ŒϽDÈŒúíú¸ ù ù
ƒ Ãæê‹í“ó³ñ$ÑŒüµ‘#üž7¬ñ ÚúÿÃõúϽü‰Ž4›«ÂŽúüÊŽFåâúü.ô®üÐ+¡Üü€<9 RawEntryMut::Occupied(mut o) => *o.get_mut() += 900,ÁõÍËúüÓ ËøϽ<¼‘ý ýúí ý‹íù  Ä‘ù
Ãæê‹í“ó³ñ$É‘ü‘–'ü“’74 Gets a reference to the key and value in the entry.ÁÏ’út×’ÿÃê’ú<ò’Ͻüþ’4›«·“úü¿“Få⊔úü’”.ô®üÅ”+¡Üüõ”PM RawEntryMut::Occupied(o) => assert_eq!(o.get_key_value(), (&"a", &100)),Á,Ê•õÍ<Ô•Ͻl˜–þ þúí þæê þ‹íù  ¦–ù
Ãæê‹í“ó³ñ$§–üÀŸ7ü­—?< Gets a mutable reference to the key and value
üÉ%" let raw_entry = match raw_entry {Áü«É+¡ÜüÛÉA®ü¡Ê úüÆÊ  assert_eq!(v, 1000);Á„ëÊ׌\€Ëñž4Ë€é
¬›Ë match raw_entry {ÁüµË&# RawEntryMut::Vacant(_) => { },ÁüàË-ÉÙ4’Ì€é
üÌ$œ—<ÆÌϽ”ŠÍúíÉ ùìù   ù “ž Í–"É  æê‹íÔàÍÉ «£˜"»Û LñÍ
Œ Ãæê‹í“ó³ñÉ $ Í± ¦Í{}tˆÏŒ ±æŽ ÊæŽ èæŽ Ž Œ Ž æê‹í“ó³ñÉ Š’
É \ÀÏŒ ±æ Êæ èæ  Œ  æê‹í“ó³ñÉ ‹í¦ÿæêüœÒAà œ § ¤      Íý ¥ÒÞý ¨ÒºÄ
«ÒÓ¥
®Òå¥
L±Òçî ˜ ¡Ò@BDFHJLNüÌ×rüäÒ=: Sets the value of the entry with the `VacantEntry`'s key,Áü¦Ó*Œš
ÕÓútÝÓÿÃðÓú<øÓϽü„Ô4›«½ÔúüÅÔFåâÕúü˜Õ.+ match map.raw_entry_mut().from_key(&"c") {ÁüËÕ-ÉÙüýÕWT RawEntryMut::Vacant(v) => assert_eq!(v.insert("c", 300), (&mut "c", &mut 300)),Á,ÙÖõÍãÖúüëÖ assert_eq!(map[&"c"], 300);Á<×Ͻ4Ó×çîæê‹íæË  — $¡Ø‚« \²Ø
Ãæê‹í“ó³ñ$Ú×ëRà×»,è×ü®âŒüÄÙ=÷¦ü†Ú*Œš
µÚút½ÚÿÃÐÚú<ØÚϽüäÚ(éªü‘Û4›«ÊÛúüÒÛY¾¬ü°Ü¡­üÔÜ4Ê­ì݇®´¯Ý­®,ÊÝõÍÔÝúüÜÝFåâ”§Þ let key = "c";Áü¾Þ0‘µóÞúüûÞC@ match map.raw_entry_mut().from_key_hashed_nocheck(hash, &key) {ÁüÃß-ÉÙüõß-* RawEntryMut::Vacant(v) => assert_eq!(Áü§à41 v.insert_hashed_nocheck(hash, key, 300),Áüàà  (&mut "c", &mut 300)ÁT…á ),Á,”áõÍžáúü¦áª<ÊáϽ¬µâçîæê‹íæË  — $ã‚« \®ã
Ãæê‹í“ó³ñ$Ëâ§$ÑâëRÜâ»,äâü–ï·üŒå<9 Set the value of an entry with a custom hasher function.ÁÍåútÕåÿÃèåú<ðåϽüüå(éªü©æ4›«âæúüêæEB fn make_hasher<K, S>(hash_builder: &S) -> impl Fn(&K) -> u64 + '_ÁL´ç whereÁÌÂç K: Hash + ?Sized,Á¼àç S: BuildHasher,Á,üçĆè move |key: &K| {Áü£è# use core::hash::Hasher;ÁüËè85 let mut state = hash_builder.build_hasher();Áüˆé! key.hash(&mut state);ÁÔ®é state.finish()ÁLÍé¦Ò,ÛéõÍåéúüíé5ù§ ”§êü¾ê,) let hash_builder = map.hasher().clone();Áüïê0- let hash = make_hasher(&hash_builder)(&key);Á¤ëúü¬ë>; match map.raw_entry_mut().from_hash(hash, |q| q == &key) {Áüïë-ÉÙü¡ì-Í®üÓìMJ v.insert_with_hasher(hash, key, 100, make_hasher(&hash_builder)),Áü¥í  (&mut "a", &mut 100)ÁTÊíî¯,ÙíõÍüãíMJ map.extend([("b", 200), ("c", 300), ("d", 400), ("e", 500), ("f", 600)]);Áüµîº© <ÙîϽïçîæê‹íæË    Íìö» °ïƒ"ö» ƒæêl¿ðƒö»Á¼˜"Éð
˜ Ãæê‹í“ó³ñö»$¼ï§$ÊïëRÝï»,íïº:4ÿïÄñ˜ ±æš Êæš èæš š ˜ š æê‹í“ó³ñö»ÿþ ö»ü¢òd¥òõ
çîæê‹íúí  — $†ó‚« \—ó
Ãæê‹í“ó³ñ$²òëR¸ò»,ÀòüŒöH8œ §ž ¤Ÿ     ž Ÿ  Íý ‘öÞý ”öºÄ
—öÓ¥
šöå¥
Lö¥€¡ Àc¡ 8:<>@BDFüÛö8Þö ¥€  c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®œ  âöœ
¡ 8æê‹í“ó³ñ$ãö± éöüÒ÷O8ˆœ£ §¤ ¤¥ ¦ ¤ ¥ £ ˆ¦ Íý ×÷Þý á÷ºÄ
ë÷Ó¥
î÷€® ,Ú÷‘® ,ä÷å¥
Lñ÷ Àc§ JLNPRTVXü¨ø8«øŠ ï€ Š c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®¢  ¯ø¢
§ 8æê‹í“ó³ñ$°ø± ¶øü¼úW8Œœ© §ª ¤« ¬ « © Œ¬ ª Íý ÁúÞý ËúºÄ
ÕúÓ¥
Øú€® ,Äú‘® ,Îúå¥
LÛú¸ÿ­ Àc­ JLNPRTVXüšû8ûŽ ¸ÿ Ž c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®¨  ¡û¨
­ 8æê‹í“ó³ñ$¢û± ¨ûüðüG8œ¯ §° ¤± ² ¯ ° ² ± Íý õüÞý øüºÄ
ûüÓ¥
þüå¥
LýÞ³ Àc³ 8:<>@BDFü¾ý8Áý Þ  c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®®  Åý®
³ 8æê‹í“ó³ñ$Æý± Ìýü·þE8œµ § ¤· ¸  ¸ · µ Íý ¼þÞý ¿þºÄ
ÂþÓ¥
Åþå¥
LÈþ´‚¹ Àc¹ 8:<>@BDFüƒÿ8†ÿ ´‚  c cˆ¢cµ
 `£cÔ­ `àB¤GS
û®´  Šÿ´
¹ 8æê‹í“ó³ñ$‹ÿ± ‘ÿÁ Æ ManuallyDropÁd<ÃÛº ¼ r,Té!º ¾ DerefMutÁD[ö!º ¿ µ jº À $+Œ7[ü+&MO57%'ÜsT~¥ à  à µ¾ ¶ë Œ˜“"¼ƒ ˜Àߘ¼ƒåј"þ‚Ú›"!'`Ä Å Ù iknpº Á Á ¼ƒº Á Á Àßü×WÀß¼ƒþ‚¥Ç È Ç È µ¾ ä¶ë ç“"¼ƒ Àß¼ƒ÷Ó˜"
Æ Àß¼ƒ»Ë{4ôgilnüÕ7¥Ê Ë Ë Ê š¼ƒ šÀߘ"¶ë Ýš“"¼ƒ–Õ!µ¾ Úþ‚Ì  
79ü¡#þ‚ÀßÉ É
Ì Àß¼ƒ£üõA¥Î Ï Î Ï ¼ƒ Àߘ"¶ë ý“"¼ƒÿÖ!µ¾ úþ‚Ð Ñ ê!ë!Ñ FHÍ Í Àß¬àœ œþ‚ œÀßÍ  éÍ
Ñ Àß¼ƒü•D¥Ó Ô Ó Ô ¼ƒ Àߘ"¶ë “"¼ƒ¬Ù!µ¾ šþ‚Õ ÷!Õ ?Aüî!ž žþ‚ žÀßÒ  ûÒ
Õ Àß¼ƒ$€ ü³ @¥× Ø × Ø Ÿ¼ƒ ŸÀߘ"¶ë » Ÿ“"¼ƒ¹Û!µ¾ ¸ þ‚Ù "Ù ?A”ˆ
$
   þ‚Ö 
Ö
Ù Àß¼ƒ$•
¼ú ±µ¹¾ÅÌÓÙ¨¸ÃäÑT Ú Ü õ¶¼|ÔÚ Ý \\;ÅeÚ ß Ž$HšeÚ à Ž eÚ à ChainÁ,`ð¬Ú â ­µlgòPÚ ã BitAndÁ4‡öøÚ å BitAndAssignÁdÞ—Ú æ BitOrÁ,–úÚ ç BitOrAssignÁ\¤•˜Ú è BitXorÁ4±¶ûÚ é BitXorAssignÁd¹̘Ú ê SubÁÇïÚ ë SubAssignÁLÌœöÚ ì ×ã `Ú î íèëÚ ï Õ ÇÚ ð Ø$”ŽÚ ò ¨Ú ó ½K$£áÚ ô í¶1Ú ö j^c™ñÄÚ ÷ k_d™ñÅÚ ÷ k_dÐ3dÎüÚ ø ΔèÚ ù ,ŒwzT.mp_bTS;>+.L{þéìÎѸ»œŸŒpsdgUXJT‡<Ž.1"ûýÂÄÌáµü…DüèB? A hash set implemented as a `HashMap` where the value is `()`.Á«úü¯HE As with the [`HashMap`] type, a `HashSet` requires that the elementsÁüøPM implement the [`Eq`] and [`Hash`] traits. This can frequently be achieved byÁüÉLI using `#[derive(PartialEq, Eq, Hash)]`. If you implement these yourself,Áü–63 it is important that the following property holds:ÁÍú½üÝ$¢½<‚ϽŠúüŽFì½ÕúÙúüÝIF It is a logic error for an item to be modified in such a way that theÁü§ IF item's hash, as determined by the [`Hash`] trait, or its equality, asÁüñ KH determined by the [`Eq`] trait, changes while it is in the set. This isÁü½
OL normally only possible through [`Cell`], [`RefCell`], global state, I/O, orÁ 
unsafe code.Áž úü¢ O²Áüò N‹ÂüÁ PM panic does occur then the contents of the `HashSet` may become corrupted andÁü’
-½ÃÀ
ú
ÿÃÓ
ú<×
ϽÜß
 use hashbrown::HashSet;Áüû
DàÄüÀ30 // would be `HashSet<String>` in this example).Áüô# let mut books = HashSet::new();Á˜ú´œ // Add some books.Áü³52 books.insert("A Dance With Dragons".to_string());Áüé63 books.insert("To Kill a Mockingbird".to_string());Áü ,) books.insert("The Odyssey".to_string());ÁüÍ1. books.insert("The Great Gatsby".to_string());Áÿúüƒ ŠËü¤/, if !books.contains("The Winds of Winter") {ÁüÔHE println!("We have {} books, but The Winds of Winter ain't one.",Áô books.len());ÁõÍÂú¬Æ // Remove a book.ÁüÜ  books.remove("The Odyssey");ÁýúüƒÔÄ¡ for book in &books {Áìº println!("{}", book);ÁõÍϽæúüêDA The easiest way to use `HashSet` with a custom type is to deriveÁü¯LI [`Eq`] and [`Hash`]. We must also derive [`PartialEq`]. This will in theÁüü  future be implied by [`Eq`].ÁúϽÜ©’ëüÅ)óåœï¥æ¬ƒÁ欙 power: usize,Áõ͵úü¹%" let mut vikings = HashSet::new();ÁßúüãC@ vikings.insert(Viking { name: "Einar".to_string(), power: 9 });Áü§CŒõüëB? vikings.insert(Viking { name: "Olaf".to_string(), power: 4 });Áü®DA vikings.insert(Viking { name: "Harald".to_string(), power: 8 });Áóúü÷74 // Use derived implementation to print the vikings.Á¼¯ for x in &vikings {ÁäÇ println!("{:?}", x);ÁõÍϽòúüöMJ A `HashSet` with fixed list of elements can be initialized from an array:ÁÄúϽÜÐ’ëìúüð-* let viking_names: HashSet<&'static str> =Áüž<9 [ "Einar", "Olaf", "Harald" ].into_iter().collect();ÁüÛ'$ // use the values stored in the setÁϽúüAÞâüÑ;«àü@ðàüÎ$Å£ üóIºáü½Gâ<¥û ¤ü ý ý û ü µ¾ ˜dž´›¤Ž¬³¶Ž߃)æÜ$à×¶þ 68; ÑëE ³‹òüÐ$Ûú ú Ë„üùI¥
¤



µ¾ þdž ˆ ¤Ž ˜Ø, Ø,‹ ¶ŽL• Øç߃ƒ
ÙÚ
ƒ
^`cehj¼É ¡ ¡߃߃ÿ  Ò ÿ
ƒ
Àßçü­!'T°!¢£ ¢߃ £߃ÿ  »!ÿ
Àßç$À!ÎÙ4Æ!ü­"&»íÔ"üŠ""¥

µ¾ ²"ú ú þ Ø)æÜ$à×¶ÀßÑë‹ò
ˆ
CE¤Ï*üÚ" Creates an empty `HashSet`.Áþ"úü†#\Y The hash set is initially created with a capacity of 0, so it will not allocate until itÁÜç#‡$úÄ$À‰¬$úü´$Hî‰ü%PM not allow the `HashSet` to be protected against attacks such as [`HashDoS`].ÁüÖ%>š‹ü™&/â‹üÍ&?< as the hasher when creating a [`HashSet`], for example withÁü‘'1. [`with_hasher`](HashSet::with_hasher) method.ÁÇ'úüÏ'?«ü“({ô“)út›)ÿî)ú<¶)ϽÜÂ)’ëüâ)+( let set: HashSet<i32> = HashSet::new();Á<*ϽÖ*ø

Àßü¡4-ü«+;8 Creates an empty `HashSet` with the specified capacity.Áë+úüó+JG The hash set will be able to hold at least `capacity` elements withoutÁüÂ,EB reallocating. If `capacity` is 0, th
üóhgüŠ`=‡ŽüÌ`3ÏŽ„aúüŒaNK In other words, move all elements `e` such that `f(&e)` returns `true` outÁÔßaüþaúü†b^Ø‘üébRÁ’üÀcWž“œdúü¤d! [`retain()`]: HashSet::retainÁÊdútÒdÿÃådú<ídϽÜùd’ë™eúü¡e1. let mut set: HashSet<i32> = (0..8).collect();Áü×eIF let drained: HashSet<i32> = set.extract_if(|v| v % 2 == 0).collect();Á¥fúü­f<9 let mut evens = drained.into_iter().collect::<Vec<_>>();Áüîf74 let mut odds = set.into_iter().collect::<Vec<_>>();ÁŒªg£˜„Àg¾˜ÕgúüÝg(æ˜üŠh'™™<¶hϽTúh¬ ¬߃­ñ¾¾åMÃ±Ú ÄÔÚ ™ÄÂ5JæG¬Àß­ñçŽ


 ˆiŽ
î« …i«“"­ñ «ÀߌÈi«­ñȶ˜"$Õi
š
Àßç­ñ$i± “igi¼Úmü®k(% Clears the set, removing all values.ÁÛkútãkÿÃökú<þkϽÜŠl’ëªlúü²lŠŸ„ÖlÖŸtël v.clear();ÁÔþlš¢<mϽ,ám­ ­߃Ž
 çmŽ
œ
Àßç$ìmü—n ¥ž
¤Ÿ
ž
Ÿ
µ¾ œndž ŸnÝã 
¡
üÙy+ü¾nHE Creates a new empty hash set which will use the given hasher to hashÁLoÿ¬™oúü¡oJG The hash set is initially created with a capacity of 0, so it will notÁüðo-ò­¢púĪpÀ‰ÇpúüÏpHî‰üœqP®ƒüñq>š‹ü´r/â‹üèr.+ as the hasher when creating a [`HashSet`].Ásúü£sLʯüôsB? the `HashSet` to be useful, see its documentation for details.Á»túüÃt?«ü‡u{ôü‡vN•±ÚvútâvÿÃõvú<ývϽ܉w’ëü©w&²²ÔwúüÜw*ð²ü‹x*' let mut set = HashSet::with_hasher(s);Á”ºx set.insert(2);Á<ÑxϽ\æyÝã

 
Àߺ: ±üá…CüÚzA> Creates an empty `HashSet` with the specified capacity, usingÁô { `hasher` to hash the keys.ÁÃ{úüË{Já‡üš|Eµˆä|úÄì|À‰‰}úü‘}Hî‰üÞ}P®ƒü³~>š‹üö~/â‹üª.ï»ÝúüåLʯü¶€BÁ¼ý€úü…?«üÉ{ôüÉ‚N•±œƒút¤ƒÿ÷ƒú<¿ƒϽÜ˃’ëüëƒ&²²–„úüž„*ð²üÍ„;8 let mut set = HashSet::with_capacity_and_hasher(10, s);Á set.insert(1);Á<¤…ϽÄè…Ýã

¡
Àß¼Dº:4’†ü6¥£
¤¤
¥
£
¤
¥
µ¾ ”‡dž —‡¤Ž š‡¶ŽL»‡߃¦
§
¨
©
02468:쓈ü̇4ȼLšˆ® ®߃ ®ç¢
 ¤ˆ¢
¦
Àßç$¥ˆüö“8üÛˆHŹL¨‰ÿ¬¶‰úü¾‰J°ºüŠ-ò­¿ŠúÄÇŠÀ‰äŠúüìŠHî‰ü¹‹P®ƒüŽŒ>š‹üÑŒ/â‹ü….ﻸúüÀLʯü‘ŽBÁ¼ØŽúüàŽ?«ü¤{ôü¤N•±÷útÿÿÃ’‘ú<š‘Ͻܦ‘’ëüÆ‘&²²ñ‘úüù‘*ð²ü¨’*ª¾”×’ݾ<î’Ͻtƒ”ç߃¢
¢
§
Àßçº:ý²¤³ü• PüŽ•A׿ôÔ•¡À÷•úüÿ•Já‡üΖEµˆ˜—úÄ —À‰½—úüÅ—Hî‰ü’˜P®ƒüç˜>š‹üª™/â‹üÞ™.ﻑšúü™šLʯüêšBÁ¼±›úü¹›?«üý›{ôüýœN•±ÐúÿÃëúϽÜÿ’ëüŸž&²²ÊžúüÒž*ð²üŸ;¯Ã”ÁŸô
Ú …Ø–†Ãñç³
Àßçª
øÆª
²
Àßç$€Ç¹
,†Ç,.ü Î^üÈ<9 Visits the values representing the symmetric difference,ÁüÑÈFC i.e., the values that are in `self` or in `other` but not in both.ÁœÉút¤Éÿ÷Éú<¿ÉϽÜËÉ’ëüëÉ8ßçü¨Ê;¢èèÊúüðÊ%" // Print 1, 4 in arbitrary order.ÁüšË)& for x in a.symmetric_difference(&b) {ÁÔÈË­œ,çËõÍñËúüùËA> let diff1: HashSet<_> = a.symmetric_difference(&b).collect();Áü¿ÌA> let diff2: HashSet<_> = b.symmetric_difference(&a).collect();Á…ÍúìÍ assert_eq!(diff1, diff2);Áü¯Í/, assert_eq!(diff1, [1, 4].iter().collect());Á<ãÍϽ¤§Îµ
 µ
߃õÓÓ›ŒØùÚ ߟÖÚÈsžµ
Àßçª
¼Îª
´
Àßç$Äι
,ÊÎ,.ü…ÕOüüÏ41 Visits the values representing the intersection,ÁüµÐ96 i.e., the values that are both in `self` and `other`.ÁóÐútûÐÿÃŽÑú<–ÑϽܢђëüÂÑ8ßçüÿÑ;¢è¿ÒúüÇÒ%" // Print 2, 3 in arbitrary order.ÁüñÒ! for x in a.intersection(&b) {ÁÔ—Ó­œ,¶ÓõÍÀÓúüÈÓ@= let intersection: HashSet<_> = a.intersection(&b).collect();ÁüÔ63 assert_eq!(intersection, [2, 3].iter().collect());Á<ÈÔϽdŒÕ·
 ·
߃ØúÅÅ•‹ÊùÚ Ë¹
Ú _„$FËàä`·
Àßçª
™Õª
Àßç$¡Õ¹
,§Õ,.üÊÜAüÏ×-* Visits the values representing the union,ÁüØB? i.e., all the values in `self` or `other`, without duplicates.ÁÈØútÐØÿÃãØú<ëØϽÜ÷Ø’ëü—Ù8ßçüÔÙ;¢è”ÚúüœÚ+( // Print 1, 2, 3, 4 in arbitrary order.ÁÔÌÚ for x in a.union(&b) {ÁÔëÚ­œ,ŠÛõÍ”ÛúüœÛ2/ let union: HashSet<_> = a.union(&b).collect();ÁüÓÛ52 assert_eq!(union, [1, 2, 3, 4].iter().collect());Á<ÜϽ,Ñܹ
 ¹
߃ €ÙÙôÞùÚ ¥ Æ 7ii¹
Àßçª
×ܪ
¸
Àßç$ßܹ
,åÜ,.üÑå`ü´à/, Returns `true` if the set contains a value.ÁèàúüðàC@ The value may be any borrowed form of the set's value type, butÁü¸áC¶Þœ€â the value type.Á˜âút âÿóâú<»âϽÜÇâ’ëçâúüïâ:7 let set: HashSet<_> = [1, 2, 3].into_iter().collect();Áü®ã'$ assert_eq!(set.contains(&1), true);ÁüÚã(% assert_eq!(set.contains(&4), false);Á<‡äϽ“äúü›ä;«àüÛä@ðàDØå´µ ´߃ µ×õª
¢»
»
 äåª
¬ƒ áåše×õ$“æ×õÀßlšæ
º
Àßç×õ$åå»,ëåPRü©ìaüèæZW Returns a reference to the value in the set, if any, that is equal to the given value.ÁÇçúüÏçCü—èC¶Þœßèã÷èútÿèÿÃ’éú<šéϽܦé’ëÆéúüÎé:Ò‚üê&# assert_eq!(set.get(&2), Some(&2));Áü¸ê" assert_eq!(set.get(&4), None);Á<ßêϽëêúüóê;«àü³ë@ðà°ì· ߃ ·×õÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Àߪ
¢½
½
 ᓻ