Files
boc/rust-service/target/debug/deps/libthread_local-7f90de443f311aed.rmeta
T

261 lines
64 KiB
Plaintext
Raw Normal View History

rust
ßü#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Á®f©¾/ô)c§{õa“â‘-a3906971a93fd1b8ÁtestsÁ,à´$Õ´ÀcachedÁCachedThreadLocalÁ
¥
innerÁ
¥
>¥æ getÁget_orÁ
get_or_tryÁúclearÁ¥IntoIterÁê 'aÁ ¥  í  ê&¥&get_or_defaultÁ)¥)×,¥
CachedIterMutÁ.
.¥.Ü2
2¥22ó 2 size_hintÁ8
8¥CachedIntoIterÁ;¥;Ü >¥>>ó >² 
C¥ thread_idÁEEEEEThreadIdManagerÁJ free_fromÁJ free_listÁEMæ M¤O MfreeÁETHREAD_ID_MANAGERÁESæ S bucket_sizeÁSidÁ 
  
BUCKETSÁ ThreadLocalÁh¥hbucketsÁj h¼EntryÁm¥mpresentÁm»q¥qget_value_cellÁqÉt
t w¥wãz¥|¥|>¥ã¥ NULL_BUCKETÁæ  
with_capacityÁ    © ŽŽ get_innerÁinsertÁ
get_bucketÁùúÏ ¥í êœ
œ¥œœí œê¢
¢¥¢¢í ¢ê ¨¥¨·

«¥«× ®¥ °æ °ó ²
²¥°next_mutÁµ
µ¥° next_bucketÁ°² ¹¥°size_hint_frozenÁ»¥
½
½¥½½ó ½² Ã¥IterMutÁÅ
Å¥ÅÅ@Ê
Ê¥ÊÊó Πʲ Ñ¥Ó¥Õ
Õ¥Õ×Ù¥ÙÙó Ü Ù² ߥá¥allocate_bucketÁã¥ã deallocate_bucketÁæ¥EThreadÁèbucketÁèÖEEìƒEE ThreadGuardÁïÎ
Eñãò Etry_getÁô E ö Eget_slowÁø ETHREADÁú__RUST_STD_INTERNAL_INITÁú ü ý__RUST_STD_INTERNAL_VALÁü ÿŒE THREAD_GUARDÁâ ƒ Œƒ ŒRawIterÁˆyieldedÁˆÍˆ¼
ˆÖ×IterÁ
¥@
¥×í ˜¥˜˜@œ¥œ×




(
+
+
+
6
7
A
B
O
Q
U
V
s
t
y



Ž






ª
­
­
­
²
µ
¸
¹
¹
»
»
Á
Â
Ã
Î
Ð
Ñ
Ó
Ø
Ø
Ø
Ü
Þ
í
ò
ø
Ž
Ž
Ž



ž
ž
ž
³

½ Üwzždw½P¥ÇLÜÇL 


½ Üwzždw½P¥¿cÜ«½ÜùM..é
1ܬ)!I]2×
ÍÃMðùM;;Ô =Ü<¦×|ÚÓèÃM´Ûèè¿éÍêÖ>gš¶·‘ØòŠ òŒ"ïïöðÎ
E&îÒrͪ«KŒ"mm×oêp»ù]Yú¨þ™ hh¥j¾l¼UòI‹$AåÞ³·!Œ"·!ÇL·!ÇL 
hh¥j¾l¼UòI‹$AåÞÍÇL 
™"¿c·!«½·!¿cˆˆñŠÍ¼
ŒÖÓñ÷ ƒ¿c²@”Ü‚_Fdê¨
ÍùMÓ#òP²@”Ü‚_Fdê¨8ÍùMÅÅ©ÈÉ@.[zÊEo
ÍÃMÅÅ©ÈÉ@.[zÊEo8ÍòP±%¿cê$¿c˜˜í š@-/Ë]*3ùM&ÃM&òP&

|h


¢
)
«hˆÕÅœ˜,
®h2.>ÊÅÙ˜8.CÅߘëèìèîèñïwmhzÓÅᘳÌÇL
¿c«½'ùM ÃMÛØŠ Œ" òP Û¼š š
BinaryHeapÁ dataÁ¾zìÐÉÖÞßÞßßßÏá߈ çÀLëòÀ"çEçEèEGlobalÁ ¿±‡§í#ü¬G J Ê÷) òùNü‹nJJ KØ ELè E,Å0‡'`$Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙˆ)ˆù¤e

ée
¾á.á.aã.»Ì-IÜžB2®Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙòù£eüÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ°, °,µ-±QùËb•aú®®£°Ü¨it§ÅLS¶°,áÝbaXüµ-µ-$Ô& Û¼ò|Ê&
 LÊ&
/Ý,?* Ø&ù»+eû°,¤«&Ý,|.ù¾e
é¾e
а,/5ùôðe  ýº-Í./µ- öeù»ßeùöe  ÿÔ1×1æ1#µ- eM eù©ÿeüµ-ýÔ1×1æ1åÿÔ1×1æ1ŸSù!…¤e

é!…e
¾Å ù!£eƒÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÅ  Å ƒ4±ßù Ëb•a®®£°Ü¨it§ÅLS¶Å á ÝbaXƒƒ4ƒ4d´'
L´'
/÷) ¾'÷)Aü¢'  ï Á'ù!»+eÅ \Œ'á.á.aã.»Ì-IÜžB2®÷)º[ù!¾e
é!¾e
ÐÅ /5ù!ôðe  Ô1ˆ45æ1/ƒ4eù!»ßeù!’öe  Ô1â8æ1#ƒ4 !”eM !™eù!©ÿeƒƒ4Ô1â8æ1åÔ1â8æ1ŸSŒß˜Õ îö:2 /˜Õö:-ö:^ö:Ôß÷) øüÈ2g÷)ö:«ö:µ5¯˜Õö:»˜Õö:< 
g÷)k$÷)/6:g÷)BUCKETSÁ|Ú+
lÚ+
²ù *üË+

tË+
Ò]ù Q+ é+ü¢+I¤]¤]V¦]Á‚]üß3ø¤”& ù œµ+È>»[äç,Œè,›>÷)?œ™-
„™-
ŒÄ ª-÷)>üË,l h ¶-½-üœ,¡·!t²,>÷)?Ô¤]¤]V¦]Á‚]üß3ø¤”&÷)Ùa><û,
g÷)%÷)07;g÷)BUCKETSÁ<Ý0
g÷)ˆ%÷)07;g÷)BUCKETSÁEghmÅãæ˜ˆÀÔ ;Xé
.Y½ŒÉ
Z
UnsafeCellÁTíî0[פ,\
FusedIteratorÁlòP] MaybeUninitÁ\³ÑÛ^
UnwindSafeÁTЫ½_µ å`
AtomicBoolÁT¬]b AtomicPtrÁLޝ]c AtomicUsizeÁ\™„Äd®¼Àe¿èfüͦÜüÍ# Per-object thread-local storageÁñúüõPM This library provides the `ThreadLocal` type which allows a separate copy ofÁüÆDA an object to be used for each thread. This allows for per-objectÁü‹MJ thread-local storage, unlike the standard library's `thread_local!` macroÁüÙ2/ which only allows static thread-local storage.ÁŒúüNK Per-thread objects are not destroyed when a thread exits. Instead, objectsÁüßKH are only destroyed when the `ThreadLocal` containing them is destroyed.Á«úü¯HE You can also iterate over the thread-local values of all thread in aÁüøOL `ThreadLocal` object using the `iter_mut` and `into_iter` methods. This canÁüÈNK only be done if you have mutable access to the `ThreadLocal` object, whichÁü—C@ guarantees that you are the only thread currently accessing it.ÁÛúüßOL Note that since thread IDs are recycled when a thread exits, it is possibleÁü¯ PM for one thread to retrieve the object of another thread. Since this can onlyÁü€
NK occur after a thread has exited this does not lead to any race conditions.ÁÏ
ú
# ExamplesÁâ
úüæ
! Basic usage of `ThreadLocal`:Áˆ ú  ```rustÁü˜ " use thread_local::ThreadLocal;Áü» 30 let tls: ThreadLocal<u32> = ThreadLocal::new();Áüï  assert_eq!(tls.get(), None);Áü %" assert_eq!(tls.get_or(|| 5), &5);Áü¶ $! assert_eq!(tls.get(), Some(&5));Á  ```Áã úüç 74 Combining thread-local values into a single result:ÁŸ
ú
ØNü¯
"íNÄÒ
 use std::cell::Cell;Á¤ë
 use std::thread;Áúü„! let tls = ThreadLocal::new();Á¦úüª,) // Create a bunch of threads to do stuffÁÜ× thread::scope(|scope| {Á¼ó for _ in 0..5 {Áä‹ scope.spawn(|| {Áü¨=: // Increment a counter to count some event...Áüæ74 let cell = tls.get_or(|| Cell::new(0));Áüž)& cell.set(cell.get() + 1);Á });Á });ÁêúüîKH // Once all threads are done, collect the counter values and return theÁüº.+ // sum of all thread-local counter values.Áüé<9 let total = tls.into_iter().fold(0, |x, y| x + y.get());Á̦ assert_eq!(total, 5);ÁÜPEghmÅãæ˜ˆÀ* Ô + ;Xé
* .Y½) 
Z£B î0[× ¤,\ÓB òP]óB ÑÛ^’Cø
«½_µ ÷
`ÃCì
¬]bàCâ
¯]cüCÖ
„Äd®Õ
¼Àe¿Ô
èf/ 2 5 
.;í D#˜©<-Å¥\6h×M¤,CTb«½ ,Z\LN>@DH4´V'üë%üo# Wrapper around [`ThreadLocal`].Áúü—KH This used to add a fast path for a single thread, however that has beenÁüãDA obsoleted by performance improvements to [`ThreadLocal`] itself.Á1.1.0ÁUse `ThreadLocal` insteadÁÜÍü¨BŒöƒ]Œ]¥  Íì ˆÌì$‹Üwzždw½P ,.¬—,—ƒ]Œ]

·!ü±.¥Ú^ ê^$¹Ü´üæ$Ü

ü·"¥Ú^ ¼ê^$¿ÜüŸ$üà,) Creates a new empty `CachedThreadLocal`.Á¦Ü
üîüž=: Returns the element for the current thread, if it exists.ÁõŸ ŸÜÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Ÿ ù
ü¡Lü´KH Returns the element for the current thread, or creates it if it doesn'tÁT„ exist.Á4¨   Ü   ²Íìôd ¯"ôdæ1ôdæ1˜" ë
ôdcreateÁ4¹IKüÙ
iü¡ Kêbüñ FC exist. If `create` fails, that error is returned and no element isÁ
 added.ÁTà
¡ ¡ÜôdÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
 ¡ ñ
¦e ë
Íì‡h î
¶eÄ© ôdæ1˜"Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
‡hdµ 
ôd‡h
îd4ø
œžü³2üú DA Returns a mutable iterator over the local values of all threads.Áà úüË IF Since this call borrows the `ThreadLocal` mutably, this operation canÁü™
FC be done safely---the mutable borrow statically guarantees no otherÁüä
<9 threads are currently accessing their associated values.ÁDº¢ ¢Ü..é
1ܬ)!I]2×¢ Ã
¼ªü¿JG Removes all thread-specific values from the `ThreadLocal`, effectivelyÁüŽ'$ resetting it to its original state.ÁºúüÂIÜiüF¯jüÛ<ÿj,±£ £Üæ1 ·
üé3¥Ú^ îê^$ñÜÈLÉLÊL#%´üÞ'Ü´
üßD
!¥"!"ÍìÍ èÌìÍÍ
ò#$%ÈLÉLÊL%ä@B!Lª  
Í  ðüð*ð 
%
Íü¾,¥''Ú^ Ãê^$ƳÜ(!üÛ"üñKH Returns the element for the current thread, or creates a default one ifÁ¬Á it doesn't exist.Át⤠¤Ü ¤& ñ&
(ü©>¥**Ú^ ®ê^$±¿cT¸Ü+Àc+&(üî4ñ¥¦§ ¥Ü ¦ c cˆ¢cµ
 `£cbufÁ `àB¤GS
§Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
æ1ŸÈŸÈ ÈErrorÁ O˜éBL) õ)
+± üüò>¥--Ú^ ÷ê^$ú«½TÜ üµ*üµ@= Mutable iterator over the contents of a `CachedThreadLocal`.Áƒ]Use `IterMut` insteadÁ¼›üö>ƒ]Äx
/¥00/­q Ò½q$ÕÍqÜÍqüÀ™$ð¬)!I]2×1Î9;/¬æƒ]Äx..ê$ü€8
3¥434­q ½q$ŒÍqð567úMûMÿM67353L¿22œrüé'¨ ¨ðÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙœr2 ñ2
6
ÍüÆ-© ©ð÷)Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ÷)2 Ó2
7
ÍüžA
9¥:9:­q §½q$ªÍq±ð£9üÝ"üä85 An iterator that moves out of a `CachedThreadLocal`.Áƒ]Use `IntoIter` insteadÁÄÂü?ƒ]ñ~¥<<Ú^ ÷ê^$ú´<¦×|ÚÓè=#%”† ,† ƒ]ñ~w;; ,¥??Ú^ ¢ ê^$¥ ´@ABúMûMÿMAB&(>>üò ª ª´Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ> ú >
A$ÿ üÇ!-LÊ!« «´Ü}> Ô!>
B$Õ!üŸ"5¥DDÚ^ ¤"ê^$§"´JRèïôöøúa$Üá.EFÏÞßEGÏßßEG(Tš EH¤µ>EI|ÑbŒæUäý3„Ÿ&´‹|E÷*,Å0‡'`KL„¨EJJ÷)ü¾-EJJ±+¤ð÷*NOQ´‹E÷*MM
Näÿ,‚E¬ ¬÷*÷)M ˆM
O$O<closure_kind>ÁP<closure_signature>ÁP<upvars>ÁPPOP ˆ)Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÄ)æ1ì¡

E­ ­÷*÷)æ1M ©
M
Q
Î
´
ü² 0Œ¹ Eµ>µ>¤·>Ü£>¸>poisonÁ£>¹>¥(£>Ë»™z™g—÷*C(ÿÿÿÿÿ(\ñòTUVüƒ$÷)òSS
TÎ
üÆ)® ®ò÷)S àS
UüÑ ß¯ ¯ò÷)S âS
Võ õ !!!!¬â/!DýB!Ä‹b!¬©€!´Äž!Dà²!ŒîÏ!Ï!ë!ë! " """Œµ1"¤È÷)üáüü! Thread-local variable wrapperÁžúü¢>; See the [module-level documentation](index.html) for more.Á¥iiÚ^ øê^$û·!UòI$AåÞjl')ü'<hh>kÁ÷)œ­4­hhÉ@|Å¥nnÚ^ Òù ù]Yú¨þ™opy!œÛmm¤]¤]V¦]Á‚]üß3ø¤”&üô!mmî0î0£Bð0»Ì-·}—KEüC£ÑÛÑÛóBÓÛuninitÁÝÔÛ»ÝÍõƒ«%9„š¥rrÚ^ Ÿù st 
ü±?° °ù Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ °¶‘q Ãq
süÃ,± ±ù Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ 
q
uu Øq
t
Ôt̆vä†vvvtv ¶‘ æ1ÌÙ ¥xxÚ^ Þ ù y"y”ù ² ²ù æ1w !w
y$†!ü®%,¥{{Ú^ º%ê^$½%·!üß%(¥}}Ú^ ä%ê^$ç%·!~´~ôŽ&<&·!||
~üÓ&%¥Ú^ Ø&ê^$Û&·!"”ÿ&$'³ ³·!æ1 ‡'
$Œ'äÊ*¥ƒƒÚ^ Ï*ê^$Ò*·!„Ž24ü¢+&\¨+>üœ,$üñ+&# Creates a new empty `ThreadLocal`.Á©,·!
 ÷)ü¡/7üÃ-[X Creates a new `ThreadLocal` with an initial capacity. If less than the capacity threadsÁü£.[X access the thread local it will never reallocate. The capacity may be rounded up to theÁ̃/ nearest power of two.Ál¨/÷)·!
capacityÁD¶/x ÷)ü¥3üã2=€a¬3´ ´·!Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ´ °3
$±3$í3̆Šä†ŠŠŠŠòÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ·!üð4Lü‘4KêbTá4¾c4÷4µ µ·!ôd µŒŒ 5¦e þ4¶el®5Èe º5
ôd$5îd4ˆ5,.è5̆ä†ôdæ1Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
æ1ôdü°8iü†7KêbüÖ7F¤eT¡8óeT·8 ·!ôdÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
 ‡h È8¦e Â8Áh Å8¶eÄ€9ØhdŒ9
Žôd‡h$É8îd4Ï868<>üØ:1LÛ:· ··!òÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ · å:
$æ:Š4ì:ü·B/4ºB¸ ¸·!ò ¸ ÁB
$ÂBŠ4ÈB¥($ØBüÃ[<TÆ[¹ ¹·!ò ¹›> Ñ[
$Ò[Š4Ø[üä^<ü­]KH Returns an iterator over the local values of all threads in unspecifiedÁTý] order.ÁŒ^úü”^KH This call can be done safely, as `T` is required to implement [`Sync`].Á$ë^º º·!²@”Ü‚_Fd꨺ ð^ $›_
$ñ^üÔb,üŒ`FC Returns a mutable iterator over the local values of all threads inÁ´×` unspecified order.Áò`úüú`IÜiüÈaF¯jü“b<ÿjDÛb» »·!ÅÅ©ÈÉ@.[zÊEo» äb
$éb¼ÈfüëcJËlüºd'ŸmædúüîdIÜiü¼eF¯jü‡f<ÿj,Ïf¼ ¼·!æ1 Õf
$Úfüg-¥˜˜Ú^ ”gê^$—g·!™šÈLÉLÊL')LÃg$ÈglÖgDÛg&üøg!Lûg·!&
$…hüƒi<
¥žž­q Œi½q$i Í$i“"Ÿ ¡ÈLÉLÊL¡ˆi<>LÆi$Ëiœœ 
ÍlÝiDâiœœÓ#üÿi$L‚j“"“"ÉLœœ
¡
Í$ŒjüÃj9
£¥¤£¤­q Ìj½q$ÏjØ"¥¦§ÈLÉLÊL§Èj-/Lƒk$ˆk¢¢œrlžkD£k¢¢ê$üÃk$LÆkØ"ê$¢¢
§
Í$Ðkü‹l&¥©©Ú^ lê^$“l¯s<šl·!ªü¢m"ü¸lKßr¬ˆm³st©m½ ½·! ½¨ ¸m¨