Files
archy/core/target/debug/deps/libhashbrown-85e33829135e7350.rmeta
T

2726 lines
845 KiB
Plaintext
Raw Normal View History

2026-01-24 22:59:20 +00:00
rust
3
#rustc 1.93.0 (254b59607 2026-01-19)Á³VOÐêùÿ²?ÑL¼§Ì±-a7a40eb546f9e2b0Áá\ƒ¦è3$|]åŒ[IÚ tæ-14b12edc9f8cd90bÁë&Gf·Ã ¬ëñq:¤»b-bb76018b1173caf6Á
à ReadmeDoctestsÁtÄ«ónightlyÁL°œ¦@j\:<default-hasherÁ„Ô@ª4G(@ RandomStateÁ\dJ;:<@
DefaultHasherÁlö„ÇÔ½@forward_writesÁtê„ÊÔÀ[
AllocErrorÁT)à$[innerÁ,½ûœ£[äallocator-api2Á„½Ô³AÇà$Atest_mapÁD¶Æ à$«Æ Ç 4Œ<TûL^œTÚD”ûœrayonÁ,)<<ŒœserdeÁ,N<6½<@Œ6 make_hashÁLšE<ÉDûLÓDœÉDÈD‘¨ à$†¨ test_map_with_mmap_allocationsÁôÒÇ à$ŠÇ  raw_entryÁLá raw-entryÁ\ϬŠrustc_entryÁ\—rustc-internal-apiÁ¤üôò¡ test_setÁD§Ýà$œÝ·testsÁ,¾Õ à$³Õ ð„„Ôúç,<<—ŒéŒéëŒË
EquivalentÁT»
equivalentÁd˜´Žˆ
Î
ˆ
¼À
impÁÖ
Î!ˆlsxÁÌ

û
σ
Å ä
ûgenericÁ<
Î~ˆ|zÊ
Ø
ό
Ê
ÙDˆ
´ú
üä-
å


ü¶u
Ê
½
¼ü
Ît
 
¼
Ë
littleÁDÖ
ÄÆ
å


üò
ðûîìÊ
ë lô
Üæ
Ît
à ,œ
´‹
å

ü¿|
XÃ
¿
Å ¢
ΈŽÊØÊÙå


 Ê
½ Π˱ ýûå
ùü÷õáûàßÊôë òðÎîà ìêå
èëæäáÞà³á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Á*0 MIN_HASH_LENÁ&2Í& TagSliceExtÁ4fill_tagÁ4
fill_emptyÁ&7hasherÁ@AAAAAAAAAA A
A A A
AAAAAAAAAAAAá[[[[[ä`````` AllocatorÁfallocateÁf
deallocateÁ`iiš`l>`do_allocÁnAAAAA offset_fromÁtAvcapacity_overflowÁv alloc_errÁASizedTypePropertiesÁy
IS_ZERO_SIZEDÁy
NEEDS_DROPÁA|Ah1ÁA move_nextÁAcapacity_to_bucketsÁA'ensure_bucket_bytes_at_least_ctrl_alignÁAbucket_mask_to_capacityÁA calculate_layout_forÁABucketÁˆˆ÷ AAÈAfrom_base_indexÁ
to_base_indexÁ 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_taggedÁ­ 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_indexÁÕáÕ·Õ ­insert_at_indexÁ­insert_tagged_at_indexÁ­findÁÛáÛ ­getÁÞá­get_mutÁàá­
get_bucketÁ­get_bucket_mutÁ­checked_bucketÁ­get_disjoint_mutÁåÍå åimpl FnMut(usize, &T) -> boolÁå å ê ­get_disjoint_unchecked_mutÁìÍì ì­!ì ì ñ ­get_disjoint_mut_pointersÁóÍó ó­!ó ó ø ø ­capacityÁ­¾ ­is_emptyÁ­bucketsÁ­is_bucket_fullÁ­£ ­ iter_hashÁ­iter_hash_bucketsÁ­full_buckets_indicesÁ­drainÁ­drain_iter_fromÁ­into_iter_fromÁ­into_allocationÁA ˆˆÖA
ÖA ŽNEWÁŽ A prev_pow2ÁAmaximum_buckets_inÁA Öfallible_with_capacityÁÖ »Öfix_insert_indexÁfind_insert_index_in_groupÁfind_or_find_insert_index_innerÁprepare_insert_indexÁfind_insert_indexÁ
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ÁÀÖð# 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ÁAARawIterÁˆˆ£ ˆšAŒŒë'AÈA>A½¥ ˜ ¹0foldÁã/AžA A¢>A ¤Ÿ/A!¦½¦¥ ¦¹0A"A#A RawIntoIterÁ¬¬Ö¬£ ¬
allocationÁ¬
A$²²Ö²£ A%ÖA&¹¹ÖA'¼¼Ö¼²A(ÀÀÖÀ>A)ÄÄÖĽĥ Ĺ0A*ÊÊÖA+ÍÍÖARawDrainÁÐøÐÐÖУ зÐ
orig_tableÁÐ
A,ØØÖØ£ A-ÜÜÖA.ßßÖA/ââÖâ²A0ææÖæ½æ¥ æ¹0A1ììÖA2ïïÖA RawIterHashÁòòäò_markerÁA3öö øÖA4úúÈA5ýý>A6>A7 A8½¥ A9ˆ½ˆ¥ A RawExtractIfÁøÖ£ ·A:Ö¥ 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ÁßÒßñ"ßkeysÁßß
values_mutÁߣ ß§ ß¾ ߉#ߌ$ßretainÁñß
extract_ifÁóßß into_keysÁß into_valuesÁøá:øê:øó:øÖøÑøèø
shrink_to_fitÁø¦øentryÁø entry_refÁø'bÁè;ø  è;ø
get_key_valueÁˆè;øget_key_value_mutÁŠè;ø contains_keyÁŒè;ø³ Žè;øˆ!è;Í    ø get_many_mutÁè;Í  øá!œè;œÍœ œ œ ¡ øget_many_unchecked_mutÁ£è;£Í£ £ øget_disjoint_key_value_mutÁ¨è;¨Í¨ ¨ ¨ ­ øget_many_key_value_mutÁ¯è;¯Í¯ ¯ ø$get_disjoint_key_value_unchecked_mutÁ´è;´Í´ ´ ´ ¹ ø get_many_key_value_unchecked_mutÁ»è;»Í» » øget_disjoint_mut_innerÁÀè;ÀÍÀ À À ø get_disjoint_unchecked_mut_innerÁÆè;ÆÍÆ Æ Æ øbuild_hashes_innerÁÌè;ÌÍÌ Ì Ì øÆøœÓè;øinsert_unique_uncheckedÁø
try_insertÁøª×è;øÍÙè;øÏÜá:Üê:Üó:ÜÖÜÕá â äá:äê:äó:äÖéá:éê:éó:éÖéÍïá:ïê:ïó:ïÖï>õá:õè;õê:õó:õÖõØõöIterÁýøýá:ýê:ýäý
 ƒá:ƒê:ƒÈ
á:ê:ÍIterMutÁøá:ê:ä
 á:ê: á:ê:£ š˜á:˜ê:˜Ö˜ä
á:ê:Ö£ IntoKeysÁ¢á:¢ê:¢Ö¢ä§á:§ê:§Ö§>¬á:¬ê:¬Ö¬½¬¥ ± ¬¹0¬à1´ã/´´ ¸á:¸ê:¸Ö¸¾ ½á:½ê:½ÖÁá:Áê:ÁÖÁÍÅ 
IntoValuesÁÇá:Çê:ÇÖÇäÌá:Ìê:ÌÖÌ>Ñá:Ñê:ÑÖѽѥ Ö Ñ¹0Ñà1Ùã/ÙÙ Ýá:Ýê:ÝÖݾ âá:âê:âÖæá:æê:æÖæÍê KeysÁìøìá:ìê:ìäñá:ñê:ñÈõá:õê:õÍValuesÁùøùá:ùê:ùäþá:þê:þÈá:ê:ÍDrainÁøá:ê:ÖäŒá:Œê:ŒÖŒ£  ExtractIfÁøá:ê:Öþäá:ê:Ö½¥ Ÿ ¹0¢á:¢ê:¢ ValuesMutÁ¦ø¦á:¦ê:¦äEntryÁ«ø«á:«ê:«ó:«Ö«OccupiedÁ±
±ì«VacantÁ´
´ì·á:·ê:·ó:·Ö·Í
OccupiedEntryÁ½ø½á:½ê:½ó:½Ö½¢½elemÁ½· Æá:Æê:Æó:ÆÖ!Ëá:Ëê:Ëó:ËÖ"Ðá:Ðê:Ðó:ÐÖÐÍ VacantEntryÁÖøÖá:Öê:Öó:ÖÖÖ¢ÖkeyÁÖ·#ßá:ßê:ßó:ßÖßÍEntryRefÁåøåê@åá:åè;åê:åó:åÖåîTí
íìå‹Uð
ðì$óá:óè;óê:óó:óÖóÍVacantEntryRefÁú'mapÁú'keyÁúá:úè;úê:úó:úÖú¢úæWú·%á:è;ê:ó:ÖÍ
OccupiedErrorÁŒøŒá:Œê:Œó:ŒÖŒÄ@Œ˜&á:ê:ó:ÖÍ'šá:šê:šó:šÖšÍ( ø á: ê: ó: Ö ½ š Š )©ø©á:©ê:©ó:©Ö©½©š©Š *²á:²ê:²ó:²Ö²½²š²Š +ºá:ºê:º>,¾ø¾á:¾ê:¾½¾¥ ¾¹0¾à1Åã/ÅÅ -Éá:Éê:ɾ .Íá:Íê:/Ðá:Ðê:Ð>0ÔøÔá:Ôê:Ô½Ô¥ Ô¹0Ôà1Ûã/ÛÛ 1ßá:ßê:ß¾ 2ãá:ãê:3æá:æê:æÍ4êá:êê:êÖê>5ïá:ïê:ïÖï½ï¥ ï¹0ïà1öã/ö6ùá:ùê:ùÖù¾ 7þá:þê:þÖ8á:ê:ÖÍ9á:ê:>: ø á:ê:½¥ ¹0à1ã/  ; á: ê: ¾ <š á:š ê:= á: ê: >>¡ ø¡ á:¡ ê:¡ ½¡ ¥ ¡ ¹0¡ à1¨ ã/¨ ¨ ?¬ á:¬ ê:¬ ¾ @° á:° ê:A³ á:³ ê:³ >B· ø· á:· ê:· ½· ¥ · ¹0· à1¾ ã/¾ ¾ C á: ê: ¾ DÆ á:Æ ê:EÉ á:É ê:É ÍÌ FÎ á:Î ê:Î ÖÎ ½Î ¥ Î ¹0Î à1Õ ã/Õ GØ á:Ø ê:Ø ÖØ ¾ HÝ á:Ý ê:Ý ÖIá á:á ê:á Öá ÍJæ øæ á:æ ê:æ ó:æ Öæ Ææ  or_insertÁæ or_insert_entryÁæ or_insert_withÁï æ or_insert_with_keyÁñ æ æWæ 
and_modifyÁô æ and_replace_entry_withÁö Kø øø á:ø ê:ø ó:ø Öø 
or_defaultÁLÿ øÿ á:ÿ ê:ÿ ó:ÿ Öÿ æWÿ Íÿ   ÿ ³ ÿ into_mutÁÿ Æÿ ªÿ replace_entry_withÁŒ
Œ
M
ø
á:
ê:
ó:
Ö
æW
into_keyÁ
Æ
ÜN
ø
ê@
á:
è;
ê:
ó:
Ö
Æ
þg
¦h£

Äh¥

æW
îh¨
Oª
øª
ê@ª
á:ª
è;ª
ê:ª
ó:ª
Öª
Ûiª
or_default_entryÁP´
ãY´
ïY´
á:´
è;´
ê:´
ó:´
Ö´
æW´
Æ´
insert_with_keyÁ´
ÜQÀ
á:À
ê:À
ó:À
ÖÀ
òÅ
Å
RÈ
á:È
ê:È
ó:È
ÖÈ
extendÁÍ
Í
SÐ
øÐ
á:Ð
ê:Ð
ó:Ð
ÖÐ
ƒoÖ
Ö
TÙ
øÙ
á:Ù
ê:Ù
ó:Ù
ÖÙ
ƒoß
ß
assert_covarianceÁâ
map_keyÁã
'newÁâ
map_valÁå
Êpâ
iter_keyÁç
øç
Êpâ
iter_valÁê
øê
Êpâ

into_iter_keyÁí
Êpí
Öâ

into_iter_valÁð
Êpð
Öâ
keys_keyÁó
øó
Êpâ
keys_valÁö
øö
Êpâ

values_keyÁù
øù
Êpâ

values_valÁü
øü
Êpâ
Œ$ÿ
Êp
scopeguardÁ       
ScopeGuardÁˆ ˆ ˆ dropfnÁˆ ˜ guardÁ      
into_innerÁ    š         ²setÁ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡  ¡ 
¡  ¡  ¡ 
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ©Á Á ó:Á ÖÁ 
¡ Æ Æ ó:Æ ÖÆ ÈÆ Ë¡ Ì Ì ó:Ì ÖÌ ñ"Ì £ Ì ¾ Ì ‰#Ì Œ$Ì –?Õ Õ Ì ¬?Ø Ì ¡ Û Û ó:Û Ÿ=Û ²=¡ à à ó:à Öà åà ÿ=à •>à Ò¡ è è ó:è Öè Ñè èè §@è ¦è 
differenceÁð øè symmetric_differenceÁò øè  intersectionÁô øè Cö øè containsÁø è;è   ú è;è 
get_or_insertÁè get_or_insert_withÁý è;ý è Ä@è  is_disjointÁè  is_subsetÁ è  is_supersetÁè Æè ™Gè replaceÁè ªˆ è;è takeÁŠ è;è Ï¡   ó: Ö Õ ¡   ó: Ö¡   ó: Ö Í¡ œ œ ó:œ Öœ ï¡  ¡ ¡ ó:¡ Ö¡ ò¥ ¡ 
§ § ó:§ Ö§ ƒo« µ}« ¡  ® ø® ® ó:® Ö® ƒo³ µ}¡  µ µ ó:µ Öµ >¡ 
º º ó:º Öº غ í¡ À À ó:À ÖÀ ØÀ ë¡ Æ Æ ó:Æ ÖÆ ØÆ ð¡ Ì Ì ó:Ì ÖÌ ØÌ »¡ Ò Ò ó:Ò ÖÒ î¡ × × ó:× Ö× ìÛ ¡ Ý Ý ó:Ý ÖÝ ñ¡ â â ó:â Öâ ¼æ ¡ äIè øè á:è £ ¡ šì á:ì Öì £ ¡ †Rð øð á:ð Öð £ ¡ àRõ øõ á:õ õ Öõ þõ ä¡  IntersectionÁü øü ü ó:ü Öü £ ü î ¡ 
DifferenceÁƒ
øƒ
ƒ
ó:ƒ
Öƒ
£ ƒ
î ¡ SymmetricDifferenceÁŠ
øŠ
Š
ó:Š
ÖŠ
£ ¡ UnionÁ
ø

ó:
Ö
£ ¡ 
ø

ó:
Ö
½
š
Š ¡ ž
ž
ó:ž
Öž
½ž
šž
Š ¡ ¥
á:¥
È¡ ¨
á:¨
>¡ «
ø«
á:«
½«
¥ «
¹0«
à1±
ã/±
¡ ´
á:´
¾ ¡ ·
á:¡ ¹
á:¹
Í¡ ¼
á:¼
Ö¼
>¡ À
á:À
ÖÀ
½À
¥ À
¹0À
à1Æ
ã/Æ
Æ
¡ Ê
á:Ê
ÖÊ
¾ ¡  Î
á:Î
Ö¡ !Ñ
á:Ñ
ÖÑ
ÍÔ
¡ "Ö
á:Ö
ÖÖ
½Ö
¥ Ö
¹0Ö
à1Ü
ã/Ü
Ü
¡ #à
á:à
Öà
¾ ¡ $ä
á:ä
Ö¡ %ç
á:ç
Öç
Íê
¡ &ì
á:ì
ì
Öì
½ì
¥ ñ
ñ
ì
¹0¡ 'õ
á:õ
õ
Ö¡ (ù
ù
ó:ù
Öù
È¡ )þ
øþ
þ
ó:þ
Öþ
½þ
¥ þ
¹0þ
à1ã/ ¡ *ŠŠó:ŠÖŠÍ¡ +ó:Ö¡ ,ó:ÖÈ¡ -˜ø˜˜ó:˜Ö˜½˜¥ ˜¹0˜à1 ã/   ¡ .¤¤ó:¤Ö¡ /¨¨ó:¨Ö¨Í¡ 0­­ó:­Ö­È¡ 1²ø²²ó:²Ö²½²¥ ²¹0²à1ºã/º¡ 2½½ó:½Ö¡ 3ÁÁó:ÁÖÁÍ¡ 4ÆÆó:ÆÖÆÈ¡ 5ËËó:ËÖ¡ 6ÏÏó:ÏÖÏÍ¡ 7ÔøÔÔó:ÔÖÔ½Ô¥ Ô¹0Ôà1Üã/Ü¡ ¹Tßøßßó:ßÖßîTä
äìß‹Uç
çì¡ 8êêó:êÖêÍ¡ ÓUïøïïó:ïÖïä¡ 9õõó:õÖõÍ¡ £Wúøúúó:úÖúä¡ :ó:ÖÍ¡ ;øó:ÖÆþg  ¡ <ó:Ö  ª¡ =øó:Ö  
into_valueÁÆ¡ ¢p”uœÊp£ žøžÊpŠ ¡Êp¡Ö y¤ø¤Êp¤Öºy¨ø¨Êp¨ÖÞy¬ø¬Êp¬ÖC°ø°Êp°ÖŒ$´Êp´Ö··········· ·
· · ·
······ HashTableÁËËÖË@·ÏÏ Ï»·ÓÓÖÓøÓŸÓåÓÙáÓfind_mutÁÛáÓ
find_entryÁÝáÓfind_bucket_indexÁßáÓÄ@ááá·Óget_bucket_entryÁÓget_bucket_entry_uncheckedÁÓÊ Óget_bucket_uncheckedÁÓÜ Óget_bucket_unchecked_mutÁÓ
insert_uniqueÁê·ÓÓ§@í·Ó¦ï·ÓÑñ·Óèó·Ó num_bucketsÁÓñ"Ó¾ Ó‰#Ó£ Ó§ Ó iter_bucketsÁÓÆ#Ó
iter_hash_mutÁÓ×#Ó?ÿimpl FnMut(&mut T) -> boolÁÓŒ$Ó¬?Óˆ!Í ­! Ó¢BÍ ­! Óá!ŽÍŽ Ž­!Ž ÓüBÍ ­! ÓÏ·Ö½šŠ ·ŸøŸŸÖŸ½ŸšŸŠ ·¦ø¦¦Ö¦½¦š¦Š ·­­Ö­>·±±Ö±È·µµÖµÍ·¹T¹ø¹¹Ö¹îT½
½ì¹‹UÀ
Àì·ÃÃÖÃÍ· ÇøÇÇÖÇÆÇþgǦhÍimpl FnOnce() -> TÁÇîhÏimpl FnOnce(&mut T)Á·ÓUÑøÑÑÖÑúÑ··
××Ö· ÚÚÖ· ÝÝÖÝÍ·
áøááÖáªá  á³ áºjá
into_tableÁáæ·£WëøëëÖëêëöë··òòÖòÍ·öøööÖöÆö­¡· AbsentEntryÁüøüüÖü··ÖÍ·øÖ­¡·äIŠøŠŠäŠ
·>·ø½¥ ¹0à1˜ã/˜˜ ·œœ¾ ·Ÿ·¡ø¡¡È·¥¥Í·ÒJ¨ø¨¨ä¨
·­­>·°ø°°½°¥ °¹0°à1ã/ ·ºº¾ ·½·¿¿Í· IterBucketsÁÂøÂÂäÂ
·ÇÇÈ·ÊÊ>·Íͽͥ ͹0· ÒÒ¾ ·!Õ·"××Í·IterHashÁÚøÚÚäÚ
·#ßß>·$âøââ½â¥ âà1çã/çç ·%ë·&íøííÈ·'ññÍ· IterHashMutÁôøôôäô
·(ùù>·)üøüü½ü¥ üà1ã/ ·*·+Í·IterHashBucketsÁŠøŠŠäŠ
·,È·->·.½¥ ·/·0Í·šžžÖžä·1¢¢Ö¢>·2¦¦Ö¦½¦¥ ¦¹0¦à1¬ã/¬·3¯¯Ö¯¾ ·4³³Ö·5ÖÍ·†RºøººÖºä·6¿¿Ö¿½¿¥ ¿¹0¿à1Åã/Å·7ÈÈÖȾ ·8ÌÌÖ·9ÏÏÖÏÍ·àRÓøÓÓÓÖÓþÓä·:ÚÚÚÖÚ½Ú¥ ß Ú¹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Áª
ªì&&&¯È&&²Õ&´˜@DefaultHashBuilderÁ@·È@¹Í@»>`GlobalÁ½
```ÁÈA FallibilityÁÃFallibleÁÄ
Ã
InfallibleÁÆ
A;A<A=ÊÈAProbeSeqÁÌposÁÌstrideÁA>ÏÈA TableLayoutÁÑèÑ
ctrl_alignÁA?A@AAÖÈÕø,AFullBucketsIndicesÁÙÑ.Ùgroup_first_indexÁÙûÙšABÞÈARawIterHashIndicesÁàèàûàtag_hashÁàâ(àÂàÓACçÈTryReserveErrorÁéCapacityOverflowÁê
éÇìlayoutÁîÈñÕó˜õÍ
3
3
3
5
6
8
g
h
j
k
n







˜

š
œ
´
µ

·
·
¸
¹
¹
º
»
¼
½
½
¿
À
Â
Â
Ä
Ä
Æ
Æ
È
È
Ì
Ì
Ï
Ï
Ñ
Ñ
Ó
Õ
Õ
Õ
Ù
Ú
Û
Û
Þ
Þ
à
à
â
ã
ä
å
å
ì
ì
ó
ó
û
ü
ý
þ
ÿ



ƒ






œ
œ
œ


ž
Ÿ
 
 
¡
¢
¤
¦
¦
©
«
¬
®
¯
°
²
³
´
µ

·
¸
¹
º
»
»
À
À
À
À
Â
Ã
Ã
Ã
Ã
Å
Å
Å
Ç
Ç
É
Ê
Ë
Ì
Ð
Ñ
Ñ
Ô
Ô
Û
Û
ä
ô
ÿ
ƒ

Ž

˜
š
¥
¨
©
µ
¿
È
É
Ø
Û
Ü
ß
â
å
æ
ê
ë
ì
ï
ø
ü
ƒ

Š



Â
Ã
Ã
Ä
Ä
Ê
Ê
Ð
Ð
Õ
Õ
ä
ç
è
é
ê
ë
ì
í
î
ï
ð
ñ
ñ
ñ
ó
ó
ó
õ
ý
þ
ÿ




ˆ
ˆ
Š
Š
Œ
Œ
Ž
Ž




œ
œ
£
£
¨
¨
¯
¯
´
´
»
»
À
À
Æ
Æ
Ì
Ì
Ò
Ó
Ó
Õ
Ö
×
×
Ù
Ù
Û
á
á
î
î
î
õ
ü
ü
ƒ


Š
Š
Š



¡
±
³
¼
Å
Å
Å
Ö
Ø
á
ê
ê
ê
ñ
ô
õ
ø
ø
ø
þ





Œ




Ÿ
¡
¢
¢
¢
·
¼
¼
¼
Æ
Ë
Ð
Õ
Õ
Õ
ß
ä
ä
ä
ó
ó
ù
ù
ù









š
Ÿ
Ÿ
Ÿ
º
Ã
Ä
É
Ì
Í
Ð
Ù
Ú
ß
â
ã
æ
é
é
é
ô
õ
ý








š

¦
§
¬
¯
°
³
¼
½
Â
Å
Æ
É
Ì
Ì
Ì
Î
Ó
Ô
Ø
Ü
Ý
á
å
å
å
ñ
ó
ô
ö


ˆ
Š
Œ

¥
§
¨
¼
Í
Ö
ß
ˆ



˜

œ

 
Ê
Ë
Ë
Ð
Ñ
Ò
Ó
Ô
Õ
Õ
Ø
Ø
Ú
ä
ç
ì
í
î
ï
ø
ø
ú
ú
ü
ý
ý
ý










ˆ
ˆ
Š
Š
Œ





«
³
º
º
¿
À
À
Å
Æ
Æ
Ë
Ì
Ì
Ñ
Ò
Ö
Ö
×
Û
Û
Ý
á
á
â
æ
æ
¥
§
¨
¯
°
´

·
¹
»
»
»
Ä
Å
Í
Ô
Ô
Ô
Ö
Ú
Û
à
ã
ä
ç
ê
ê
ê
ì
ì
ñ
ô
õ
õ
ù
ý


Š
Ž
Ž
Ž



ž
Ÿ
¤
¨
¬
¬
¬
­
±
¸
¹
½
Á
Å
Å
Å
Æ
Ê
Ë
Ï
Ó
Ó
Ó
Ú
Û
ê
î
î
î
õ
ù
ù
ù




Œ


˜
Ø
Ù
Ù
Û
Û
Ý
Ý
ß
ß
á
á
á
ä
å
æ
ç
è
é
ê
ê
ì
í
í
ï
ï
ñ
ñ
ó
ó
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
ÿ







Ž
Ž


˜
´
¸
¸
¸
Ã
Æ
Æ
Æ
Ï
×
Ú
Ý
à
à
à
æ
ç
ê
ò
õ
õ
õ







œ
ž
Ÿ
¤
¥
§
§
§
­
´
µ
º
¼
½
¿
Á
Á
Á
Ç
É
Ê
Í
Ð
Ñ
Ò
Ô
Õ
×
Ù
Ù
Ù
ß
æ
ë
ð
ñ
ó
ó
ó
ù










˜





ª
«
²
¹
¹
¹
¿
Ã
Ä
È
Ë
Ì
Ï
Ò
Ò
Ò
Ú
Ú
ß
á
â
â
ò
ò
ö
ö
ý

 Ÿ   ©
°
³
³
µ
¸
º
º
º
Â
Ë
Ð
×
Ø
Ø
ß
è
ï
ò
ò
ô
ö
ö
ö
È8Î8Ó8¾ø4fyÓðþ÷÷ø¹±ùì bÞIP<z áàÚÞàÚ®JàÚÞþþÿè±ì `
pCÞK¹Ûþ££¤áµ¥ìƒ WnúuÛlsáüÛÞüÛþªª«‘¶¬ì ºÿ÷­è7Ø<áËÜÞËܬâËÜžËÜËÜ£ËÜà`ËÜ4
ËÜÞضXVaB!à`ÕÝÄÕÝþ½½¾”· ¯vó÷õüPá”ÞÞ”Þf”ÞÄ”ÞþÃÄÅÍ·ÆÇâ·™†9VÆLáìÞÞìÞyÞÌÌŒ¸Íœ¸AΧ¸Ai¦ñÕ­úvLþÑÑÀ¸ÒèAÓÛ¸AHENòÎáàÞà¨âˆˆ°Š÷ A¤zÎÎnh>¿ßÞäà¨âžž¡·A¢áA£
Aa<e¹Ù 9¿ßÖ§áÞ§áÓ§áÄ§á §á®J§á¨âëëµ.íÑ.Aîæ.Aïò.AðÏAêA±æIì¿ß½âÞ½âÞK½âÖN½âÞˆˆÕ0Š£ šA'/RÛ'L†¯¿ßÄÁãÞKÁã©KÁãÖNÁãÞÙÙˆ¹ÚÑ.AÛª¹AÜûAÝšA«R¹eàÎįäÞK¯ä©K¯äÖN¯ä¨â¬¬Î2¯£ A°ù2A±
A¥Í⯓|y¿ßíá²å ²åIJåÞK²å©K²åÖN²å¨âÐÐá4Ô£ AÕ·AÖ™5A×
Aï¿zÂ0˜Ø8ÖÆæ ÆæÞKÆæ©KÆæÖNÆæÞààÞ¹áèAâûA㈺Aäâ(AåÂAæÓAÌ_ß<âÓxÕÞòòæ6ôäAõ‰7AxçÞÏ7ˆ¿ßÄÎèÄâçÞKÎèÞKâçÞ§»„;¼· ­(!Ž>
Wá:ê:ó:Öž¼é¼é£¼éà`¼éļ馘§»„;¼· ­(!Ž>
Wá:ê:ó:Ö 8è;ÞýýäIä
Ö&Jènøe8úêê:à`¥ë¨âÒJä
³£züÚ8úêçëÄ¢¢ˆL¦ä=äJžQ@íóéùéžçÞKÍì©KÍìÖNÍìà`ÍìÄÇÇŸNËä9æz;oõ}óéùéžçÞK¹í©K¹íÖN¹íà`¹íÞìì¸Pðä
1¥(y!¨8úêçëà`¥îÞùùžQýä<z€`þk˜Û8úêçëà`ñîÞKàRþ˜ä†£ÌˆiS]8úêçëÖÖNàRþ˜ä†£ÌˆiS]8úêçëƒð”Þà`«±²îT³ì´µ‹UìtDXŠ™¥ÉÆ8úêçëó:‰ð¨â½½ÓUâĘVÅ·pµgúA£³ô8úêçë¿ñ‰ðÑñà`Ññà`ÖÖ£WÜ¢ÝæWÞ·oßñ(„Y
8úêçë¿ñ‰ðà`åíîîTïìðñ‹UòìšN¦l5¤ðP88á:è;ê:ó:Öà`úúÍY¢ƒæW·;‹—2œ\Ã88úó€ô†ôŒô’ôà`ŒŒðZÄ@˜ë„ÉôÜ8úêçë¿ñ‰ðå`‰õ®J ø§»„;¼· ­(!Ž>
Wúêçë¿ñ‰ð®J øéõ®J¼éÄ¥ëÞKýýäIä
Ö&Jènøeøúêçë©K¥ëÖN¥ëÄ€ìÞKÒJä
³£züÚøúêçë©K€ìÖN€ìà`€ìĘ˜šœäK™kŒôƒïóéùéžçÞK¾ø©K¾øÖN¾øà`¾øÄ¥îÞKìì¸Pðä
1¥(y!¨øúêçë©K¥îÖN¥îÄñîÞKùùžQýä<z€`þk˜Ûøúêçë©KñîÖNñîĦ¦ˆTªä{zj!¦18úêçëÞK¦¦ˆTªä{zj!¦1øúêçë©KðúÖNðúà`ðúÞK†Rä¼8¸!ºË¢8úêçë…ê©K”üÖN”üà`”üªJ¼éóéùé·J¼éþü·Jéõ øúê øçë·Jéõ øúêçëìˆ ˆ ºs Üs Œ ˜ ÑwÿÊ7¿ßùÚý ÚýÞÁ Á ©Å 
Ô‰î£yU'ë¿ßó:žçžºþºþ£ºþà`ºþúºþ§»„;¼· ­(!Ž>
W¿ßêþžçªJºþ¿ß·Jºþ¿ß·JÁ Á ©Å 
Ô‰î£yU'ë˜çÿé…ê ø˜çĺþãï 8Á Á ©Å 
Ô‰î£yU'ë¿ñ‰ð 8ê€Ãî倥ƒñ倥È倥â 8«ê™Žêéëê®J ø®JºþÞè è äIë £ ¡ Ä"—8úêÄÈ‚ÞKè è äIë £ ¡ Ä"—øúê©KÈ‚ÖNÈ‚à`È‚Äì ì šï £ ¡ ƒO2T ¹óéíáÞKKïƒÖNïƒà`ïƒÞKð ð †Rô £ ¡ ÀÙL„ä`8úêžç©KׄÖNׄà`ׄÞKõ õ àRú þ¡ û ä¡ <}K%ŠÚÓÚ8úê…êÖN¹…Þü ü »‚
£ ¡ 
î ¡ ˆ­uZì¹·8˜çÿé…êÞKü ü »‚
£ ¡ 
î ¡ ˆ­uZì¹·ø˜çÿé…êà`—†ÖN—†Þƒ
ƒ
ÿ‚ˆ
£ ¡ 
î ¡ ÈaÓ7Ž 8˜çÿé…êÞKƒ
ƒ
ÿ‚ˆ
£ ¡ 
î ¡ ÈaÓ7Ž ø˜çÿé…êÖNÒ‡à`Ò‡ÞŠ
Š
Áƒ
£ ¡ R¼°ÛèUì8˜çÿé…êÞKŠ
Š
Áƒ
£ ¡ R¼°ÛèUìø˜çÿé…êÖNà`Þ

„„
£ ¡ ¶@g/˜è8˜çÿé…êÖN°Šà`°ŠÞK

„„
£ ¡ ¶@g/˜èø˜çÿé…êà`ßäåîTæìçè‹Uéì“ï(¥Þð»8˜çÿé…êà`ïïÓUôä¡ œ!ª#w8˜çÿé…êà`úú£Wÿä¡ ƒª«ÿ]J¹ª8˜çÿé…ê®JËË•–Î@
GtÅ¿ßíá®J øËË•–Î@
GtŘçžç®J øýļ޼à`¼à`¹½¾îT¿ìÀÁ‹UÂì±Ý÷q Òø8˜çžç¨âÑÑÓUÕú·Ö··F.»Öl‘Zý8˜çžçÈà`Èà`ëë£Wïê·ðö·ñ··ˆ¢$ˆd‚i8˜çžçà`üüÊ¢··ãi'lëU9&8˜çžçÄŠŠäIä·Ž
·»æ ƒæ•¶°8˜çÞKŠŠäIä·Ž
·»æ ƒæ•¶°ø˜ç©KÆ‘ÖNÆ‘Þà`ƑĨ¨ÒJ«ä·¬
·œ¦„aÑg‡8˜çÞK¨¨ÒJ«ä·¬
·œ¦„aÑg‡ø˜ç©K…“ÖN…“à`…“ÞÂÂצÅä·Æ
·‚¾Ì ¿ž8˜çĹ”ÞK¹”©K¹”ÖN¹”à`¹”ÄÚÚ¨Ýä·Þ
·¾$ºÞ´:&8˜çÞKÚÚ¨Ýä·Þ
·¾$ºÞ´:&ø˜çÖNº•Þ„–à`º•ÄôôÔ©÷ä·ø
·áj ,¤¬„8˜çÞKôôÔ©÷ä·ø
·áj ,¤¬„ø˜çÖNð–à`ð–ÞŠŠÿªä·Ž
·ÆÑËÔçýv8˜çÄ›˜ÞK›˜ÖN›˜à`›˜Äžžš¡ä·jÃİŽâÈ¿ßíáÞK‘™©K‘™ÖN‘™à`‘™ÞKºº†R¾ä·gÔ¹ój³`8˜çžç©Kù™ÖNù™à`ù™ÞKÓÓàRØþ·Ùä·ãžÓ¼¼éüp8˜çû……êÖNÛšðè;úêÞéêëÒºìÇí÷ºÝ—mØ?r¬âÈ›žÈ›È›£È›à`È›ú÷¦£­ª¿½ÈÃÔÑû÷§£®ªÀ½ÉÃÕÑü÷þ¨£¯ª·Á½ÊÃÏÌÖш͞ýëˆÞÙçàúò½ƒýñìþùÆ Á ¥
è ù
ü ƒ
­Š
Æ
±Ë¡ŠÇÂíÚŠîé÷åž 
©
²

ž
Á ËŸ
¦
þ눦ÙĬæÐòˆà¬¢ÑǾýÔï˜ì¡ ù· ¦Î «
è À
ì Ö
ð ì
õ þ
ü ˜ƒ
²Š
Ô
а¨ÍÂâÚüôЦž¿ºÚÓ±ªðé²ªÜ Á ñé´ªä Á óé2ª¹éýÁ¢æÇõìù·«Ð½ßÖóåúŒæ˜É ¦á  Á ¹
è Ñ
ì ç
ð Šü ¨ƒ
ÁŠ
Ï
êßõïúµËùÝÑòëü¥Š¿¨×ÂñÚôŠžÏºõé7 »l½Ýžˆ¢ÙÀ¬ýòàï§¢ÌǺýÐê˜ì ù³ ¦µ Á ¨
è ¼
ì ­ËŠ­¨ÊÂßÚùôŠ¢ži½|ˆˆžùë¬ÜÐÆ½×Ñžû빬ßÐ˽ÚÑÕžáž¼¬âÐ ˆ ë ˆ«Ùͬïн¢âÇ¢Íýãþ˜š ì° ùÆ ¦Ý ·
è Î
ì ä
ð õ
õ ü ¤ƒ
½Š
Ë
ŸŠ½¨ÕÂëÚôгžÌºâÓžˆªÙʬìи¢ÝÇÉýßù˜ì¬ ù ¦Ø ´
è Ê
ì à
𠜊º¨Ò¯žÈºõšŒÀ
¡ Á È
Ð
Ù
§ Á ® Á ˆ ˆ œ Á º 
À 
Æ 
Ì 
Ò Á × Á Ý Á â Á óþ¢á*Þ *®J
àÞK#;¬âôž£à`+4¬ÄfÃy¨â8Ó* ÖN ©Kঘå`ªJ·Jì#ùúãïÃîƒñÈâ«™Žéëð  œ üî0 \ %€€€€€€€€0x8080_8080_8080_8080Á´¦
 ¤¦ 
˜üÛ%ü†7  %”ß  Գ糃ú³ƒlæbÚl%­YËÜy ö ÷ üˆï  ù®ä® ¾¯½®® ¬®Ï6˜®®*2˜®®ƒ¬®/®®s?˜®® 
&18< Group::WIDTHÁ 
&18< Group::WIDTHÁš 
üÛÔ°  +ËÜüø]
 Ô üÖ ˜®® üÛ ù®EŽ+ËÜ 
&18< Group::WIDTHÁ„÷
ª ÿüÙ/ +ËÜñ %„Þ
ª ü¾1 ,ËÜØ %l‰ 4‰  $’   ”‰  š 
¡ -üÕL  ËÜ :     Ê ”¾  Ï 
Ö .ü‡O  ËÜ :ù¬TT ñ¯T 
É ÜT Œ $ 
"T† 
..d† F   õT   ôT 
ùÎT2 
ØJ®´
»À
³U# 
Ý€U  . ÿT 
l 4       ©    ® 
µ /ü¶
 ËÜ ØÔ°­ËÜ®ÇÀ¿Gh
$¸
´À
„Á

1 Ð
4 11/by Ô
 'Á Õ
ô¸
@" 6MSϊ


  
  
 ð
 K 
 ö

Äà

ª ÷
  Œ 0üÆÆ ü­
_  ËÜí  üü›ÂGþýü¢\top7Ák˜D1O1üâ / ¼â 
‰ 
˜*¬ü 
ϟ 
˜*ev
¼ 
 ¬ 
²Ã17¬Õ
 œÕ
àà ó
üà ² 1,× ë;´‚ 
¤‚ 
˜,Ü‚  œ üæ 8z }*̼ 
 ¼¼ 
¨ìÅ%ü£ 3{ #4ó;”ü;
 „ü;
Ÿ¿ß%l±<4±<
#$¸<
04¸< ½<üØ<ìÛ<tÛ<4Û<
#,â<
ž0<â< è<Vdì<r ÷<4=t=
 ,=…É0<= ˜=ÚWd¿=
ÿ Ø=ü˜<Ì
Ñ ã= é=ê=üË;Ÿüï;û à$à;”Í”ÍÅ•Íè–ÍܑʂÿÙ€’- µËÊÇÇÿËÈÿËY÷ºv¯˜)4›Ó 
½\·Ó 
¿ßüÚÒs
ž¿ß”Þ”ôÒ¤¤Ó¥èA¦ûA§A¨šA ¼Ð³{—ö ÌÓ ÓÓ«üµÒžžž¡·A¢áA£
Aa<e¹Ù 9¿ß”Þ$ËÒ”Þ8Š PhantomDataÁÑ{·Ë…YÚ¿ßW£(ÊͼšÖ

¬šÖ
¿ß'üøÕ:°à\ŒÖ(,ØÚ \óÚ 
¿ßüžÚk
ž¿ßíᔸÚÊÍ ˆÛ Û±üîÙ¡§á$Úíá,‚ÚíᮦϢáCÊͤ˜ñ

”˜ñ
#ü†ñ'ÊÍ$‘ñ(üøôoü¨õ0ü¨õ)ô¨õ¬¨õ 
œ¨õ
59F ÉÝ ¼õl
s4¾õ
‡qËÜD¾õ Åõ¯
DÇõ
éËÜÆTÇõ Ðõò
ù$Òõ
ÉËÜ 4Òõ ×õü‘õH
 ´‘õ
¢T. Øõüšô¦
¤ ‚ö ´ö ˜ö ¿ö ÅöÆöüùóÍÊÍ$‹ôÎà óîÁ üæ«é9 9 ËÜ: ËÜ;§Ô;¾¯D¾¯MtrueÁfalseÁd‚… |£…
l£…
«þü/üï„N
óéùéÿé”Þ ¼… Ã…ü³„ݧ»„;¼· ­(!Ž>
Wóéùéÿé”Þ$à„ÿédÌ„ÿéžž¡·A¢áA£
Aa<e¹Ù 9þü”ÞQ„;eÜdéž ¼ŠŸ,›Ÿ 
$„ŠŸ
±þü…ê:L  ŸüÖžV
óéùéÿé…ê «Ÿ ²Ÿüž¥å¼é$Çžÿéd©ž…ê,ºžÿéžž¡·A¢áA£
Aa<e¹Ù 9þü…ê?…ê?„;yá{ºä§z4¼z
"¤§z
Ý¿ßêþ;L Âzüz?
Á ¿ßêþ”Þ ÍzÔzüÙy{Þ Á Á ©Å 
Ô‰î£yU'ë¿ßêþ”Þ$€zêþ4òy§»„;¼· ­(!Ž>
W¿ßêþ”Þ6êþ7Ò`ÅüÑ”&4é” ,ñ” 2
9¼Ñ”
å¿ßêþžçUFm ö” ü¹”I
Á ¿ßêþžç ˆ•üö“å ºþ$ª”êþ4’”žç,¤ÿúêþøžçìÒ0á2q 
 
«¿ß,üÆ2
Ë¿ß”Þ ÷ þ Ñü¡] ËË•–Î@
GtÅ¿ß”Þ ÌβP¼Í& ,Þ& 
"„Í& 
±¿ßíá8I ã& üµ&:
Ë¿ßíá î& õ& ü…&p Ö¼$¦& íá,™& §á¹íá¹áMÌØ
÷ø%àÚ18?ìú
þÿ%¹Û1àÚ9@¼‰
£¤%üÛ1Õ€Õ€Ö€ uint8x8_tÁ×€ì 䆩ázLry¬u
ª«$ËÜ07>D·¼
«úêçë¿ñ‰ð+²8«±²îT³ì´µ‹UìtDXŠ™¥ÉÆúêçë¿ñ‰ð½½ÓUâĘVÅ·pµgúA£³ôúêçë¿ñ‰ðôû4¬¿
«úêçë¿ñ‰ð+µ8ÖêDÖÖ£WÜ¢ÝæWÞ·oßñ(„Y
úêçë¿ñ‰ðŸ¦Dçë
åúó€ô†ôŒô’ô1î>åíîîTïìðñ‹UòìšN¦l5¤ðPúó€ô†ôŒô’ô¥½½ÓUâĘVÅ·pµgúA£³ôúó†ôŒô’ô4ëî
åúó€ô†ôŒô’ô1ñ>™îJúúÍY¢ƒæW·;‹—2œ\Ãúó€ô†ôŒô’ô«²D•“
ߘçÿé…ê'å4ßäåîTæìçè‹Uéì“ï(¥Þð»˜çÿé…êïïÓUôä¡ œ!ª#w˜çÿé…êÐ×4‚–
ߘçÿé…ê'è4æñ@úú£Wÿä¡ ƒª«ÿ]J¹ª˜çÿé…êD‹Ä
¹˜çžç#¾0¹½¾îT¿ìÀÁ‹UÂì±Ý÷q Òø˜çžçÑÑÓUÕú·Ö··F.»Öl‘Zý˜çžçÐ×4‘Ê
¹˜çžç#Á0Ûô<ëë£Wïê·ðö·ñ··ˆ¢$ˆd‚i˜çžç@A–œ ¡ ·çéëðé³á
ض”àæ§í©Á î•–Ëïü­*ü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œ ¡ ·çéëðé³áضæ§í©Á î•–Ëïhkn”î
eœ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ï…$ Ô
Õ Ø â, Ù Ú à, Û8dž
á$ å
è ö þ ø ù û ü$ ÿ%  Ò ï Ó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 ²7ûü   Ù  Ü ç, Ý Þ å, ß8à& â8ã
æ*é ì , ö ÷ û, ø8ù
ü&¹±<5÷9¹±ø9è±\bþ;è±ÿ;áµ,z£<‘¶ª>‘¶«>ù\4?\<÷øþÿ¹²\
Š
!̲”%
 "³Œ9
Ž #ü²dL

$æ²tZ
Œg
np\^JL8:&(d§
àÚü¨ "
,\€
àÚàÚ

üÚ
"
,\Ê
ŒÝ
àÚàÚ

üÿ '
\
àÚ
$™
ü›
3
àÚø°ú°û°Ðü°ý°þ°ìHˈXêE>
$¸
üÏ+

àÚ

ü–?
´™
£ £ ¤ Ϧ ì ™‘‹ÖqËî
nonzeroÁ<°
ü¶*

àÚ

ì¥
àÚ¯J°J±J



¹Ûü!
L“
àÚ¹Û
$
ì®
¹ÛßKàK
$×
üø#

÷ ÷¹Û³œ 

$…
L
,ƒáµ
£¹²
Š!̲”ý
"³Œ‘
Ž#ü²
$æ²
Œ%Å Ä
ƒ¢„¾
Œüß
d
oq_aOQ?A<«Í Á]&(memÁ Õ&)„ ')D ËÜ+,-./0ÜÙ  **ËÜì¾  **ËÜüÕ)  ËÜ**
-D6ü‡, T ËÜ**¹ºÈ5ü¶2 „Ê ËÜ**
/4üÆ*  ËÜ**
0¢ë1Ìà &¼ ËÜ3á`3ü­8 ° øùú øËÜ ùÁ`Á`œÃ`è Á]Ä`bufÁÁ]Ê­\É:•úê³í³î³Òï³ìð³ñ³ò³ìäs{©¶ѼѼÒ¼ štÀ.2 ´ 2
3 þ » ä¢  44ªâìÅü¢ê 4٨٨565656üó!  û ûìÅËÜ4 ÿ 4
5ìÅ$„ êŠ ÄÈ  ü üìÅ4 Ö 4
6ìÅ Ô ÉÝ858ü¼ D¿ ý ýÉÝËÜ7 È 7
8 êÓ ´&Ì üMR¤Y¯ dsŽ } \ _ Tü4€<ˆŒ[ty~ƒˆž¤Ó눬ÐòÙàÃÌÑhandle_alloc_errorÁ” ACÅ4.”ÍADè±\LþAF;è±ÿAF;áµ,Y£AG<‘¶`ªAH>ù\e4AI?òs, AKºsTˆ AL¤9\± šANÇ 4¾ ˜AOÚ AP»ºéAQƒ¨$AR£ÖNAS´ÎAT´ÎŠATû¡ÆÕAUÎAVîªcAW²$ÿ² AY÷ êAZÇ nq]ûfr^”·½s_”·¾s1ü;6ùüÒտ°³üw&¦©œü£,wz´ÕmaÌ‚UÌ¡H'”ÏŒøöøLŒ,A`ÇDR n]ûL\f^”·4g½_”·¾_üD*JL=?/1LÌ»Œ  É8Æ   È8÷  Ç8<˜  7û$ «8<­ µ7„·üŠA[fn½¾á `bâ `cÅ4†”Í`dÎ`eüà-OQ@B13”—%ÔþLffÙ¨üþ²f٨٨ghghghü£@þ þìŵËê³í³î³Òï³ìð³ñ³ò³ìäs{©¶Îà óîÁ üæ«é
f ¯f
gìÅ÷ºüì>ÿ ÿìŶ׵Ëf f
hìÅ$‚÷ ˆ÷ºüé ”Þjkghkjü¦? ”ÞµË˵i ²i
j÷ºüê= ”Þ¶×µËi ÿi
k$€÷ ÷º¼ê”ÞmÅm¤ž”Þll
müÝ\ ÖµË˵Öoo ©âƺ ôfƺ
nƺá,‚÷º4,.üÛ*Åȹ¦©ü’?A ¿ßë»uu©â¿ß ¨
t¿ßtoÁ«ï „ŠìÞwxü€-ŒƒAìÞÈ›vv
w$•üÏ 5AìÞµËÈ›vv
x÷ºü¿ œÅ Ayy©âìÅ y‡¾‡¾z{z{Ìæ  Ayy´£  AyyüÚ !}}޼ ß ¿ß
ÌA
~¢$‡Ìßüø+Aƒ ƒÌß 
è\ü‹NœŽA೜
capÁ¢ table_layoutÁd®ü§3Uüª3'Aà
ŠÀdÒ3™#<í3üŸ67¼¢6A
ƒè\º6„¦;àÌË;Ô;Aà޼ Ø;“Ð  üþ=H¤>Aàø°ú°û°Ðü°ý°þ°ìHˈXêE>µË
$>™#<œ>¤´F4¿F޼ ÆFäà¤zÎÎnh>Š|ÆHÆHAˆˆÎà óîÁ üæ«é¿ßüÈI!ŒŒ޼ ÔIäà
ÜîIŽŽ޼ óIäàß¼žJ,¡J äàäà §J
¿ß$¨JŒàJ޼ åJäà˜šœ&(üó^A|ý^AÅäà
¿ßbaseÁ$_ö,Ÿ_üÖ{9là{A äàÅ î{
¿ß$ï{¨Ç$õ{ô¼“4Ó äà ¿ß Ê“
¿ß$Ë“üÖ–#\Ù–A äàÅ å–
¿ß$æ–ü©.4š©Aˆ ˆäàäà ¡©
¿ß$¢©Ð 4¨©üé± $þ± äà ƒ²
¿ß$„²ü›¸%$°¸Š Šäà¿ß µ¸
˜¿ß$¶¸üë¾),€¿ äà¿ß †¿
¿ß$‡¿¿üÏÁ(4ÝÁŒ Œäà ø¿ßø èÁ
š¿ßø$éÁäÁüèÇ,4öÇ äà ø¿ßø È
œ¿ßø$‚ÈýÇüåÈ-DðÈŸÖ Ÿ ޼ ùÈ©âíá¬üÈfíáLÿȧáa<e¹Ù 9¡¢£äGIB üȔޤ™É,™ÉAžžÊÍD³É,³ÉAžžíá´ðÉ4ðÉAžž¦Ï¤¡Ël¨ËAÊÍ ¼Ð³{—ö¥¦§¨”±Ì\±ÌA¤¤Œ¬Í$¬ÍA¤¤¶×””Î\”ÎA¤¤dïÎ,ïÎA¤¤Ü€Ïªª޼ …ÏÌΫ¬ÔµÒÂÒÌΩ©œäüãÔ-lêÔÌΩ©
¬¿ßñ"DøÔüÍÕ$®Ö¯®¯޼ ÒզРÕÕ¸ÐLØÕ§á°±²³´µ·¸¹º»¼½¿ÀÂÄÆÈÌÏÑÓÕÙÚÛÞàâãäåìóûüýþÿƒ®°²´üøÕdþÕA­­àüîÙ%4ûÙíá§á­­õåá•BüÅÜŒÏÜAíáìÞê³í³î³Òï³ìð³ñ³ò³ìäs{©¶§áÈ›­­
²¿ßíáá,êÜ™#<üÜ fallibilityÁ\”ÝüÂá:„Éáíá§á­­
³¿ßíáñ"DÚáá,ëáìõãLüãŽ Ž§á Žíá­ †ä­
´¿ßíá$‡äüÒç$DÙç §áÅ­ âç­
µ¿ßíá$ãçüžõ&|¥õ §á­ µõ­
¿ßíá$¶õüÄ÷>dÒ÷ §á äà­ ß÷­
·¿ßíá$à÷ú4æ÷üå6 §áäà­ ú­
¸¿ßíáö,üÒ“4lÜ“A §á äà­ ê“­
¹¿ßíá$ï“¡ $õ“ü€–/,Ž– §áäà­ ”–­
º¿ßíá$™–¡ $Ÿ–ü›™>4©™ §áäà¿ß­ °™­
»¿ßíá$µ™¡ $»™üÜQlØœ˜ ˜§áäà¿ßËÜ­ 札
¼¿ßíá$뜡 $ñœü²ŸRd¹Ÿ §ááø°ú°û°Ðü°ý°þ°ìHˈXêE>¿ß­á¾¾ ÆŸ­©âßá´àŸšßá š¿ßŒåŸšßáóâ$òŸ
½¿ßíáßá$ËŸ¢$ÑŸÕÜŸqsüÓ¢lÚ¢ §á­ 袭
¿¿ßíá$í¢¼¥¤,¬¤œ œ§á­ ²¤­
À¿ßíá$·¤<µ¦À<closure_kind>ÁÁ<closure_signature>ÁÁ
additionalÁTÖÄÒ4éÄ|~üôËŠ\ûË¡ ¡§áóæê³í³î³Òï³ìð³ñ³ò³ìäs{©¶È›­·ÇÇ Ì­ ç”ÆÌ¢óæ ¢¿ß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üóˆµÌúˆ¬ ¬§áßá·ê³í³î³Òï³ìð³ñ³ò³ìäs{©¶äà­áÖ·××Ö ­Ñâ´Ë‰©â¢ù”ó‰­ßá ­¿ßŒÐ‰­ßáÛú$݉®¢ù ®¿ßlø‰®¢ùœû‚Š
Õ¿ßíáßá¢ù$¢‰¢$°‰ÕljÒ4ë‰ÒÔÍÏÕºäØÓäØñ䨨ը¿ßíáßá¢ù ßá §áüå”X|ó”¯ ¯§á¿ßäà­ ƒ•­
Ù¿ßíá$ˆ•¢$Ž•ö,™•˜,§•üߘŒ´ô˜° °§áËÜ¿ßäà­ ”™­
Ú¿ßíá$™™ê§™ö,¹™˜,Ï™üû›R$‚œ± ±§áßáø°ú°û°Ðü°ý°þ°ìHˈXêE>äà­áÜÜ ‡œ­Ñâ´¡œ²ßá ²¿ßŒ¦œ²ßáê€$³œ
Û¿ßíáßá$ˆœ¢$ŽœÕœqs<ó ÛºäÝÓäÝñäÝÝÛÝ¿ßíáßá…ý‘ýüæ£Fí£³ ³§áßáø°ú°û°Ðü°ý°þ°ìHˈXêE> ³¿ß­áßß ñ£­Ñâ´‡¤´ßá ´¿ßŒŒ¤´ßá…„$™¤
Þ¿ßíáßá$ò£¢$ø£Õƒ¤qsüŦR<̦µ µ§áßáø°ú°û°Ðü°ý°þ°ìHˈXêE> µ¿ß­ááá Ô¦­Ñâ´î¦ßá ¿ßŒó¦ßá·†$€§
à¿ßíáßá$Ù¦¢$ߦÕê¦qsü©4TÉ©· ·§áø°ú°û°Ðü°ý°þ°ìHˈXêE> ·¿ß­ Ô©­
â¿ßíá$Õ©ö,Û©ü´¬@t»¬¸ ¸§áø°ú°û°Ðü°ý°þ°ìHˈXêE> ¸¿ß­ ʬ­
ã
Aï¿zÂ0˜ØÉ¿ßíá­ ³Ü­
¿ßíá$¸ÜüÇàP|ÕàÊ Ê§áÁãÐÐá4Ô£ AÕ·AÖ™5A×
2026-01-24 22:59:20 +00:00
Aï¿zÂ0˜ØÊ¿ßíá­ åà­
¿ßíá$ê࣠$ðàüÒåItàå§áÁã²å­­
2026-01-24 22:59:20 +00:00
¿ßíá$ïå£ $õåüÀéG|Îé§áø°ú°û°Ðü°ý°þ°ìHˈXêE>¶×µËíá­­
¿ßíá$ÞéüºïTÖŠŠ޼ Æï¦Ð Éï¸ÐLÌï¨â¿ß$üï¨âíá$‰ð§á?ACEü“ðTŒÖŒ޼ Ÿð¦Ð ¢ð¸ÐL¥ð¿ß$Õðíá$âð§á=?AC”íðÊÍ|†ñŒñAŽŽÊÍ´ùó‚ôAÊÍŽŽßÒüÂ÷*LÐ÷
 Ú÷üÒút”ÕúAà
Ï|íúŠÀd‰û group_widthÁ\¨û”¢‚ÊÍœžŸ ¡¢¤¦©«¬®¯°²³´µ·¸¹º»ÀÂÃÅÇÉÊËÌü“‡ÚŒAË ËƺàìÞê³í³î³Òï³ìð³ñ³ò³ìäs{©¶ÊÍÈ›Ö ‡ïº ¯‡€»Lãˆ
ƺá,»‡ŠÀd·™#<õ‡Ó×\ˆ=?üŒ™Õ´AÌ ÌƺàìÞŬÖ ¹™ïº ¦™€»Lך
ƺá,²™ŠÀdÅ™ñ"Dè™Ó×\š=?ݺä˜Óä˜ñ䘘˜ƺÈ› ìÞü¨§rl«§AÍ ÍƺàÊÍÖšš çïº ¹§€»L¨
ƺá,¼§ŠÀdǧñ"Dâ§35üÚÂ<„äÂAÎ ÎÊÍ õÂ
$öÂö,€Ãü‹ÔZÔŽÔAÏÐÑ ÏÊÍ ÐüÛ ÑÌß³œ ©Ô
œ$ªÔÂ,°Ôâ(L¿ÔüÀèüÊèAÒÓ ÒÊÍ ÓˆýˆýÓê³í³î³Òï³ìð³ñ³ò³ìäs{©¶ óè
$ôè¢$‚éÕ•éüþ™D¤ˆšAÔ ÔÊÍËÜ š
ž$¢š¢$¨šü–¬6Œ ¬AÕ ÕÊÍ ²¬
Ÿ$³¬¢$¹¬üîÃZTøÃAÖ× ÖÊÍ ×ˆýˆý׳œ ƒÄ
 $„Ä¢$ŠÄÕ•Äüøß,¼‚àAØ ØÊÍ šà
¡$Ÿàüñö&$ûöAÙ ÙÊÍÁ㣣 ƒ÷޼ €÷
¢¿ß$„÷ü€•%lŠ•AÚ ÚÊÍ¥¥ ›•޼ ˜•
¤¿ß$ •ü«\„™«AÛÜ ÛÊÍ Üíáà§Ö¨¨§ »«޼ ª«¦Ð ­«¸ÐL°«
¦¿ßíá$À«á,Æ«ŠÀdÑ«?ACEüÊË54ÔËAÝ ÝÊÍäપ ÞË޼ ÛË
©¿ß$ßËö,åË!üÚãDTäãAÞ ÞÊÍë× ïã
«$ðãö,öãé<„äüƒõ#D†õAß ßÊÍÅ­­ ’õ޼ õ
¬¿ß$“õüý÷*L€øAà àÊÍÌß Šø
®$‹ø¢$‘øüÖúV¬àúAá áÊÍËÜËÜ öú
¯$ûúö,ûold_ctrlÁDûnew_ctrlÁDžûüÏüE„ÒüAâ âÊÍ ãü
°$äü» êünew_iÁ,ôü¢$‚ýdóý°ºä±Óä±ñä±±°±ˆýÞ™ ÊÍüÑŠ;lÛŠAã ãÊÍ éŠ
²$îŠö
SLˆ
Aˆ ˆ½âäÿñ°/õõ ²
ñ°/ô’

ô¿ß°/
”˜
ü‹ 
{L• 
A½âã/—þ‘ðñ÷ã/ø÷øñ©â—þ Ÿ 
©â‘ð ¢ 
—þ‘ðäàÄí 
—þûð‘ð „¡

ö¿ß—þ‘ð$© 
 ³ 
accÁÁ 
þ Í 
ƒ|~üé¶
'úú޼ õ¶
½â  ü”·
'üü޼  ·
½â  üÀ·
!þþ޼ Å·
½âÿßÿ¼™¸
,œ¸
 ½â½âý ¢¸
ý
ÿ¿ß$£¸
üó¹
$޼ ø¹
½âƒßKàKäKƒ&(Lžº
$£º
äàüëº
'$îº
Рнâäÿ óº

ƒ¿ß$øº
$÷»
ü¢¼
-L¥¼
 ½â³œ ¯¼

¿ß$°¼
üÔ¿
)޼ Ù¿
½â  ¬žÆ
<©Æ
޼ ±Æ
Áã'/RÛ'L†¯Š "üºÆ
$ÅÆ
ˆˆ½âdàÆ
,àÆ
Aˆˆ”ñÆ
޼ öÆ
Á㎠üŠÇ
"lӂ
AŒ ŒÁ㌠¢Ç
Œ
Ž¿ß$§Ç
äºÈ
޼ ¿È
Áãß¼ŽÉ
,‘É
 ÁãÁã —É

¿ß$˜É
ôÊ
޼ ’Ê
ÁãŤãÊ
<æÊ
Áã
¿ßüýË
޼ ‚Ì
Á㘚ßKàKäK×L˜š13L£Ì
$¨Ì
äàüðÌ
'$óÌ
Ž ŽÁãäÿ øÌ

˜¿ß$ýÌ
,àÏ
üÚÐ
-LÝÐ
 Áã–ö çÐ

š¿ß$èÐ
üÊÑ
l$ÍÑ
Áãã/û…°þã/œœ©â°þ ÒÑ
î÷ ÕÑ
©âÁã,ŠÒ
û…°þÁãßKÌœÒ
û…£ÿ°þ ´Ò

¿ß°þû…$ØÑ
initÁ$ÞÑ
þ çÑ
ˆŠŒŽü‚Ó
(ŸŸ޼ ‡Ó
Áã  ü®Ó
$¡¡޼ ³Ó
Áã  üçÝ
#¯ä£Å£¤ÂÞ
<ÅÞ
¯ä¢¢
£¼ìß
¯ä¥ü¥ä
/L¯ä
A ¯ä³œ¤ ¹ä
¤
¥$¾ä
üðô
$¯ä§¨©ßKàKäK©¨L›õ
$ õ
¦¦üœ÷
#$Ÿ÷
 ¯ä³œ¦ ¤÷
¦
¨$©÷
ü—û
-Lšû
 ¯ä–ö¦ ¤û
¦
©$¥û
ü÷û
-¯äü¨ü
)¯äüý
0\›ý
­Ö®­®޼ §ý
¦Ð¬ªý
¸ÐL­ý
²å¥Í⯓|y¯°±¿79; ªý
”Þ„Çý
$Çý
A¬¬ÁãüÝý
,TÝý
A¬¬ë¥´þ
4þ
A¬¬¦Ïüªþ
'³Ö´´³޼ ¯þ
¦Ð ²þ
¸ÐLµþ
²åµ "$ü‰ÿ
$ÿ
 ²åÁã² •ÿ
²
µ¿ßíá$–ÿ
üÏÿ
W·Ö¸¸·޼ Ûÿ
¦Ð Þÿ
¸ÐLáÿ
ª§$”€ ¼§$¡€ ²å-/13ü«€ WºÖ»»º޼ ·€ ¦Ð º€ ¸ÐL½€ µ¨$ð€ ƨ$ý€ ²å-/13üî„ 0»Ï„  Ò„  ë„ 8Æ Ó„  Ö„  ê„ 8<ׄ  ß„ 7ûLá„ üÍ„ ½Ö¾½¾޼ ó„ ¦Ð ö„ ¸ÐLù„ ²å¿ ¿&(*,”Ö… $Ù…  ²å¼ Þ… ¼
¿¿ßíá$ã… üƒˆ 3ÁÖÂÁÂ޼ ˆˆ ¦Ð ‹ˆ ¸ÐLŽˆ ²åÃÅÃ&(*,¤½ˆ <Àˆ ²åÀÀ
ÿßíáüÚ‰ 4ÅÖÆÅÆ޼ ߉ ¦Ð ≠¸ÐLå‰ ²åÇÈÉßKàKäKÈÉ8:<>L•Š $šŠ ÄÄ¿ßüÚŠ $ÝŠ  ²åäáÄ ⊠Ä
È¿ßíá$çŠ üÇ‹ -LÊ‹  ²å–öÄ Ô‹ Ä
É¿ßíá$Õ‹ üžŒ =ËÖÌÌË޼ £Œ ¦Ð ¦Œ ¸ÐL©Œ ²å!üߌ 9ÎÖÏÎÏ޼ äŒ ¦Ð çŒ ¸ÐLêŒ ²å!üå 1 øÑÒÖÓÓÑÒ©â˜ç ý ©âžç¬€Ž fžçLƒŽ ˜çøü 'žçøÐÐá4Ô£ AÕ·AÖ™5A×
Aï¿zÂ0˜Øø˜çžçï¿zÂ0˜ØÔÕÖ×åù ÅÇÀ €Ž ”ÞŽ $Ž AÐЈˆÕ0Š£ šA'/RÛ'L†¯˜ç¤è  AÐÐÊÍü‚ "T‚ AÐÐÎà óîÁ üæ«éÊÍo4 AÐЊ´ÎÑ{·Ë…YÚ øžž¡·A¢áA£
Aa<e¹Ù 9˜çžçü¹‘ (8ÙÖÚÚÙõ’ ¾‘ ‡“ Á‘ ™“LÄ‘ ÆæÛ "$ü™’ $ ’ ˜ ˜Ææ€•Ø ¥’ Ø
Û8˜çžç$¦’ üß’ X8ÝÖÞÝÞõ’ ë’ ‡“ î’ ™“Lñ’ ¨â˜ç$¥“ ¨âžç$²“ Ææ?ACEü¼“ X8šàÖáàášõ’ È“ ‡“ Ë“ ™“LΓ ˜ç$‚” žç$ Ææ=?ACüš” 18ãÖääãõ’ Ÿ” ‡“ ¢” ™“L¥” Ææå å&(*,”ƒ• $†• œ œÆæâ ‹• â
å8˜çžç$ üò˜ 58çÖèçèõ’ ÷˜ ‡“ ú˜ ™“Lý˜ ÆæéêëßKàKäKêë8:<>L®™ $³™ ææ˜çüó™ $ö™ ž žÆæø°ú°û°Ðü°ý°þ°ìHˈXêE>˜çæ û™ æ
ê8˜çžç$€š ü‘› -L”› Ÿ ŸÆæ–öæ ž› æ
ë8˜çžç$Ÿ› üè› >8 íÖî îíõ’ í› ‡“ ð› ™“Ló› Ææ!üªœ :8¡ðÖñ¡ðñõ’ ¯œ ‡“ ²œ ™“Lµœ Ææ!Ì‘¤ \œ¤ óó޼ ¨¤ ÎèxçÞÏ7ˆôõ "̱¤ ,±¤ Aòòâç¼Ð¤ <Ф Aòò¦Ï´© ÷÷޼ ’© Îèø üÛ© Få© A¢ ¢§áÎèöÖùù þ© ö¦Ð é© ¸ÐLì© 
ø¿ßíá·,÷© ¢$ª -/ü¯« ûû޼ ´« Îèüßü¼‡¬ ,Ь £ £ÎèÎèú ¬ ú
ü¿ß$‘¬ üŒ­ "þþ޼ ‘­ ÎèÿÅÿ¤æ­ <é­ Îèýý
ÿ¿ßüó® #âçŤί <ѯ âç
¼þ° âçƒüͱ 7×± A¤ ¤ÊÍâç â± 
ƒ·,Û± ¢$ò± ü§µ #޼ ¬µ ÎèßKàKLѵ $Öµ äàüíµ '$ðµ ¥ ¥Îèäÿ õµ 
¿ß$úµ ü†º $âçŠßKàKŠL±º $¶º ˆˆüɺ ($̺ ¦ ¦âçø°ú°û°Ðü°ý°þ°ìHˈXêE>âçßKˆ Ѻ ˆ
Š$Öº ü 3d“ øŒÖŽŽŒõ’ ¤Â ‡“ §Â ™“LªÂ ©“üÕ !º“
¡8£ ·?Þ;„}î0ø˜çžç?Þ;„}î0 Â ˆŠŒ¤»Â $¿Â €•¡,Ù  øæ–üû ,8§Ö§õ’ €Ã ‡“ ƒÃ ™“L†Ã ¡8£ ·?Þ;„}î08˜çžçZ\^`üßà c$íà © ©Á¯ƒðÿž õà ©âƒð òà ¨ƒð ¨˜ç¬¬Ä ¨ƒð£±$½Ä 
8˜çžçƒð$úà þ „Ä moD‘$•˜š»¢ ¥ ¾8Æ ¦ © ½8 ²7ûü  
ü¡%»ð ó Œ8Æ ô ÷ 8 7ûL‚üî 
˜ üÍ'»œ Ÿ ¸8Æ   £ ·8 ¬7ûüš 
£³ äü¢3ÑÉ޼ ¼
š¿ßaddrÁ$¿Äœ¤ ºÄÊÐÕý˜¢Çìù¦«½ÖåúŒâ
ûLfŸr^°4!ˆ ”·4)½¡s_”·¾¡s_á4D1Т¡8d;£Î2\I¬¤Õ0<Vˆ¥D_ž¦ض”x¨æõ𩻺éªg4¼¦«ÍÁ]­à`®ã`®j\óæb°¦$€»b±¦Áb±£l—ÖN²´Î³´Îгû¡ÏÕ´IndexÁ,㦘µüfûþì_®± £üp8y|gjWZ¤®MÄÈ?Î14üæÌ‹æÌªÖLɰ„Øœü›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);ÁüÎ%  *stat += random_stat_buff();Á<ï%”Ã÷%Ëüû%]Z The easiest way to use `H
Ö&Jènøe»óéùéß ÞÑß
ìóéùéÿé…ê$ßÑüòÛ/üÈÓ@= An iterator visiting all key-value pairs in arbitrary order,ÁüÔ*' with mutable references to the values.Áü¼Ô63 The iterator element type is `(&'a K, &'a mut V)`.Á÷ÔËtÿÔ¶É’ÕË<šÕ”ÃܦÕãÉÆÕËüÎÕ! µ¼ôÕʵ¼Öêµ¼¬ÖжÈÖËÄÐÖ // Update all valuesÁüíÖ$! for (_, val) in map.iter_mut() {Á”–× *val *= 2;Á׋ӷ×Ëì¿×ª¶üá×/¼Ê•ØËäØ for (key, val) in &map {Áü¾Ø.­ËüñØåË,•Ù‹ÓŸÙËü§ÙD§ÌüðÙ@õÌĵÚ¦¹üÒÚ41 assert_eq!(vec, [("a", 2), ("b", 4), ("c", 6)]);Á‹ÛËì“Ûª¶<µÛ”ÃDùÛ¼ ¼¼éÒJä
³£züÚ¼óéùéß ‚Üß
íóéùéÿé…ê$‡ÜÔÇáü‚ß.+ Returns the number of elements in the map.ÁµßËt½ß¶ÉÐßË<Øß”ÃÜäßãÉ„àËüŒà let mut a = HashMap::new();Áܰà assert_eq!(a.len(), 0);Á¬Ðà a.insert(1, "a");ÁÜêà assert_eq!(a.len(), 1);Á<Šá”ÃÎá½ ½¼éß Òáß
îóéùéÿé…ê$ÓáôÑäüˆâ30 Returns `true` if the map contains no elements.ÁÀâËtÈâ¶ÉÛâË<ãâ”ÃÜïâãÉãËü—ãñ×Ô»ã assert!(a.is_empty());Á¬Úã½ØÜôã assert!(!a.is_empty());Á<”ä”ÃDØä¾ ¾¼éß áäß
ïóéùéÿé…ê$âäü·ï-ü•åKH Clears the map, returning all key-value pairs as an iterator. Keeps theÁüåå allocated memory for reuse.Á‰æËü‘æGD If the returned iterator is dropped before being fully consumed, itÁüÝæFC drops the remaining key-value pairs. The returned iterator keeps aÁü¨ç@= mutable borrow on the vector to optimize its implementation.ÁíçËtõç¶ÉˆèË<è”ÃÜœèãɼèËüÄèñ׬èè½Ø¬‚é a.insert(2, "b");Áüœé-* let capacity_before_drain = a.capacity();ÁÎéËüÖé%" for (k, v) in a.drain().take(1) {Áü€ê" assert!(k == 1 || k == 2);Áü§ê&# assert!(v == "a" || v == "b");Á,Òê‹ÓÜêËüäê?< // As we can see, the map is empty and contains no element.Áü¨ë*' assert!(a.is_empty() && a.len() == 0);Áü×ë,) // But map capacity is equal to old one.Áüˆì41 assert_eq!(a.capacity(), capacity_before_drain);ÁÁìËüÉìñ׬íì½Ø¬‡í²à¡íËü©í63 { // Iterator is dropped without being consumed.ÁÔäí let d = a.drain();Á,ƒî‹ÓîËü•îA> // But the map is empty even if we do not use Drain iterator.ÁÔÛîŒÛ<úî”Ã,¾ï¿ ¿¼é†Rä¼8¸!ºË¢¿óéùé…êß Äïß
ðóéùéÿé…ê$Éïü÷öUü³ðC@ Retains only the elements specified by the predicate. Keeps theÁüûð­ÝŸñËü§ñXU In other words, remove all pairs `(k, v)` such that `f(&k, &mut v)` returns `false`.Áü„òA> The elements are visited in unsorted (and unspecified) order.ÁÊòËtÒò¶ÉåòË<íò”ÃÜùòãÉ™óËü¡óHE let mut map: HashMap<i32, i32> = (0..8).map(|x|(x, x*10)).collect();Áìîó assert_eq!(map.len(), 8);ÁôËü˜ô# map.retain(|&k, _| k % 2 == 0);ÁÀôËüÈôEB // We can see, that the number of elements inside map is changed.Áì’õ assert_eq!(map.len(), 4);Á´õËü¼õOL let mut vec: Vec<(i32, i32)> = map.iter().map(|(&k, &v)| (k, v)).collect();ÁÄö¦¹ü­ö96 assert_eq!(vec, [(0, 0), (2, 20), (4, 40), (6, 60)]);Á<ëö”Ã4þö ¼éßòò ˆ÷ß©âíï …÷ÀÁíï Àóé Áùé̲÷ÀÁíïÁð$Ç÷
ñóéùéÿé…êíï$÷þ —÷üã‡rü¥ú=: Drains elements which are true under the given predicate,Áüçú30 and returns an iterator over the removed items.ÁŸûËü§ûXU In other words, move all pairs `(k, v)` such that `f(&k, &mut v)` returns `true` outÁÔ„ü into another iterator.Á£üËü«ü[X Note that `extract_if` lets you mutate every value in the filter closure, regardless ofÁü‹ý,) whether you choose to keep or remove it.Á¼ýËüÄý^[ If the returned `ExtractIf` is not exhausted, e.g. because it is dropped without iteratingÁü§þRO or the iteration short-circuits, then the remaining elements will be retained.ÁüþþWT Use [`retain()`] with a negated predicate
*v = "b";Áü­ê@= assert_eq!(map.get_key_value_mut(&1), Some((&1, &mut "b")));Áüòê0- assert_eq!(map.get_key_value_mut(&2), None);Á<§ë”ÃŒÈëÐÑ Ð¼é Ñؼø°ú°û°Ðü°ý°þ°ìHˈXêE> Ðóé Ðùéøè; Ýëøð½ Ú낾$œì“¾l£ì
Šóéùéÿé…êؼ$âë¸ èëBDü†õ`üÎï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Ïõ
Œóéùéÿé…êؼ$žõ¸ ¤õBDüÀý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);Á<ƒý”Ã<ÇýÔÕ Ô¼é Õؼø°ú°û°Ðü°ý°þ°ìHˈXêE> Ôùéøè; Òýøð½ Ïý‚¾$‹þ“¾l’þ
Žóéùéÿé…êؼ$×ý¸ ÝýBDü¼ü¨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.ÁÃËd˃Á“܃Ëüäƒ'$ 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ÁüÔ‡96 let [Some(a), Some(b)] = libraries.get_disjoint_mut([Á¤’ˆ "Athenæum",ÁÜ«ˆ "Bodleian Library",ÁÌˈ ]) else { panic!() };ÁéˆËüñˆ96 // Assert values of Athenæum and Library of CongressÁü¯‰*' let got = libraries.get_disjoint_mut([Á¤Þ‰çâô÷‰ "Library of Congress",Á<šŠ ]);Á|¦Š assert_eq!(ÁdºŠ got,ÁLËŠäÙŠ Some(&mut 1807),ÁäúŠ Some(&mut 1800),ÁT›‹ ],Á4ª‹Íµ‹Ëü½‹" // Missing keys result in NoneÁüä‹*šä¤“Œçâü¬Œ" "New York Public Library",Á<ÓŒå|ߌ‘ådóŒ©åL„¾åä’Ð儳
NoneÁÍ”ÃíËœõ ```should_panicÁÜŽãÉ­ŽËüµŽ'–ßüáŽ4ŒàšËä¢ // Duplicate keys panic!ÁüÃ*šä¤òç⤋çâå”ÄÃÖ× Ö¼é ×ؼÍø°ú°û°Ðü°ý°þ°ìHˈXêE> ÖùéÍøè;Í çøð½ ÔÍ‚¾$®‘“¾lµ‘
óéùéÿé…êؼÍksÁòXZV Ý,Œ’ºäÓäñä óéùéÿé…êؼÍø°
Ï÷³£züÚ’Æ@BDF´¢Æ,¢Æf4ìÆŠ´ÎÑ{·Ë…YÚ£ý øçëüÐÈ88á:ê:ð ÜÈ åȨâúê$ßȨâçë$èÈ€ì68:<äÉ8á:ê:ð ’É •É€ìü¤Ê+$²Ê €ìýýäIä
Ö&Jènøeúêçë ·Ê
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˜Ô¾øK™kŒôƒïœ9;=?A •Ô”Þì²Ô,²Ô˜˜¬¬Î2¯£ A°ù2A±
A¥Í⯓|yþüžçüÔÔ*á:žê:ŸÖ Ÿ ž–ö ÙÔ§ö ÜÔ‡“ ßÔ™“LâÔ¾ø¡')+-/1üùÕ+$‡Ö ¾øýýäIä
Ö&Jènøeóéùé ŒÖ
¡óéùéžç$ÖüµÞ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ÒÞÍì=äJžQ@í¦9;=?A ÏÞ”ÞÄìÞ,ìÞ¢¢¾øü‰ß6á:¨ê:©Öª¨©ª–ö Žß§ö ‘߇“ ”ß™“L—ßÍì«Å«/13579¤÷ß<úßÍì§§
«óéùéžçüÖà7á:­ê:®Ö¯¯­®–ö Ûà§ö Þà‡“ áà™“LäàÍì°±³´ßKàKäK×L³±´LNPRTVL”á$™á¬¬óéü¶á$¹áˆ ˆÍìø°ú°û°Ðü°ý°þ°ìHˈXêE>óé¬ ¾á¬
±óéùéžç$ÃáDöᱺä²Óä²ñä²²±²óéùéžçþüóéüšâ-Lâ Íì–ö¬ §â¬
³óéùéžç$¨âüãp$„ãÍìã/íï•· ¬ã/µµ¬©â•· ‰ãšð Œã©âÍì,Åãíï•· ÍìßKÌ×ãí •· ïã
´óéùéžç•· íï$ãëþ$•ãþ ¢ãl–ä´ºä·Óä·ñä··´·óéùéžç•· íï•· þü•·  íïü¸ä@á:¹ê:ºÖ»»¹º–ö ½ä§ö À䇓 Ã䙓LÆäÍ켪K¼/13579´ååŠ ŠÍì¸ ”å¸
¼óéùéžç$•åüÈå<á:¾ê:¿ÖÀ¿¾À–ö Íå§ö Ð凓 Ó噓LÖåÍì$&(*,.ü‰æGá:Âê:ÃÖÄÃÄ–ö Žæ§ö ˜æ‡“ ¢æÒñ,‘æãñ,›æ™“L¥æÍìÅá`ÅACEGIKü׿8ÚæŒ Íì ŒÁ`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•š§Á ÞæÁ
Åóéùéžç$ßæþ åæ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·Ä€î¦¹ü™î74 assert_eq!(vec, [Some("a"), Some("b"), Some("c")]);ÁÑîËÜÕîê‡ üñî$! assert_eq!(values.next(), None);Áü–ï$òÅ <»ï”ÃTÎïá:Èê:ÉÖÊÊÈÉ–ö Ùï§ö Ü¬ßLâï¹í
Aï¿zÂ0˜ØøÉý…êü¨–+8 á:ê:ŽÖŽ ð ­– °–Éö ³–ÚöL¶–”ü')+-/1üΗ+$Ü—¡ ¡”üýýäIä
Ö&Jènøe¡úêçëŒ á—Œ
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);ÁРËìÔ  assert_eq!(map.len(), 1);Á<ò ”Ã,üú 2"Iterators are lazy unless consumedÁL¸¡øá:ê:Öð Æ¡ É¡± Ì¡©â‰ð¬Ï¡f‰ðLÒ¡œŠ y+­Š +‰ðø+àRþ˜ä†£ÌˆiS]øúêçëƒð‰ð†£ÌˆiS]˜¡ÅÇÉËÍÏÈ Ï¡”Þ$ì¡ ì¡ƒðüö¡",ö¡¡8£ ·?Þ;„}î0øÉý‰ðü¢q8¤á:šê:œÖ¤œš¢£ƒð ¢úê £çë$÷¢ ¥¢± ¨¢ÿƒ
«¢¢£ƒðˇ
Ìâ¢ð ¢¢‘„
L„£½ïžŸ¡ßKàKäK¡Ÿ/1vxz|~L•£$š£Éýüߣ($⣥ ¥½ïø°ú°û°Ðü°ý°þ°ìHˈXêE>½ïßK ç£
Ÿ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«­ø§á:¨ê:©¨§©ð ¹­ ¼­œŠ <>­Š C>±û{zj!¦1ªµ­<>@BÄÅ­,Å­¦¦Ï÷ü›¹'üâ­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йœŠ üÐË"­Š 
¿ñø±„
«±²îT³ì´µ‹UìtDXŠ™¥ÉÆøúêçë¿ñ‰ðtDXŠ™¥ÉƱ²´µ²³½½ÓUâĘVÅ·pµgúA£³ôøúêçë¿ñ‰ðÜ¢
µÖÖ£WÜ¢ÝæWÞ·oßñ(„Y
øúêçë¿ñ‰ðÜ¢
ª¹§ª­°ª­° ·¹”Þ–´´á¹ 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ó¿ëð¼á`¼JLNPRTVXü¤À8§À«¬­ «ëð ¬Á`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•­š§· «À·
¼8úêçë¿ñ‰ð$¬Àþ ²ÀüÏÊQü¦Â30 A view into an occupied entry in a [`HashMap`].ÁüÚÂ74 It is part of the [`Entry`] and [`EntryRef`] enums.Á’ÃËt–öɥÃË<©Ã”Ãü±Ã=Ò–
ïÃËüóÃ! µü•Ä2³—
ÈÄËüÌÄ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àDZ×,êÇ‹ÓðÇËüôÇ  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ËœŠ ® ­Š µ Ê¢
¼ ±„
à ۣ
pµgúA£³ôÃÄÅèÊikmoq òÊÕÝ{ ŠË”ÞL§Ë$§Ë½½¤¶Ë$¶Ë½½ˆˆ°Š÷ A¤zÎÎnh>Éý ,Ð˽½¸öü÷Ë8®á:Çê:Èó:ÉÖÊ®ÉÇÈÊ ð ƒÌ †Ì–¢
‰Ìÿƒ
ŒÌæ™ $ÃÌø™ $Ð̨â¿ñ$Ý̨â‰ð$êÌ‘„
LñÌÑñcegikmoqü€Í8¯á:Ìê:Íó:ÎÖÏͯÌÎÏ ð ŒÍ Í–¢
’Íÿƒ
•Íúê$ÌÍçë$ÙÍ¿ñ$æÍ‰ð$óÍ‘„
LúÍÑñqsuwy{}üŠÎQ8°á:Ñê:Òó:ÓÖÔÓÔÒѰð Î ™Î–¢
£Îÿƒ
¦Î´Ž ,’ÎÅŽ ,œÎ‘„
L©ÎÑñÕá`ÕJLNPRTVXüâÎ8åα²³ ±Ññ ²Á`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•³š§Ð éÎÐ
Õ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);ÁÄÖ *value = 20;ÁLšÖ±×,¤Ö‹ÓüªÖ/, assert!(map[&"b"] == 20 && map.len() == 2);Á<ÚÖ”Ã\íÖø×á:Øê:Ùó:ÚÖÛØÛ×ÙÚð ýÖ €×–¢
´ƒ×ÿƒ
¬›×‘„
Lž×œŠ üÓ×"­Š 
Ê¢
±„
Ǥ
oßñ(„Y
ÜÝÞùÖikmoq ƒ×ÕÝ{ ›×”ÞL¸×$¸×ÖÖ4Ç×Ç×ÖÖúê·,Ó×ÖÖ¸öüú×H8´á:àê:áó:âÖããáà´âð ÿ× ‰Ø–¢
ŒØÿƒ
Ø´Ž ,‚Ø‘„
L’ØÈòäá`äACEGIKMOüÉØ8ÌØµ· µÈò Á`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•·š§ß ÐØß
ä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Èèf’ôLáèúóø †ôøŒôø(’ôø6€ôê@d…úåíîîTïìðñ‹UòìšN¦l5¤ðPøê@úó€ô†ôŒô’ôšN¦l5¤ðPíîðñîï½½ÓUâĘVÅ·pµgúA£³ôøúó†ôŒô’ô†á
ñòúúÍY¢ƒæW·;‹—2œ\Ãøê@úó€ô†ôŒô’ô†á
¬è°è    Èè”Þ´òèü¤
éË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(_) => { }Á,Õî‹Ó<ßî”Ãåå
ñøê@úó€ô†ôŒô’ôûâ
†á
ååžë
üòî%ååûâ
üï8¸8¹á:ôè;õê:öó:÷Öø¹÷õ¸øôö
Õß
¢ïçß
¥ïùß
¨ï‹à
«ïà
®ïà`úó,èï¦úó€ôLðïà`€ô,‚ðà`†ô,™ð¯à
L§ð©óùá`ùü¸ð8»ðº»¼ º©ó »Á`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•¼š§ó ¿ðó
ù88úó€ô†ôŒô’ô$Àðþ ÆðüŸùPüÆò.œÂ
üõò(% 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ªùãYûïYüá:ýè;þê:ÿó:ÖûÿþüýÕß
Åùçß
Èùùß
Óù‹à
Öùà
¬Ùù¯à
LÜù€ôïY« úóãYü—ú$†ôãYŒôãY’ôãY+úúÍY¢ƒæW·;‹—2œ\ÃãYïYúó€ô†ôŒô’ô;‹—2œ\Ã$¹ù$¿ù

 Ùù”ÞLöù$öùúúß …úúú ïY€ôI,—úúú ãY§»„;¼· ­(!Ž>
Wúó†ôŒô’ôüÀú8½8¾á:è;ê:ˆó:ÖŠˆ¾Š½Õß
Åúçß
Èúùß
Ëú‹à
Îúà
ÑúÎí
L‘ûãí
,£û¯à
LºûŸôá`SUWY[]_aceüËû8Îû¿ÀÁ ¿Ÿô ÀÁ`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•Áš§ Òû
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Ê¢
33±„
:3ŒŒðZÄ@˜ë„ÉôÜøúêçë¿ñ‰ðë„Éôܱƒ¬®°²´¸ ¾ƒ”Þü“„(üÛƒ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Ã…‰õá`JLNPRTVXüü…8ÿ…ÃÄŠÉõ ÄÁ`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•Åš§ ƒ†
8úêçë¿ñ‰ð$„†þ Іü‰ˆX8Æá:ê:œó:֞Ɯžð Žˆ ˜ˆ–¢
¢ˆÿƒ
¥ˆ´Ž ,‘ˆÅŽ ,›ˆ‘„
L¨ˆ‰õŸæ`ŸJLNPRTVXüèˆ8ëˆÇÈÉ Ç‰õ ÈÁ`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•Éš§š 
Ÿ8úêçë¿ñ‰ð$ðˆþ öˆü÷ŠHø¡á:¢ê:£ó:¤Ö¥£¡¥¤¢ð €‹ ƒ‹–¢
†‹ÿƒ
‰‹‘„
LŒ‹ãõ¦§¨¯J°J±J¨üŠ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ñ’¸ö¯°±¯J°J±J±á’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으鷸¹¯J°J±J¹FHJLNPRT²²þüD¿²²˜˜šœäK™kŒôƒïóéùé…êüÆ£'üâ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.Áij¢¦¹üТ4ÌÍ<‰£”ÃLÉ£¼éë¥ ²²
¹óéùéÿé…ê$Ó£üÁ¤%8Êá:»ê:¼¼Ê»ð Ƥ ɤ¥ë½Å½!#¤ž¥<¡¥¥ëºº
½8úêçëüž¦*ø¿á:Àê:ÁÁ¿À𠧦 ª¦àöÂÃÄÅßKàKäK×LÃÅÄ£¦ACEGLϦ$Ô¦¾¾¡ýü¡§,$¤§Ë Ëàöø°ú°û°Ðü°ý°þ°ìHˈXêE>¡ý¾ ©§¾
Ãøúêçë$®§üª-L„ªÌ Ìàö–ö¾ Žª¾
Äøúêçë$ªü‹«p$Ž«àö•· íï•· ¾ã/ÆÇÇÆ¾з “«šð –«©âàö,Ï«íï•· àößKÌá«íגּ •· ù«
Åøúêçë•· íï$™«ëþ$Ÿ«þ ¬«D ¬ÅºäÈÓäÈñäÈÈÅÈúêçë•· íï•· Ÿ»
•· ÿ¹ ü…­/8Íá:Êê:ËÍÊËð Š­ ­¥ë̪KÌ!#´ì­ï­Î Î¥ëÉ ó­É
Ì8úêçë$ô­ü§®+8Ïá:Îê:ÏÎÏÏ𠬮 ¯®¥ëü×®(8Ðá:Ñê:ÒÐÒÑð Ü® ß®€ìÓÅÓ!#¤·¯<º¯€ìÐÐ
Ó8úêçëü·°-øÕá:Öê:×ÕÖ×ð À° ðÏ÷ØÙÚÛßKàKäK×LÙÚÛ¼°ACEGLë°$ð°ÔÔŠ™ üÁ±0$ıÑ ÑÏ÷ø°ú°û°Ðü°ý°þ°ìHˈXêE>Š™ Ô ɱÔ
Ùøúêçë$αü©´-L¬´Ò ÒÏ÷–öÔ ¶´Ô
Úøúêçë$·´ü³µp$¶µÏ÷•· íï•· Ôã/ÜÝÝÜÔз »µšð ¾µ©âÏ÷,÷µíï•· Ï÷ßK̉¶í •· ¡¶
Ûøúêçë•· íï$Áµëþ$ǵþ ÔµDȶÛºäÞÓäÞñäÞÞÛÞúêçë•· íï‘´ ÿ¹ ü­·28Óá:àê:ááàÓð ²· µ·€ìâªKâ!#´—¸š¸Ô Ô€ìß ž¸ß
â8úêçë$Ÿ¸üѸ.8Õá:äê:åäåÕð Ö¸ Ù¸€ìü„¹W8Öá:çê:èèÖç𠉹 Œ¹´Ž T½¹ÅŽ Tй€ìéá`é/135üâ¹8å¹×ØÙ ×€ì ØÁ`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•Ùš§æ 鹿
é8úêçë$ê¹þ ð¹üÛº6á:ëê:ìÖííëì–ö ວö 㺇“ 溙“L麾øîÅî/13579¤É»<Ì»¾øêê
îóéùéžçü¨¼7á:ðê:ñÖòðñò–ö ­¼§ö °¼‡“ ³¼™“L¶¼¾øóôõößKàKäK×LõöôLNPRTVLæ¼$ë¼ïïþüü°½$$³½Ú Ú¾øøåï ¸½ï
ôóéùéžç$½½ü¬¾-L¯¾Û Û¾ø–öï ¹¾ï
õóéùéžç$º¾ü¶¿l$¹¿¾ø•· íï•· ïã/÷øø÷ïз ¾¿šð Á¿©â¾ø,ö¿íï•· ¾øßK̈ÀíïÊ •·  À
öóéùéžç•· íï$Ä¿ëþ$Ê¿þ Ó¿üÒÀ@á:úê:ûÖüûúü–ö ×À§ö ÚÀ‡“ ÝÀ™“LàÀ¾øýªKý/13579´ÊÁÍÁÜ Ü¾øù ÑÁù
ýóéùéžç$ÒÁü„Â<á:ÿê:Ö  ÿ–ö ‰Â§ö ŒÂ‡“ ™“L’¾ø$&(*,.üÅÂGá:ƒ ê:Öƒ –ö ʧö Ô‡“ ÞÂÒñ,ÍÂãñ,×™“Lá¾øá`ACEGIKü“Ã8–ÃÝÞß Ý¾ø ÞÁ`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•ßš§ šÃ
óéùéžç$›Ãþ ¡ÃüŒÄ%8àá:ˆ ê:ˆ àð ‘Ä ”Ä¥îŠ ÅŠ !#¤éÄ<ìÄ¥î
Š 8úêçëüÈÅ*øŒ á: ê:Ž Ž  Œ ð ÑÅ Ôŵù ‘ ’ ßKàKäK×L ÍÅACEGLùÅ$þÅ£ýüÂÆ#$ÅÆá
›èÿƒ
žè‘„
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ÒëÜ¢
çëÛ£
2026-01-24 22:59:20 +00:00
æ æ ½ü$Ÿìæb¿ñ\°ì
ì øúêçë¿ñ‰ð$Ùë˜,ßëüóò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úòÜ¢
2026-01-24 22:59:20 +00:00
çëæ æ ½ü$¸ó‘† \Éó
í øúêçë¿ñ‰ð$„ó><Šóüªú|üùô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);Áü™ù*ùŒ üÈù ­ <íù”Ã|±úÜ¢
2026-01-24 22:59:20 +00:00
çëÛ£
æ æ ½ü$‰û‘† \šû
2026-01-24 22:59:20 +00:00
î øúêçë¿ñ‰ð$Áú><Çúü¾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;ÁüØ€$ <”ÃÜ¢
ìø æ ð ð æ ¶ù Ôìø ìø çë ã½ü$š‚‘† \«‚
ï øúêçë¿ñ‰ðìø ><ì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");Á<Á‘”Ã…’ Ü¢
2026-01-24 22:59:20 +00:00
úêæ  ‰’æ
ó øúêçë¿ñ‰ð$Š’ü–˜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);Á<Ù—”ÃT˜Ü¢
ìø Ü¢
æ õ õ æ ¶ù ¨˜ìø  çë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"));Á<㦔ô§§Ü¢
ìø Ü¢
æ ÷ ÷ æ ¶ù ¾§ƒìø  ƒúêçëÔê§ƒìø â´ ø°ú°û°Ðü°ý°þ°ìHˈXêE>çë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`].ÁÃËü¥Ã" [`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©æ±×ü·æ'¥¬ ,ãæ‹ÓíæËüõæ,Dz <¦ç”ÔêçÛ£
ìø Ü¢
ÿ 

ÿ ¶ù ýçˆìø  ˆúêçëÔºèˆìø Œè µ LËè
Œ
øúêçë¿ñ‰ðìø $€èþ †è{}túéŒ
ºäŽ
ÓäŽ
ñäŽ
Ž
Œ
Ž
úêçë¿ñ‰ðìø ÉýÖö ìø ø°ú°û°Ðü°ý°þ°ìHˈXêE>úêü·î;ø
á:
ê:
ó:
Ö





ð Àî Ãî–¢
Æîÿƒ
Éî‘„
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øš
ê@
á:œ
2026-01-24 22:59:20 +00:00
è;
ê:ž
ó:Ÿ
Ö 
 
ž
š
œ


Ÿ
Õß
–„çß
™„ùß
¤„‹à
§„à
ª„¯à
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퇆á
†ôâ


»búó$ºˆ÷ ê@€ôúó<ψæbŒô\ãˆ
¡
øê@úó€ô†ôŒô’ô$ô‡˜,ú‡ü¶züÚŠRÞ… ü±‹2·Ðè‹Ëtð‹¶ÉƒŒË<‹Œ”ÃÜ—ŒãÉ·ŒËü¿Œ7½û ûŒË´ƒ¬‡ üž,) map.entry_ref("poneyland").or_insert(3);ÁüÏ$þ‡ øËœ€Ž·ˆ ü˜Ž30 *map.entry_ref("poneyland").or_insert(10) *= 2;ÁüÐŽ$ <ùŽ”Ã†á
†ô ø†ô

½þ Îþ <êþ 
¢
øê@úó€ô†ôŒô’ô><ÍüÝ–üÚ‘]Þ ü¼’>Å ÿ’Ë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;ÁüΞ%Šœ <øž”Ô¼Ÿ†á
І
 

¦
¦

³†
ÏŸŠІ
 Š€ô|ÒŸŠІ
»Œ
†ô àŸ½þ $— Îí
Lž Îþ <¸ êþ \Ì 
¥
øê@úó€ô†ôŒô’ôІ
$ãŸ><韥§üº¦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));Á<³½”Ä÷½†á
â
ª
ª
½þ $ľúúóÕþ \˾êþ \ã¾
³
øê@úó€ô†ôŒô’ô$ˆ¾üÀ\ãYµ
ïY
á:·
è;¸
ê:¹
ó:º
Ö»
¸

»
·
µ
¹
º
Õß
®Àçß
±Àùß
¼À‹à
¿Àà
ÂÀ¯à
LÅÀçø
¼
½
¾
¿
$¢À$¨ÀPRTVXZ\^`bä¤Äü€ÁI©ë üÎÁ! through the `VacantEntryRef`.ÁôÁËtüÁ¶ÉÂË<—”ÃÜ£ÂãÉÃÂËüËÂ7½û ü‡Ã  let key: &str = "poneyland";Áü¬Ã63 assert_eq!(map.entry_ref(key).key(), "poneyland");Á<çÃ”Ã«Ä çø
ùú
´
 ¯Ä´
¼
ãYïYúó€ô†ôŒô’ô$°ÄüƒÉyüßÄ@= 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ŠÉçø
†ô ãY†ô´
´
½þ $ÅÉ÷ùú
úó<ÜÉêþ \ðÉ
½
ãYïYúó€ô†ôŒô’ô$‘ɘ,—ÉüñÔŠüüËJG Sets the key and value of the entry and returns a mutable reference toÁ¼ËÌ the inserted value.ÁçÌËüïÌGD Unlike [`VacantEntryRef::insert`], this method allows the key to beÁü»ÍLI explicitly specified, which is useful for key types that don't implementÁ”ŒÎ `K: From<&Q>`.Á£ÎËd«ÎÁ“¼ÎËüÄÎKH This method panics if `key` is not equivalent to the key used to createÁÌ”Ï the `VacantEntryRef`.Á²ÏËlºÏ
# ExampleÁÌÏË<ÔÏ”ÃüàÏ&¶¦
Ü‹ÐãÉ«ÐËü³Ð;8 let mut map = HashMap::<(String, String), char>::new();ÁüóÐ/, let k = ("c".to_string(), "C".to_string());Áü§Ñ&# let v = match map.entry_ref(&k) {ÁüÒÑIF // Insert cannot be used here because tuples do not implement From.Áü ÒB? // However this works because we can manually clone instead.ÁüçÒ?< EntryRef::Vacant(r) => r.insert_with_key(k.clone(), 'c'),Áü«Ó+( // In this branch we avoid the clone.ÁüÛÓ,) EntryRef::Occupied(r) => r.into_mut(),Á4ŒÔ€Æ
Ä—Ô assert_eq!(*v, 'c');Á<´Ô”Ã|øÔçø
úó†ôª©
´
´
½þ $ÄÕð€ôúólÕÕêþ \ïÕ
¾
ãYïYúó€ô†ôŒô’ô$ˆÕæWŽÕ˜,–ÕüšÝüŽÙB? Sets the value of the entry with the [`VacantEntryRef`]'s key,ÁüÕÙ%”‹ ÿÙËt‡Ú¶ÉšÚË<¢Ú”ÃÜ®ÚãÉüÎÚ&¶¦
ùÚËüÛ5ƒ »ÛËüÃÛ=: if let EntryRef::Vacant(v) = map.entry_ref("poneyland") {Áü…Ü#äö ü­Ü!‘÷ ,ÓÜ‹Ó<ÝÜ”Ãd¡Ýçø
†ô½½ÓUâĘVÅ·pµgúA£³ôãYúó†ôŒô’ô´
´
½þ $öÝÏ©
<Þêþ \¡Þ
¿
ãYïYúó€ô†ôŒô’ô$®Ý˜,´Ýüßàá:Á
ê:Â
ó:Ã
ÖÄ
Ã
Á
Ä
Â

–ö äà§ö çà¸ö êàÉö íà›‘ªá¬‘$¯áŸý\¼áûô<ÊáŒõ<ÚáÚöLäá¼éÅ
¬JÅ
egikmoqsü¦â=L©â¼éÀ
Æ
Æ
À
©âŒ»
³â®JŒ»
ܶ⌻
¯Jþü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.Áá:É
ê:Ê
ó:Ë
ÖÌ
Ì
Ê
É
Ë
–ö íå§ö ðå¸ö óåÉö ö囑­æ¬‘$²æŸý\¿æÚöLÓæ¼éÍ
¹JÍ
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°¡ üèï@õÌÄ­ð¦¹üÊðFC assert_eq!(vec, [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)]);Á<•ñ”Ã4ÕñŽ Ž¼éŒ»
È
Î
Î
 üñÈ
µ»
ÜñÇ»
ÜßñØ»
lìñ
Í
óéùéÿé…ꌻ
$ò£ $‡òACl‡öÍ
ºäÏ
ÓäÏ
ñäÏ
Ï
Í
Ï
óéùéÿé…ꌻ
„½
½
üçüüßûR©¼
ü²ü4…½
øÑ
á:Ò
ê:Ó
ó:Ô
ÖÕ
Õ
Ó
Ñ
Ô
Ò

ð ðü óü–¢
öüÿƒ
ùü¬ü¸ý½ü$½ýþúê$Äýþçë$Ñý‘† \Þý‘„
LòýéõÖ
¹JÖ
ìü|~ˆŠü©Š 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¬Š  éõÐ
×
×
 ÛŠ Ð
©âïÕ
2026-01-24 22:59:20 +00:00
³Š ®JïÕ
ü¶Š #ïÕ
¯J¡ý¬ÃŠ 
Ö
øúêçë¿ñ‰ðïÕ
$àŠ £ $æŠ []„š‹ Ö
ºäØ

ñäØ
Ø
Ö
Ø
úêçë¿ñ‰ðïÕ
¶ô ÉýüüŽ ‘üô R©¼
üÇŽ 4…½
øÚ
á:Û
ê:Ü
ó:Ý
ÖÞ
Û
Þ
Ú
Ü
Ý

ð  ˆ –¢
ÿƒ
Ž ¬üÉ ½ü ôÍ
…Î
‘† ‘„
éõß
¹Jß
 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Èš  éõïÕ
Ù
à
à
 óš Ù
υ
Ïš ®Ö
üÒš ïÕ
¯JÃýŒßš 
ß
øúêçë¿ñ‰ðïÕ
$øš £ $þš SU|²› ß
ºäá
Óäá
ñäá
á
ß
á
úêçë¿ñ‰ðïÕ
 ÉýÉý´šž Œž 
â
ü·ž H<ºž §»„;¼· ­(!Ž>
W Õݔާ»„;¼· ­(!Ž>
W ÊpÕÝ”ÞÊpä
ä
ã
Êp¸º Èž $ž ü–Ÿ H<™Ÿ §»„;¼· ­(!Ž>
W¥â
Õݔާ»„;¼· ­(!Ž>
Wëâ
ÕÝ”ÞÊpæ
æ
å
Êp¸º §Ÿ $¡Ÿ üõŸ ODøŸ è
ýýäIä
Ö&Jènøeè
¥â
ýýäIä
Ö&Jènøeè
ëâ
Êpé
é
  
ç
Êp¸º ‹  $…  üÛ  ODÞ  ë
ýýäIä
Ö&Jènøeë
¥â
ýýäIä
Ö&Jènøeë
ëâ
Êpì
ì
ç  
ê
Êp¸º ñ  $ë  üÁ¡ slÄ¡ ˜˜šœäK™kŒôƒï¥â
íᘘšœäK™kŒôƒïëâ
íáÊpî
Öï
ï
î
¦Ð Ø¡ ¸ÐLÛ¡ 
í
ÊpíḺ ï¡ $Ò¡ .0üË¢ sl΢ ˜˜šœäK™kŒôƒï¥â
íᘘšœäK™kŒôƒïëâ
íáÊpñ
Öò
ò
ñ
2026-01-24 22:59:20 +00:00
¦Ð ⢠¸ÐLå¢ 
ð
ÊpíḺ ù¢ $Ü¢ .0üÕ£ ODØ£ ô
ìì¸Pðä
1¥(y!¨ô
¥â
ìì¸Pðä
1¥(y!¨ô
ëâ
Êpõ
õ
ᣠ
ó
Êp¸º ë£ $å£ ü»¤ OD¾¤ ÷
ìì¸Pðä
1¥(y!¨÷
¥â
ìì¸Pðä
1¥(y!¨÷
ëâ
Êpø
ø
Ǥ 
ö
Êp¸º Ѥ $ˤ ü¡¥ UT¤¥ ú
ùùžQýä<z€`þk˜Ûú
¥â
ùùžQýä<z€`þk˜Ûú
ëâ
Êpû
û
¯¥ 
ù
Êp¸º ¹¥ $³¥ ü¦ UT¦ ý
ùùžQýä<z€`þk˜Ûý
¥â
ùùžQýä<z€`þk˜Ûý
ëâ
Êpþ
þ
›¦ 
ü
Êp¸º ¥¦ $Ÿ¦ üù¦ q,ü¦ †Rä¼8¸!ºË¢¥â
¥â
”Þ†Rä¼8¸!ºË¢Êpëâ
ëâ
”ÞÊp 
ÿ
ÊpÞ ‘§ $‚§ ˆ ManuallyDropÁd<íÑ ƒ ,Tì  DerefMutÁD[ù  ÷ jê  ü+EŒ7] LN46$&ÜsT~ Š  Š ޼ Ì𠌗þ ¿ß—þ÷
ÚýÑwÿÊ7 Œ   hjmo ˆ ˆ —þ ˆ ˆ ¿ßü×W¿ß—þÚýŽ   Ž ޼ äÌð ç—þ ¿ß—þù
 
¿ß—þ˜Üs4ôgilnüÕ7    —þ ¿ßÌð Ý—þ¼ú
!޼ ÚÚý  
79ü¡#Úý¿ß 
¿ß—þòs,³üõA   —þ ¿ßÌð ý—þ¤ü
!޼ úÚý ˜ íî˜ FH  ¿ß¬à Úý ¿ß  é
˜ ¿ß—þü•Dš   š —þ ¿ßÌð —þÐþ
!޼ šÚýœ úœ ?Aüî! Úý ¿ß  û
œ ¿ß—þ$€ ü³ @ž Ÿ ž Ÿ ˜—þ ˜¿ßÌð » ˜—þÜ€!޼ ¸ Úý     ?A”ˆ
$
 Úý 

  ¿ß—þ$•
¸Á è ì ð õ ü ƒ
Š
ßïúõT ð¡ £ »º|é¡ ¤ j\;æb¡ ¦ ¦$H»b¡ § ¦Áb¡ § ChainÁ,`†¢¡ © £lgÖN¡ ª BitAndÁ4‡Ãî¡ ¬ BitAndAssignÁd«¡ ­ BitOrÁ,ãï¡ ® BitOrAssignÁ\¤â¡ ¯ BitXorÁ4±ƒñ¡ ° BitXorAssignÁd¹™Ž¡ ± SubÁÇÈ¡ ² SubAssignÁLÌéë¡ ³ ÍãÁ]¡ µ û¡èÕ¡  Ý Õ¡ · 
$”¡ ¹ §¡ º ¸P$£ì¡ » ûf¡ ½ r^”·½¡ ¾ s_”·¾¡ ¾ s_¡8dΡ ¿ ض”è¡ À æü$svü.jm\_üS"9<*-ü{[þéìÎѸ»œŸŒqt„ÜehUXJü‡!=Ž/2 #ü®-ÐÒÌáÂü…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éæ< ó:à ÖÄ Ä  à ޼ ˜ž‹´›‡“¬³™“ºþÔ‰î£yU'ëÅ 57: ÕÝD ³”ÞüÐ$ÛÁ Á ¤ÿüùIÇ ó:È ÖÉ È É Ç ޼ þž‹ ˆ ‡“ ‡Ý, Þêþ,‹ ™“L• ÞžçºþÊ Ë ßàÊ Ë ^`cehj¼É š šºþºþÆ  Ò Æ
Ê ¿ßêþžçü­!'T°!œ ºþ œºþÆ  »!Æ
Ë ¿ßêþžç$À!»Þ4Æ!ü”I)Í ó:Î ÖÏ Í Î Ï ޼ ™Iž‹ œI‡“ ŸI™“L¢IºþÐ Ñ Ò Ó Ô Õ Ø Ú 8:=?BDüƒLüÄIIF Returns the number of elements the set can hold without reallocating.ÁJËtšJ¶É­JË<µJ”ÃÜÁJüáJ85 let set: HashSet<i32> = HashSet::with_capacity(100);ÁüžK# assert!(set.capacity() >= 100);Á<ÆK”ÃDŠL ºþÌ  “LÌ
Ð ¿ßêþžç$”Lü˜P!üÌL96 An iterator visiting all elements in arbitrary order.ÁüŠM)& The iterator element type is `&'a T`.Á¸MËtÀM¶ÉÓMË<ÛM”ÃÜçMü‡N! let mut set = HashSet::new();Á¤­N set.insert("a");Á¤ÆN set.insert("b");ÁßNËüçN(% // Will print in an arbitrary order.ÁÌ”O for x in set.iter() {ÁÔ²O println!("{}", x);Á,ÑO‹Ó<ÛO”Ã$ŸPž žºþè è äIë £ ¡ Ä"—ž¿ßÌ  ¤PÌ
Ñ ¿ßêþžç$¥PÔÃSüƒQ.+ Returns the number of e
üó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¥ ¥ºþƒðõ õ àRú þ¡ û ä¡ <}K%ŠÚÓÚ¥¿ßƒðžçÌ Ù Ù  ˆ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 Ü ó:Ý Ü Ý ޼ œnž‹ Ÿ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ÉŽüœqPM not allow the `HashSet` to be protected against attacks such as [`HashDoS`].Áüñ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.ÁÃ{ËüË{JG The hash set will be able to hold at least `capacity` elements withoutÁüš|EB reallocating. If `capacity` is 0, the hash set will not allocate.Áä|ËÄì|މ}Ëü‘}HÉŽüÞ}P•Êü³~>óüö~/ºüª.ˆËÝËüåL´‘ü¶€B×Ëý€Ëü…?ß’üÉ{§“üÉ‚N¬”œƒËt¤ƒ¶É·ƒË<¿ƒ”ÃÜ˃üëƒ&Õ–„Ëüž„*ÿ•üÍ„;8 let mut set = HashSet::with_capacity_and_hasher(10, s);Á set.insert(1);Á<¤…”ÃÄè…êþàÛ Û
ß ¿ßêþñ"DÒ4’†ü6á ó:â Öã ã á â ޼ ”‡ž‹ —‡‡“ š‡™“L»‡ºþä å æ ç 02468:쓈ü̇4„¡Lšˆ§ §ºþ §žçà  ¤ˆà
ä ¿ßêþžç$¥ˆüö“8üÛˆHžÈL¨‰íŒ¶‰Ëü¾‰J†ÉüŠ-Ý¿ŠËÄÇŠŽäŠËüìŠHÉŽü¹‹P•ÊüŽŒ>óüÑŒ/ºü….ˆË¸ËüÀL´‘ü‘ŽB×ËØŽËüàŽ?ß’ü¤{§“ü¤N¬”÷Ëtÿ¶É’‘Ë<š‘”Ãܦ‘üÆ‘&Õñ‘Ëüù‘*ÿ•ü¨’*³Í”×’åÍ<î’”Ãtƒ”êþžçºþà à
å ¿ßêþžçÒá7±ü• PüŽ•AÚÎôÔ•£Ï÷•Ëüÿ•JÕÏüΖE¨Ð˜—ËÄ —޽—ËüÅ—HÉŽü’˜P•Êüç˜>óüª™/ºüÞ™.ˆË‘šËü™šL´‘üêšB×˱›Ëü¹›?ß’üý›{§“üýœN¬”Ð˶ÉëË”ÃÜÿüŸž&ÕÊžËüÒž*
áå»b€ô$“æð€ô¿ßlšæ
ø ¿ßêþžç€ô$åå˜,ëåQSü©ì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);Á<ßê”ÃëêËüóê;Šåü³ë@Îå°ì¯° ¯ºþ °€ôø°ú°û°Ðü°ý°þ°ìHˈXêE> ¯¿ßè è;û û  ·ìè çß
´ì””$ì쥔lóì
2026-01-24 22:59:20 +00:00
ú ¿ßêþžç€ô$¸ì˜,¾ì=?üÛò/üÍîEB Inserts the given `value` into the set if it is not present, thenÁü—ï0- returns a reference to the value in the set.ÁÌïËtÔï¶ÉçïË<ïï”ÃÜûï›ðËü£ð>•´ìæðݺüˆñ)& assert_eq!(set.get_or_insert(2), &2);Áü¶ñ-* assert_eq!(set.get_or_insert(100), &100);Áüèñ1. assert_eq!(set.len(), 4); // 100 was insertedÁ<žò”Ãlâò± ±ºþ¿ß ±¿ßè  ðòè
ü ¿ßêþžç$õò˜,ûòüðüüÖõJG Inserts a value computed from `f` into the set if the given `value` isÁü¥öB? not present, then returns a reference to the value in the set.ÁìöËtôö¶É‡÷Ë<÷”ÃÜ›÷»÷ËüÃ÷:7 let mut set: HashSet<String> = ["cat", "dog", "horse"]Áü‚ø52 .iter().map(|&pet| pet.to_owned()).collect();Á¼øËìÄøݺüæø)& for &pet in &["cat", "dog", "fish"] {Áü”ù?< let value = set.get_or_insert_with(pet, str::to_owned);ÁüØù assert_eq!(value, pet);Á,üù‹Óü†ú:7 assert_eq!(set.len(), 4); // a new "fish" was insertedÁ<Åú”ÃÑúËüÙúIF The following example will panic because the new value doesn't match.Á§ûËœ¯ûËèüÇû,) let mut set = hashbrown::HashSet::new();Áüøû63 set.get_or_insert_with("rust", |_| String::new());Á<³ü”Ô÷ü³´ ³ºþ ´€ôíï ³¿ßè è;þ ÿ ÿ þ  ýè çß
Šýšð ý””$Çý¥”lÎý²íï ²€ô|ñý²íïá¦¿ß ÿý
ý ¿ßêþžç€ôíï$•ý˜,›ýþ ¦ý˜šœü…Œ7üàTQ Gets the given value's corresponding entry in the set for in-place manipulation.Á¹‚ËtÁ‚¶ÉÔ‚Ë<Ü‚”ÃÜè‚üˆƒ&# use hashbrown::hash_set::Entry::*;Á³ƒËü»ƒ%" let mut singles = HashSet::new();Áüåƒ# let mut dupes = HashSet::new();ÁËü•„3…²üÍ„52 if let Vacant(dupe_entry) = dupes.entry(ch) {Áü‡…63 // We haven't already seen a duplicate, soÁüÂ…41 // check if we've at least seen it once.Áüû…%" match singles.entry(ch) {Áü¥†)& Vacant(single_entry) => {ÁüÓ†C@ // We found a new character for the first time.Áü›‡*' single_entry.insert();ÁŒÊ‡üà‡+( Occupied(single_entry) => {ÁüˆHE // We've already seen this once, "move" it to dupes.Áü݈*' single_entry.remove();ÁüŒ‰(% dupe_entry.insert();ÁŒ¹‰߬lω
2026-01-24 22:59:20 +00:00
Lቱ×,Óù‰ËüŠ=: assert!(!singles.contains(&'t') && dupes.contains(&'t'));ÁüÊ=: assert!(singles.contains(&'u') && !dupes.contains(&'u'));Áü…‹>; assert!(!singles.contains(&'v') && !dupes.contains(&'v'));Á<È‹”Ã,ŒŒµ µºþ¿ßßäåîTæìçè‹Uéì“ï(¥Þ𻵿ßêþžçè  ’Œè
¿ßêþžç$—Œ˜,Œüµ’/ü¬ŽDA Returns `true` if `self` has no elements in common with `other`.ÁüõŽ=: This is equivalent to checking for an empty intersection.Á·Ët¿¶ÉÒË”ÃÜæËüŽ8ÁöüË let mut b = HashSet::new();ÁïËü÷(% assert_eq!(a.is_disjoint(&b), true);Á„¤‘
b.insert(4);Áü¹‘(µ„æ‘
b.insert(1);Áüû‘)& assert_eq!(a.is_disjoint(&b), false);Á<©’”Ã\¼’· ºþ ·ºþè  È’è
¿ßêþžç$É’î ,Ï’ü¬—-ü¤“52 Returns `true` if the set is a subset of another,ÁüÞ“=: i.e., `other` contains at least all the values in `self`.Á ”Ët¨”¶É»”Ë<Ô”ÃÜÏ”ï”Ëü÷”:7 let sup: HashSet<_> = [1, 2, 3].into_iter().collect();Áü¶•!ÁªÜ•Ëüä•*' assert_eq!(set.is_subset(&sup), true);Á”“–åÍüª–*â¹”Ù– set.insert(4);Áüð–+( assert_eq!(set.is_subset(&sup), false);Á< —”ÃL³—¸¹ ¸ºþ ¹ºþè  ½—è
¿ßêþžç$¾—î ,Ä—‘˜ ºäƒ Óäƒ ñäƒ ƒ  ƒ ¿ßêþžç ¿ß ºþü™/ü³˜74 Returns `true` if the set is a superset of another,Áüï˜=: i.e., `self` contains at least all the values in `other`.Á±™Ët¹™¶ÉÌ™Ë<Ô™”ÃÜà™€šËüˆš74 let sub: HashSet<_> = [1, 2].into_iter().collect();ÁüÄš!ÁªêšËüòš-* assert_eq!(set.is_superset(&sub), false);Á¤›Ë”¬› set.insert(0);Á”ÛáÓüÚ›-¶¿ŒœË””œåÍü«œ,) assert_eq!(set.is_superset(&sub), true);Á<Üœ”Ã\ º» ººþ »ºþè  ¬è
¿ßêþžçî üé¡*äô Adds a value to the set.Á•žËüžC@ If the set did not have this value present, `true` is returned.ÁåžËüíž@= If the set did have this value present, `false` is returned.Á²ŸËtºŸ¶ÉÍŸË<ÕŸ”ÃÜ០Ëü‰ !Áª¯ Ëü· $! assert_eq!(set.insert(2), true);Áüà %" assert_eq!(set.insert(2), false);Á슡 assert_eq!(set.len(), 1);Á<¬¡”Ã4𡼠¼ºþ¿ßè  ÷¡è
2026-01-24 22:59:20 +00:00
¿ßêþžç$ü¡˜,‚¢ü´«@ü΢SP Insert a value the set without checking if the value already exists in the set.Á¦£Ëü®£M—¾䀤í¾¡¤Ëü©¤B? This operation is useful during initial population of the set.Áüð¤B? For example, when constructing a set from another set, we knowÁÜ·¥ that values are unique.Á×¥Ëdߥ‚öð¥Ëüø¥@= This operation is safe if a value does not exist in the set.Á½¦ËüŦOL However, if a value exists in the set already, the behavior is unspecified:Áü™§SP this operation may panic, loop forever, or any following operation with the setÁüñ§7×í¨Ëüµ¨J¤Äô„©÷ħ©Ëü¯©JG However this operation is still unsafe because the resulting `HashSet`Áüþ©DA may be passed to unsafe code which does expect the set to behaveÁüǪ7ÍÆ¼Â«½ ½ºþ¿ß ½¿ßè  Ú«è
¿ßêþžç$ß«˜,å«üÔ°0ü¸¬]Z Adds a value to the set, replacing the existing value, if any, th
„º””$ºº¥”lÁº
ˆ ¿ßêþžç€ô$Œº˜,’º=?üÔÀeü“»UR Removes and returns the value in the set, if any, that is equal to the given one.Áí»Ëüõ»Cü½¼C—¿œ…½é½Ët¥½¶É¸½Ë<À½”ÃÜ̽ì½Ëüô½>•´ü·¾&# assert_eq!(set.take(&2), Some(2));Áüâ¾# assert_eq!(set.take(&2), None);Á<Š¿”Ö¿Ëüž¿;ŠåüÞ¿@Îå$ÛÀÁ Áºþ €ôäáè è;   ãÀè çß
àÀ””$›Á¥”l¢Á
Š ¿ßêþžç€ô$èÀ˜,îÀ=?üéÄ&üûÂGÈæ”ÇØçÞÃËüæÃCÀçü®Ä(è|ðÄà úþè  €Åè
2026-01-24 22:59:20 +00:00
Œ ¿ßêþžç$Åü¾ÅjŽ ó: Ö   Ž ޼ ÃÅž‹ ÆÅ‡“ ÉÅþãøÅä$ýÅ·‹\ŠÆ™“LžÆºþ   JLNPRTü¯Æ"²ÆÄŠĺþ źþ  µÆ
¿ßêþžç$¶Æî ,¼Æ,¸Ç ºä Óä ñä    ¿ßêþžçß½ï½üÜÇc ó: Ö   ޼ áÇž‹ äLJ“ çÇþãÈä$”È·‹\¡È™“LµÈºþ?ACEGIüÅÈX˜ ó: Öš ˜ š  ޼ ÊÈž‹ Íȇ“ ÐÈà`¿ßT€É™“L“ɺþ á` @BDFHJü¤É8§ÉÆÇÈ Æºþ ÇÁ`Á`œÃ`è Á]Ä`ô¥Á]Ê­\É:•Èš§  «É
¿ßêþžç$¬Éþ ²ÉüœÊU ó:ž ÖŸ Ÿ  ž ޼ ¡Êž‹ ¤Ê‡“ §Ê™“Lçʺþ  ü  /13579üøÊ*$ûʤÿºþœ œ
  ¿ßêþžç