Files
boc/aamos-ledger-rust/target/debug/deps/libonce_cell-a47cd60ec4e2e104.rmeta
T

313 lines
135 KiB
Plaintext
Raw Normal View History

rust
v#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ÁimpÁ­e»critical-sectionÁäÝdŃf» parking_lotÁ¼ÎetestsÁ,ÕL$ÊLatomicÁ4¢
»portable-atomicÁÜí À¤Å 
  
¥¥¥¥¥æ 
with_valueÁis_initializedÁ
initializeÁ   waitÁ
get_uncheckedÁget_mutÁ
into_innerÁ
INCOMPLETEÁRUNNINGÁCOMPLETEÁINCOMPLETE_PTRÁ COMPLETE_PTRÁ
STATE_MASKÁWaiterÁ.Š.signaledÁ.ó GuardÁ2'aÁ2queueÁ2 new_queueÁ6ã7 initialize_or_waitÁ9 °
; ; strictÁ>addrÁ?¥> with_addrÁA¥>map_addrÁC¥Cimpl FnOnce(usize) -> usizeÁunsyncÁFFFFFFFFFF F
F FOnceCellÁS¥SinnerÁFV¥FX¥FZ¥Z>F]¥]×F`¥`ƒ`Fd¥dFg¥Fi¥i÷Fl¥læ lç lgetÁlÏ
lsetÁl
try_insertÁl get_or_initÁttVoidÁt lget_or_try_initÁxxltakeÁlÝ
FLazyÁ}¥}}cellÁ}initÁF ¥F
¥×F ¥æ 
into_valueÁ Ž F ¥forceÁ  force_mutÁ ÒÏ
F
¥å´Fž¥žžF¢¥¢>祥¥¥¥¥¥¥¥¥¯
¯¥¯ˆ¥³¥³>¥¥×¥¹¥¹ƒ¹¥½¥½÷¥À¥À¥Ã¥¥Å¥Åæ Åç ÅÒŰ
ÅÏ
Å»
ÅãÅíÎ ÅþÐÐРŦÔÔÅÊÅÝ
¥ÜÙ¥ÙÙõÙ¥Þ¥ÞÞ×¥â¥â¥ å¥å¥
è¥èèæ èØì í ¥ ï¥ïïˆò ïšô ïÒïÏ
¥ ø¥øøåø´¥
ý¥ýý¥¥>¥_dummyÁraceÁæ Ò»
 as_const_ptrÁ_ALIGNMENT_COMPATIBLEÁãþ ¦žž(impl FnOnce() -> Result<NonZeroUsize, E>Á ¢æ ¢Ò¢ã¢þ¦¦ ¢¦©©© ¢¢to_usizeÁOnceRefÁ¯ ¯¥¯¬¯ghostÁ´ ´¥· ·¥·×» »¥»>¿ ¿¥¿æ ¿Ò¿ã¿þÅÅÅ ¿¦ÉÉ¿ÌÌ!impl FnOnce() -> Result<&'a T, E>Á¿ Ï ¿« once_boxÁÓÓÓÓÓÓÓÓOnceBoxÁÛ¥Û¬Û×Óߥß×Óâ¥â>Óå¥åãÓè¥èæ èç èÒèãèþîîî è¦òòèõõ"impl FnOnce() -> Result<Box<T>, E>ÁÓø¥Óú¥úƒÓ«þ¥þ þ»¥×OnceNonZeroUsizeÁ¬>×OnceBoolÁ¬> ×

$
%
&
6
7
9
9
;
_
_
_
b
c
c
f
f
p
q
r
s
t
x
{
ˆ
ˆ
ˆ



˜

¡
¸
¸
¸
»
¼
¼
Â
Â
É
Ê
Ë
Ì
Í
Î
Ð
Ô
×
á
á
á
ò
ô
ö
÷
ü







ž
¡
¤
¥
¦
©
º
º
º
Ã
Ä
Å
É
Ì
Ï
á
á
á
ç
ì
í
î
ò
õ
ü



Š
Š
Š



¿cþþ »Lƒµ)ÍŒBø¥ ½&Ìì½&¬½½&«½½&Œ"22ÿ 4 5  0|ö¾€˜Ö8¬½SSU¬Fphñ"<×q4õ&«½î'³î'¿cî'Øî'µßî'î'î'éî'õ&¬½}}ÜõFFŒä©M¶ó0öõ&¿cñ(é!ñ(ö!ñ(³}}ÜõFFŒä©M¶ó0öõ&õ&³¯¯°²ˆ¥ ö›
M3®õ&¿cž*Øž*éž*õ&µßž*ž*ž*¿cÙÙÜÜõ¥Ý¥†ü@ä+V—õ&ª) “+¬½“+é!“+ö!“+³ÙÙÜÜõ¥Ý¥†ü@ä+V—õ&Ž*³ø ¬ÄÞXè6¿cÊ,³±!Œ¬¹žþ$«81i¿c‰- ¯¯°²¬³×ÿŠZa.pI ¥¿cÈ-³È-¿cÛۚݬÓÞ×Ó`x41"Mëáõ&³©.Œ"©. ©.Ø©.þ]S…¯ÞÙ·¯ßÛþâÙ´¯øÛþþVS‚ÙþXS6ÛZ¯Ù»¯âÛ`¯úÛd¯g¯i¯ÙžÙ¿c ’ <Ì쬽«½Œ" ³ Ø5µß é é! ö!
ô°



Ò]..Õ /Š0é 1ó {ÏYhŸ‰Yt¿
+ Œ2x¬×

 Û¼õ&%
,|×

õ0Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙõ& ë
üž
P þõ& í
ô
üë ‰½&\ˆ
¤]¤]V¦]Á‚]üß3ø¤”&Ö2¤î0î0
UnsafeCellÁð0»Ì-·}—KEüC£¥3h¥3h¢+Ö2äÎ 
&,
3 †2 ,Ö2 Yäó   - Û¼õ& U
\ Ÿ3gx Ž ü¼ U þõ&  üú
 3½& õ&,™ Þ4h“5¥3õ&c»2ƒ[,Ö20x0Á²90x1Á²90x2ÁÌë"Të"(²9Ö2üÇ">+Ö2\Ý"$9(²9¼¨#D¨#*²9Ö2ü†#:,Ö2\š#$9*²9²90x3Á¬ú{$Š| Û¼õ&%
,|ú{Ÿ37H Ž|üè{) Sõ& ||ü¸{cnî'\Î{“5¥¥3¤2ä¢}\²},·} Û¼õ& ¼}C
J|¢}Ÿ3Uf ½}ü}0 Sõ& ¿}Ê}üÑ|yoî'\ö|õ&,é|“5Ì¥3Ëõ&Ê»!O|ŠÆ '-
4lŠÆ
nõ&Q¬¡ÆT«Æ$°Æ / Û¼ª) ´ÆY
`L¡Æ
‚/Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙª)È µÆüýÅ; }õ&ª) ·Æ ÂÆüÇÅ{ ÁÆŒ5ñ(TäŪ)$ØÅî'Êá.á.aã.»Ì-IÜžB2®Á@ªÁ@©ª)¨`´T£ù
D£ù
õ&,¤šù ¯õ& ­ù¸ùÇüêøNž*\€ù½& ´¶ú,Æú 
$|¶ú
õ&4F Ëúü­ú ¯õ& Ìú×úüîùiÈž*\“úõ&,†ú½&µõ&³»L|óÐ '-
4lóÐ
Çõ&R”ŠÑ<”Ñ ™Ñ / Û¼ª) šÑY
`LŠÑ»@k} ›ÑüæÐ8 Ùõ&ª) Ñ ¨Ñü³Ðu §Ñë5“+TÍЪ) ÄО*ÇB3Á@2ª)1g±3œÏ
„Ï
ŒÄ à²9>üÁ#  ãêüœNÊ,¤]¤]V¦]Á‚]üß3ø¤”&²9·Küõ4üõ/Ìõ
¼õ
ÊçJ*œ‘
Œ‘
ʲ9*eq²9 
 £» ¨²9Ý$ ü»pQøIí=

àWF 
3N¬MØp²9o²9n²9Hx޼ì2
“2
'üÞ2'  „3‹3£ü¹2R‰-$Ï2Ê,sü¬E|»E
l»E
²ˆ.*7
>t¬E
Ò]ˆ.N_ ÊE\ÔE î0î04ð0»Ì-·}—KEüC£ ˆ.üžEC ¯ˆ. àEçEÂüùDn¯¯°²¬³×ÿŠZa.pIˆ.$E¤]¤]V¦]Á‚]üß3ø¤”& ˆ.zØRy PhantomDataÁFu\»ŸäPPËü¶c|Åc
lÅc
²õ&*7
>t¶c
Ò]õ&N_ Ôc\Þc Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙžBoxÁ¡ˆˆ¢ˆl }.xÏõ&çEçEèEGlobalÁ ¿±‡§í#ü¨cC Ûõ& êcõcêüÿbv©.$•c¤]¤]V¦]Á‚]üß3ø¤”& õ&½ëV¼øQFu\»Ÿ´Tˆ´¨î ¯õ&°)ž*4½&;BÀ¤,ËdüÙñt # OverviewÁúüJG `once_cell` provides two new cell-like types, [`unsync::OnceCell`] andÁü^PM [`sync::OnceCell`]. A `OnceCell` might store arbitrary non-`Copy` types, canÁü¯HE be assigned to at most once and provides direct access to the storedÁüøKH contents. The core API looks *roughly* like this (and there's much moreÁ´Ä inside, read on!):ÁÛú”ß ```rust,ignoreÁÌò impl<T> OnceCell<T> {ÁüŒ-* const fn new() -> OnceCell<T> { ... }Áüº85 fn set(&self, value: T) -> Result<(), T> { ... }Áüó+( fn get(&self) -> Option<&T> { ... }Á ```Á­úü±MJ Note that, like with [`RefCell`] and [`Mutex`], the `set` method requiresÁüÿOL only a shared reference. Because of the single assignment restriction `get`ÁüÏ=: can return a `&T` instead of `Ref<T>` or `MutexGuard<T>`.Áúü‘NK The `sync` flavor is thread-safe (that is, implements the [`Sync`] trait),Áüà" while the `unsync` one is not.Áƒúü‡52 [`unsync::OnceCell`]: unsync/struct.OnceCell.htmlÁü½1. [`sync::OnceCell`]: sync/struct.OnceCell.htmlÁüïGD [`RefCell`]: https://doc.rust-lang.org/std/cell/struct.RefCell.htmlÁü·C@ [`Mutex`]: https://doc.rust-lang.org/std/sync/struct.Mutex.htmlÁüûB? [`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.htmlÁ¾ ú
# RecipesÁÐ úüÔ 96 `OnceCell` might be useful for a variety of patterns.ÁŽ
úü’
)& ## Safe Initialization of Global DataÁ¼
ú
 ```rustÁüÌ
B? # #[cfg(any(feature = "std", feature = "critical-section"))] {Á¼  use std::{env, io};Á§ úü« " use once_cell::sync::OnceCell;ÁÎ ú¤Ò  #[derive(Debug)]Á¼ç  pub struct Logger {Átÿ // ...Á Ë\ü” 85 static INSTANCE: OnceCell<Logger> = OnceCell::new();ÁÍ úŒÑ  impl Logger {Áüã ,) pub fn global() -> &'static Logger {Áü
>; INSTANCE.get().expect("logger is not initialized")Á
Ù
úüÝ
HE fn from_cli(args: env::Args) -> Result<Logger, std::io::Error> {ÁŒ¦ // ...Áĸ # Ok(Logger {})Á²hË\áú fn main() {Áüõ<9 let logger = Logger::from_cli(env::args()).unwrap();Áü²&# INSTANCE.set(logger).unwrap();ÁüÙ-* // use `Logger::global()` from now onÁ,‡Ë\< # }Á<•Ù\úü¡# ## Lazy Initialized Global DataÁÅúüÉFC This is essentially the `lazy_static!` macro, but without a macro.Áú\”¨dü B½düã1. use std::{sync::Mutex, collections::HashMap};Áúü™"µe¼úüÀ>; fn global_data() -> &'static Mutex<HashMap<i32, String>> {ÁüÿQN static INSTANCE: OnceCell<Mutex<HashMap<i32, String>>> = OnceCell::new();ÁüÑ! INSTANCE.get_or_init(|| {Áüó'$ let mut m = HashMap::new();Áü›.+ m.insert(13, "Spica".to_string());ÁüÊ/, m.insert(74, "Hoyten".to_string());ÁÌú Mutex::new(m)ÁT” })ÁË\Òk<­Ù\µúü¹OL There are also the [`sync::Lazy`] and [`unsync::Lazy`] convenience types toÁä‰ streamline this pattern:Á¦ú¨dü¶B½düù1©mô« use once_cell::sync::Lazy;ÁÊúüÎJG static GLOBAL_DATA: Lazy<Mutex<HashMap<i32, String>>> = Lazy::new(|| {Áü™# let mut m = HashMap::new();Áü½*' m.insert(13, "Spica".to_string());Áüè+( m.insert(74, "Hoyten".to_string());Á¬” Mutex::new(m)Á });Á²újüÆ63 println!("{:?}", GLOBAL_DATA.lock().unwrap());ÁË\Òk<Ù\úü—KH Note that the variable that holds `Lazy` is declared as `static`, *not*ÁüãPM `const`. This is important: using `const` instead compiles, but works wrong.Á´úü¸)& [`sync::Lazy`]: sync/struct.Lazy.htmlÁüâ-* [`unsync::Lazy`]: unsync/struct.Lazy.htmlÁúü”&# ## General purpose lazy evaluationÁ»úü¿=: Unlike `lazy_static!`, `Lazy` works with local variables.Áýú\¨dü  use once_cell::unsync::Lazy;Á®újü  let ctx = vec![1, 2, 3];Áüã" let thunk = Lazy::new(|| {Áü†# ctx.iter().sum::<i32>()Á });Áô¶ assert_eq!(*thunk, 6);ÁË\Ù\ãúüçLI If you need a lazy field in a struct, you probably should use `OnceCell`Áü´A> directly, because that will allow you to access `self` duringÁœö initialization.ÁŠ ú¨düš ! use std::{fs, path::PathBuf};Á¼ úüÀ $! use once_cell::unsync::OnceCell;Áå ú„é
struct Ctx {Áìú  config_path: PathBuf,Áü˜!! config: OnceCell<String>,Á,º!Ë\À!útÄ! impl Ctx {ÁüÓ!B? pub fn get_config(&self) -> Result<&str, std::io::Error> {Áü–"63 let cfg = self.config.get_or_try_init(|| {ÁüÍ"52 fs::read_to_string(&self.config_path)Á„ƒ#
})?;Áä”# Ok(cfg.as_str())ÁL±#²h,»#Ë\<Á#Ù\É#úäÍ# ## Lazily Compiled RegexÁê#úüî#HE This is a `regex!` macro which takes a string literal and returns anÁü·$63 *expression* that evaluates to a `&'static Regex`:Áî$ú<ò$Ù\
deadlock.ÁRúü‘R&# **Does this crate support async?**Á¸Rú¼¼R No, but you can useÁüÔRJG [`async_once_cell`](https://crates.io/crates/async_once_cell) instead.ÁŸSúü£S)& **Does this crate support `no_std`?**ÁÍSúüÑSJG Yes, but with caveats. `OnceCell` is a synchronization primitive whichÁüœTMJ _semantically_ relies on blocking. `OnceCell` guarantees that at most oneÁüêTMJ `f` will be called to compute the value. If two threads of execution callÁü¸U85 `get_or_init` concurrently, one of them has to wait.ÁñUúüõUMJ Waiting fundamentally requires OS support. Execution environment needs toÁüÃVPM understand who waits on whom to prevent deadlocks due to priority inversion.Áü”WMJ You _could_ make code to compile by blindly using pure spinlocks, but theÁüâW+( runtime behavior would be subtly wrong.ÁŽXúü’XHE Given these constraints, `once_cell` provides the following options:ÁÛXúüßXPM - The `race` module provides similar, but distinct synchronization primitiveÁü°YMJ which is compatible with `no_std`. With `race`, the `f` function can beÁüþYNK called multiple times by different threads, but only one thread will winÁÜÍZ to install the value.ÁüéZNK - `critical-section` feature (with a `-`, not `_`) uses `critical_section`Áä¸[ to implement blocking.ÁÕ[úüÙ[! **Can I bring my own mutex?**Áû[úüÿ[OL There is [generic_once_cell](https://crates.io/crates/generic_once_cell) toÁ¤Ï\ allow just that.Áä\úüè\JG **Should I use `std::cell::OnceCell`, `once_cell`, or `lazy_static`?**Á³]úü·]PM If you can use `std` version (your MSRV is at least 1.70, and you don't needÁüˆ^PM extra features `once_cell` provides), use `std`. Otherwise, use `once_cell`.ÁäÙ^ Don't use `lazy_static`.Áö^ú¤ú^ # Related cratesÁ_úü“_LI * Most of this crate's functionality is available in `std` starting withÁüà_EB Rust 1.70. See `std::cell::OnceCell` and `std::sync::OnceLock`.Áü¦`KH * [double-checked-cell](https://github.com/niklasf/double-checked-cell)Áüò`52 * [lazy-init](https://crates.io/crates/lazy-init)Áü¨a30 * [lazycell](https://crates.io/crates/lazycell)ÁüÜa;8 * [mitochondria](https://crates.io/crates/mitochondria)Áü˜b96 * [lazy_static](https://crates.io/crates/lazy_static)ÁüÒbA> * [async_once_cell](https://crates.io/crates/async_once_cell)Áü”cLI * [generic_once_cell](https://crates.io/crates/generic_once_cell) (bringÁ¬ác your own mutex)ÁÀ’+¤¢++++”¾d¢+<Ûf»À|“f»ú¼¨f̧fü’f/ü‰f:ßf()*+,-.29;>þa$Àá.4TÆî0
RefUnwindSafeÁl߬½
UnwindSafeÁT
AtomicBoolÁTެ]
AtomicPtrÁLš¯]®¼ÀЦThreadÁ4ÚI®ãåÔÖü®.½¿£¥ü®]Žvxgiü®Œ]4´JLü÷0¥Íìõ& ƒ õ&$†Ììõ&$½&&(ü«)¥ðÒ ·Ó½&üÙA¥ðÒ Þ¬½õ&«½õ&½&')üž .¥ðÒ £ ŸÔ½&œÑ ¥ðÒ Ö ½& $%&'üë (ÿ ½&ÍCüú
7 õ&½&ôD»Õüú +
 ½&

õ&$˜
üÉk ½&ª)Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¬M!"!" èÍìª) âÍìØ å–"ª)¬MÄ›ª)¬M˜"Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
õ&Ø
õ&ª)ر 窱¦¨ <closure_kind>Á#<closure_signature>Á#<upvars>Á## #õ&ª)جM Á@  ¥3 ¼×Ì ½&¬M Õ
$õ&ü°/ ½& õ& Ó
%õ&üÔ2 ½&Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ õ& ê
&õ&üï+½&¥3
'õ&$ˆ¼ï!Tõ!²9¤Ž"<”"²9¬ª"D°"²9üÇ"!tÍ"Ö2ü†#dŒ#Ö2¼°$T¶$²9l¬&4³&Œ2{ÏYhŸ‰Y/01äÀ&4À&..á.á.aã.»Ì-IÜžB2®Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙšIšIýЛI¬¾"€sEæšú¤â&Dâ&..¤]¤]V¦]Á‚]üß3ø¤”&Œü&$ü&..Ö2„È',Ï' 3322ÿ 4 5  0|ö¾€˜Ö 0|ö¾€˜Ö457Õ'äß',ß'22  Þ4´(L(22Ö2¼œ(8­'7"7”º($½( ­'¬M6 Â(6
78$Ç(¸*7¬Ù8ÄÙ8áÙ8878²9²9¬MüÓ.\”Ö.˜ ˜Þ4Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ “"¬M˜"¬M¬M ð.
9 ,é.$ˆ/µ29¬Ù:ÄÙ:áÙ::9:úä¬Müû7?$þ7š šÞ4Ö2¬M Š8
; ,ƒ8
curr_queueÁT¢8µ:;¬Ù<ÄÙ<áÙ<<;<úä¬M÷;;¬Ù=ÄÙ=áÙ==;=úä ²9Tö@4ú@?ACü¥AG.\‡A$³AëV²9¥@@ðÒ,æA
?õ&µ »A ¸Aü—DZ.\ùCL¥DëV²9ëV¥BBðÒ,ëD
Aõ&µ ²Dø $¿D ¯DüðJl.\ÒJDþJëV·
ëV¥D·
EDEÍìÏëÜšKðÒ,ÖK–"Ïëýä´ŸKÏëýä˜"²9,°K
Cõ&Ïëµ ŠK± —K ‡K`btgüåf*' Single-threaded version of `OnceCell`.Á4˜gS}a$Àgá.FI4TÆgî0FJ×Ûg `FKíàgëFLr,ógé!FNDerefMutÁDúgö!FOÞÏl•h¬½FQÿÏT¤h«½FR$©g¤©g¨ªŠŒ{}ü©gGrt[]ü©giPR?A´Émü½hDA A cell which can be written to only once. It is not thread safe.Á†iúüŽiC@ Unlike [`std::cell::RefCell`], a `OnceCell` provides simple `&`ÁüÖi references to the contents.Áúiúü‚jRO [`std::cell::RefCell`]: https://doc.rust-lang.org/std/cell/struct.RefCell.htmlÁÙjúláj
# ExampleÁ<ójÙ\üÿj$Ý~¨kúü°k let cell = OnceCell::new();ÁüÔk" assert!(cell.get().is_none());Áûkúüƒl.+ let value: &String = cell.get_or_init(|| {Áü¶l# "Hello, World!".to_string()Á<ÞlÈuüêl'$ assert_eq!(value, "Hello, World!");Áü–m" assert!(cell.get().is_some());Á<½mÙ\DÔm¥TTðÒ Ýmî'phñ"<×q4Uä™n,™nFSS“5ü¡pA¥WWðÒ ¦pÔl©pŸÔT¹pî'üêp.¥YYðÒ ïpŸÔTòpî'ü¡q¥[[ðÒ ¦qî'\´\¤Ëq<Îqî'ZZ
\õ&ür.¥^^ðÒ ”r¿cõ&T—rî'_Àc_!üÈr4Ërœ î' œ c cˆ¢cµ
 `£cbufÁ `àB¤GS
Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¬MŸÈŸÈ ÈErrorÁ O˜éBL] Ïr]
_õ&$Ðr± ÖrüÂt$¥aaðÒ ÇtØõ&,Êtî'bcÙÚbc(*ôñt,ôtž žî'î'` út`
bõ&$ûtü¿v'TÂvŸ  Ÿî'  î'¬M` Ív`
cõ&$ÒvsourceÁ4Øvü³x,¥eeðÒ ¸xµßõ&õ&L»xî'f·ßf$&üêx"íx¡¢ ¡î' ¢î'd ðxd
fõ&$ñx¹
,÷xôÊy¥hhðÒ Ïyõ&Òyî'üñy¥jjðÒ öyî'këkÌ›z$žzõ&î'ii
kõ&»,£zœôz¥mmðÒ ùzî'nopqrstx{|ü¸{!ì’{ Creates a new empty cell.ÁÅ{î'llº?üÑ|0ü¥|# Creates a new initialized cell.ÁTÞ|õ&î'll
oõ&»ÀüÙ~üÔ}-* Gets a reference to the underlying value.ÁŠ~úü–~(% Returns `None` if the cell is empty.Áà~£ £î'Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ £õ&l ä~l
põ&$å~üþ†+üÐ52 Gets a mutable reference to the underlying value.ÁŽ‚úüš‚(˜Ë‚úüׂNK This method is allowed to violate the invariant of writing to a `OnceCell`Áü®ƒIF at most once because it requires `&mut` access to `self`. As with allÁü€„FC interior mutability, `&mut` access permits arbitrary modification:ÁÏ„ú<Û„Ù\üë„$Ý~˜…úü¤…2/ let mut cell: OnceCell<u32> = OnceCell::new();ÁÔß… cell.set(92).unwrap();Áü‚†" *cell.get_mut().unwrap() = 93;Áü­†&# assert_eq!(cell.get(), Some(&93));Á<܆Ù\<…‡¤ ¤î'Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¤õ&l l
qõ&$’‡ü¹Œ,ü¨ˆ.+ Sets the contents of this cell to `value`.Á߈úüëˆEB Returns `Ok(())` if the cell was empty and `Err(value)` if it wasÁL¹‰ full.Áˉúl׉Üð<í‰Ù\üý‰$Ý~ªŠúü¶Š˜ñüÞŠ"Áñ‰‹úü•‹%" assert_eq!(cell.set(92), Ok(()));ÁüË&# assert_eq!(cell.set(62), Err(62));Áò‹úüþ‹"›ó<©ŒÙ\ÀŒ¥ ¥î'õ&Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¬Mõ&l ÄŒl
rõ&$ÅŒ»,ËŒüã‘9ü„ŽRO Like [`set`](Self::set), but also returns a reference to the final cell value.ÁߎúlëŽÜð<Ù\ü‘$Ý~¾úüʘñüò"Áñúü©-* assert_eq!(cell.try_insert(92), Ok(&92));Áüß41 assert_eq!(cell.try_insert(62), Err((&92, 62)));Áœ‘úü¨‘"›ó<Ó‘Ù\Tꑦ ¦î'õ&Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
 ¦õ&¯’õ&l õ‘l
sõ&$ö‘»,ü‘ü‹œTü¯–;8 Gets the contents of the cell, initializing it with `f`ÁÔó– if the cell was empty.Á–—úd¢— # PanicsÁ·—úü×FC If `f` panics, the panic is propagated to the caller, and the cellÁÔ’˜ remains uninitialized.Áµ˜úüÁ˜EB It is an error to reentrantly initialize the cell from `f`. DoingÁÔ so results in a panic.Á²™úl¾™Üð<Ô™Ù\üä™$Ý~‘šúüš˜ñüÅš(% let value = cell.get_or_init(|| 92);ÁÜöš assert_eq!(value, &92);Áüš›41 let value = cell.get_or_init(|| unreachable!());ÁÜ×›•–<û›Ù\\’œ§ §î'ª) §õ&luu ¡œlÀØ žœáØlÑœª)¬M˜"õ& Ýœ
tõ&ª)$¢œ± ¨œ>@Löœ$ûœFvžÍúÅžÍúŪt¬ÙwÄÙwáÙwwtwõ&ª)¬MÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
õ&Ë™ª)üÎ¥qü°ž>; Gets the contents of the cell, initializing it with `f` ifÁü÷ž@= the cell was empty. If the cell was empty and `f` failed, anÁ´ÀŸ error is returned.ÁߟúdëŸ÷’€ úüŒ F›“ÔÛ ë“þ úüŠ¡EÔØ¡ì”û¡úl‡¢Üð
 `£cÍ÷ `àB¤GS
¬ôø âÀ
ˆõ&ª)$ãÀ± éÀ¬‚Â¥ŠŠðÒ ‡ÂÀØ ŠÂñ(ŒüÇÅ'ü¢ÂB? Creates a new lazy value with the given initializing function.ÁíÂúlùÂÜð<ÃÙ\ŒŸÃ # fn main() {Áü¹Ã ­zâÃúüîÃ,) let hello = "Hello, World!".to_string();Á£Äúü¯Ä2/ let lazy = Lazy::new(|| hello.to_uppercase());ÁêÄúüöÄ(% assert_eq!(&*lazy, "HELLO, WORLD!");Á<§ÅÒk<·ÅÙ\ÔŪ)ñ(
Œõ&ª)¸ üæÇ3üÌÆ41 Consumes this `Lazy` returning the stored value.Á‰Çúü•ÇHE Returns `Ok(value)` if `Lazy` is initialized and `Err(f)` otherwise.ÁTíÇñ(Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
õ&ª)
õ&ª)thisÁ$øÇ‰É¬ÙŽÄÙŽáÙŽŽŽõ&ª)¬Mª) ÇB¹É¬ÙÄÙáÙõ&ª)¾¬Mü–Ê$¥ù˜ ­ÊÀØ žÊáØl¡ÊðÒ ›Êñ(“˜35ü€Î%üÅÊGD Forces the evaluation of this lazy value and returns a reference toÁ|•Ë the result.Á­Ëúü¹Ë<9 This is equivalent to the `Deref` impl, but is explicit.ÁþËúlŠÌÜð< ÌÙ\ü°Ì ­zÙÌúüåÌ  let lazy = Lazy::new(|| 92);ÁŽÍúüšÍ(% assert_eq!(Lazy::force(&lazy), &92);ÁäËÍ assert_eq!(&*lazy, &92);Á<ðÍÙ\,‡Î­ ­ñ( ­õ& “Î
õ&ª)¥¼$ÎÊάÙÄÙáÙõ&ª)¬Mõ& ñ(üÆÓ1üöÏOL Forces the evaluation of this lazy value and returns a mutable reference toÁ|ÎÐà¿æÐúüòÐ?< This is equivalent to the `DerefMut` impl, but is explicit.ÁºÑúlÆÑÜð<ÜÑÙ\üìÑ ­z•Òúü¡Ò$! let mut lazy = Lazy::new(|| 92);ÁÎÒúüÚÒ0- assert_eq!(Lazy::force_mut(&mut lazy), &92);ÁÔ“Ó assert_eq!(*lazy, 92);Á<¶ÓÙ\LÍÓ® ®ñ( ®õ& ÝÓ
õ&ª)¥¼$×ÓçÖ¬ÙÄÙáÙõ&ª)¬M õ&¬MüÀÚ+ü×:7 Gets the reference to the result of this lazy value ifÁüÐ×1. it was initialized, otherwise returns `None`.ÁŠØúl–ØÜð<¬ØÙ\ü¼Ø ­zåØúüñØ ‘ÁšÙúü¦Ù'$ assert_eq!(Lazy::get(&lazy), None);ÁäÖÙûÁüûÙ,) assert_eq!(Lazy::get(&lazy), Some(&92));Á<°ÚÙ\ÇÚ¯ ¯ñ(Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¯õ& ÑÚ
õ&ª)¥¼$ËÚüîÞ7üÛB? Gets the mutable reference to the result of this lazy value ifÁüèÛ1ÐÉ¢Üúl®ÜÜð<ÄÜÙ\üÔÜ ­zýÜúü‰Ý$‹Æ¶ÝúüÂÝ/, assert_eq!(Lazy::get_mut(&mut lazy), None);ÁÔúÝÇüÞ85 assert_eq!(Lazy::get_mut(&mut lazy), Some(&mut 92));Á<ÞÞÙ\<õÞ° °ñ(Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ °õ& ƒß
˜õ&ª)¥¼$ýÞüÝß.¥ššù˜ ôßÀØ åßáØlèßðÒ âßñ(œê!ë!9;\–à4›àõ&¬¯à,²à± ±ñ( ±õ& ¸à
õ&ª)$¹àüúà1¥Ÿ Ÿ ù˜ ‘áÀØ ‚ááØl…áðÒ ÿàñ(¡÷!¡24ü¶á!L¹á² ²ñ( ²õ&ž
M3®°²½&ž*;+O¥½&ž*¯¯
°õ&gi4¿î¥¯¯½&üÍ´ðÒ Òîž*µ´µÜ÷î<úîž*³³
µõ&üÆï.¥··ðÒ ËïÃ÷TÎïž*¸Àc¸üÿï4‚ð³´µ ³ž* ´ c cˆ¢cµ
 `£cÍ÷ `àB¤GS
µôø †ð
¸õ&$‡ð± ðüùñ$¥ººðÒ þñÀú,òž*»¼ÙÚ»¼')ô¨ò,«ò ž*ž*¹ ±ò¹
»õ&$²òüîó'Tñó·¸ ·ž* ¸ž*¬M¹ üó¹
¼õ&$ôªû4‡ôüâõ¥¾¾ðÒ çõž*¿ë¿ÌŒö$öõ&ž*½½
¿õ&»,”öüáö,¥ÁÁðÒ æöÛüLéöž*·ßÂü˜÷)›÷¹º ¹ž* ºž*À ž÷À
Âõ&$Ÿ÷¹
,¥÷ôÿ÷¥ÄÄðÒ „ø—þ‡øž*œ¦ø¥ÆÆðÒ «øž*ÇÈÉÊËÌÍÎÐÔר,.üêø!ìÄø‰ÿ÷øž*ÅÅáFüîù0üÂù#åÿTûùõ&ž*ÅÅ
Èõ&»m"ü’üüáú/, Gets the reference to the underlying value.Á™ûúü¥ûC@ Returns `None` if the cell is empty, or being initialized. ThisÁÄñû method never blocks.Á™ü» »ž*Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ »õ&Å üÅ
Éõ&$žüĦ„üþDA Gets the reference to the underlying value, blocking the currentÁÜÝþ thread until it is set.Áÿú<ÿÙ\üÿ"µeÈÿúüÔÿ85 let mut cell = std::sync::Arc::new(OnceCell::new());Áü•€  let t = std::thread::spawn({Áü¾€0- let cell = std::sync::Arc::clone(&cell);Áü÷€%" move || cell.set(92).unwrap()ÁÈuµúüÁ2/ // Returns immediately, but might return None.Áüü$! let _value_or_none = cell.get();Á©‚úüµ‚JG // Will return 92, but might block until the other thread does `.set`.Áüˆƒ" let value: &u32 = cell.wait();Áܳƒ assert_eq!(*value, 92);Á´×ƒ t.join().unwrap();Á<öƒÙ\»À|Œ„¼†„$­„¼ ¼ž* ¼õ&Å ²„Å
Êõ&$³„üó‹+üû†74 Gets the mutable reference to the underlying value.Á»‡úüLJ(˜ø‡úü„ˆN؃üÛˆI±„ü­‰F……ü‰ú<ˆŠÙ\ü˜Š"µeÊúüÏŠ2‹†ÔŠ‹džÜ­‹ø§<Ñ‹Ù\<ú‹½ ½ž*Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ½õ&Å ‚ŒÅ
Ëõ&$‡Œü—(üÑŒFC Get the reference to the underlying value, without checking if theÁÄ  cell is initialized.ÁÁú # SafetyÁâúüîFC Caller must ensure that the cell is in initialized state, and thatÁü½Ž?< the contents are acquired by (synchronized to) this thread.Ál¥¾ ¾ž* ¾õ&Å ³Å
Ìõ&ü»•,üø.þˆ¯úü»EĉL‰‘“Š›‘úl§‘Üð½‘ú<É‘Ù\üÙ‘"µe„’úü1. static CELL: OnceCell<i32> = OnceCell::new();ÁÊ’ú|Ö’jüî’&# assert!(CELL.get().is_none());Áúü©“ std::thread::spawn(|| {ÁüÑ“-* assert_eq!(CELL.set(92), Ok(()));Á܇” }).join().unwrap();Á«”úü·”*' assert_eq!(CELL.set(62), Err(62));Áüê”*' assert_eq!(CELL.get(), Some(&92));Á,Ë\<«•Ù\•¿ ¿ž*õ&ÂÅ Æ•Å
Íõ&$Ç•»,Í•üïš9ü†—RÓá—úlí—Üðƒ˜ú<˜Ù\üŸ˜"µeʘúüÖ˜˜ñüþ˜"Áñ©™úüµ™-žüë™4Ö¨šúü´š"›ó<ßšÙ\TöšÀ Àž*õ&Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
 Àõ&—‡õ&Å Å
Îõ&$‚›»,ˆ›û›Î¬ÙÏÄÙÏáÙÏÏÎÏõ&åÄ ¥3ü¾¥Tü¹GD Gets the contents of the cell, initializing it with `f` if the cellÁt‰ž was empty.Á žúü¬žC@ Many threads may call `get_or_init` concurrently with differentÁüøžGD initializing functions, but it is guaranteed that only one functionÁ¬ÈŸ will be executed.ÁæŸúdòŸ÷’‡ úü“ F›“Ôâ ë“…¡úü‘¡C@ It is an error to reentrantly initialize the cell from `f`. TheÁüÝ¡GD exact outcome is unspecified. Current impl
 `£cÍ÷ `àB¤GS
ÆôøÞ ÃÊÞ
áõ&ª)$Äʱ ÊÊüéÍC¥ãäãäðÒ õÍÀØ øÍÌìª)$ûÍ ž*$¨Î“+2468üÜÎW¥æçæçðÒ áÎÀØ äÎͳlçά½ž*l¦Ï“++-/1¬¼Ï¥éêéêðÒ ÁÏÀØ ÄÏ“+ëìü³Ð$üÜÏ85 Creates a new lazy value with the given initializingÁlÐ
function.ÁÀЪ)“+èè
ëõ&ª)±$üÌÒ3ü²Ñ4‚ºïÑúüûÑHκTÓÒ“+´¼èè
ìõ&ª)¥¼$ÞÒïÓì¬ÙíÄÙíáÙííìíõ&ª)¾˜¾ŸÔì¬ÙîÄÙîáÙîîìîõ&ª)¾¬MüüÔ$¥ðññðù˜ “ÕÀØ „ÕáØl‡ÕðÒ Õ“+òôö÷35üØØ%ü«Õ0- Forces the evaluation of this lazy value andÁüäÕ96 returns a reference to the result. This is equivalentÁü¦Ö)& to the `Deref` impl, but is explicit.ÁØÖúläÖÜð<úÖÙ\ôŠ×s±×úü½× ‘Áæ×úüò×(ÉÁ䣨ûÁ<ÈØÙ\,ߨÇ Ç“+ Çõ&ï ëØï
òõ&ª)¥¼$娢Ùò¬ÙóÄÙóáÙóóòóõ&ª)åÄ “+üîÝ1üÎÚ0»°ü‡ÛA> returns a mutable reference to the result. This is equivalentÁüÑÛ)º±ƒÜúlÜÜð<¥ÜÙ\ôµÜsÜÜúüèÜ$‹Æ•Ýúü¡Ý41 assert_eq!(Lazy::force_mut(&mut lazy), &mut 92);Á<ÞÝÙ\LõÝÈ È“+ Èõ&ï …Þï
ôõ&ª)¥¼$ÿÝáô¬ÙõÄÙõáÙõõôõõ&ª)éɬMüæä+üµá:‹Éüøá1Ðɲâúl¾âÜð<ÔâÙ\ôäâs‹ãúü—ã ‘ÁÀãúüÌã'ëÊäüãûÁü¡ä,«Ë<ÖäÙ\íäÉ É“+Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Éõ&ï ÷äï
öõ&ª)¥¼$ñäüŒé7üÃå:‹Éü†æ1ÐÉÀæúlÌæÜð<âæÙ\ôòæs™çúü¥ç$‹ÆÒçúüÞç/ÚÎä–èûÁü»è8¢Ï<üèÙ\<“éÊ Ê“+Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Êõ&ï ¡éï
÷õ&ª)¥¼$›éüûé.¥ùúúùù˜ ’êÀØ ƒêáØl†êðÒ €ê“+ûüê!ë!ü9;\´ê4¹êøøõ&¬Íê,ÐêË Ë“+ Ëõ&ø Öêø
üõ&ª)$×êü˜ë1¥þÿþÿù˜ ¯ëÀØ  ëáØl£ëðÒ ë“+€÷!24üÔë!L×ëÌ Ì“+ Ìõ&ý áëý
õ&ª)$æëü¯ì$¥ðÒ ´ì Ö<·ìƒ,ƒ´ƒ¼±íüÞìJÛÕ<´íƒ,
ƒõ&\¡ñ4¤ñ¥¬M
dÌñüEB Thread-safe, non-blocking, "first one wins" flavor of `OnceCell`.ÁFúüJIF If two threads race to initialize a type from the `race` module, theyÁü”JG don't block, execute initialization function together, but only one ofÁÜß them stores the result.Áûúüÿ/, This module does not require `std` feature.Á¯ú´³ # Atomic orderingsÁÊúüÎ85 All types in this module use `Acquire` and `Release`Áü‡LI [atomic orderings](Ordering) for all their operations. While this is notÁüÔPM strictly necessary for types other than `OnceBox`, it is useful for users asÁü¥MJ it allows them to be certain that after `get` or `get_or_init` returns onÁüóJG one thread, any side-effects caused by the setter thread prior to themÁü¾OL calling `set` or `get_or_init` will be made visible to that thread; withoutÁüŽOL it, it's possible for it to appear as if they haven't happened yet from theÁüÞMJ getter thread's perspective. This is an acceptable tradeoff to make sinceÁü¬IF `Acquire` and `Release` have very little perform
some `f`.Á\ó%Ñ ÑÊ,£Ò˜˜ ‚&ÍìöÚ ÿ%–"öÚ¬MÄ´&öÚ¬M˜"£ÒdÀ&
öÚ$ƒ&± ‰&EGLÜ&$á&â6‹X¹â6X¹Œ'¬ÙšÄÙšáÙšššöÚ¬MÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
£Ò–ÜöÚüç*~ü‰(>·šüÌ(@€›´‘)Ê›¬)úü´)L”Øü…*KêØlÕ*¾Ù|î*Ò ÒÊ,öÚÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
£Òœœ „+£Û þ*ÍìÜß +´ÛüÁ+#öÚ¬M˜"Šß¼Í+
öÚÜß$…+± ‹+PRLNüÿ,Y$-Ó ÓÊ,Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
£ÒŸ  Ÿ Š-Íìâ ‡-Íì¶áü”-(–"¶á¬Mü™-#¶á¬M˜"»á¼¥-
žâ¶á$‹-± -\^XZüÂ/E„Å/Ô ÔÊ,£ÒÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
²9²9 Ö/
¡$×/¹Ý/lõ1‰-£¤¥¦©­®Ô¹2ì‰2‰ÿÆ2‰-¢¢
£üÂ3!ô‘3–ÐÉ3Õ Õ‰-Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¢ Í3¢
¤$Î3ü¾50ü 4.þˆÓ4úüÛ4B˜ÕL¢5“ŠÅ5Ö Ö‰-”×¢ É5¢
¥$Ê5»,Ð5üÄ8Qüª6K ×Tú6ô׉7úü‘7L”Øüâ7KêØl²8¾Ù\Ë8× ×‰-öÚ¢§§ Ú8¢£Û ×8´Û„„9öÚ¬M˜"$9
¦öÚ$Û8± á88:Ì9¦¬Ù¨ÄÙ¨áÙ¨¨¦¨öÚ¬M£ÒòÝüÎ<nüð9>·šü³:@€›´ø:Ê›“;úü›;L”Øüì;KêØl¼<¾Ù|Õ<Ø Ø‰-öÚÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Üߢª«ª« ë<¢£Û å<à è<´ÛÜ =öÚ¬M˜"ˆì|¬=
©öÚÜß$ì<± ò<FHKMæ=©¬Ù¬ÄÙ¬áÙ¬¬©¬öÚÜ߬MŠßòÝü±>*T´>£Ò¢¢
­»,¿>ü?(D“?£Ò¢¢
®»,œ?ÌÈ@üŽ@9³Ù<Ó@ °¥±°±Íìˆ. ß@ˆ. üA%È-ÿŠZa.pI²³Û@46œè@,è@¯¯«RN,A¯¯øQFu\»Ÿî0î04ð0»Ì-·}—KEüC£  ˆ.üëA0 µ¥µ¥ð ûA ˆ.$þAÈ-÷Aü B/ ¸¥¹¸¹¥ð ©BÈ-ºÀcº¥BüÖBDÙBÙÚÛ ÙÈ- Ú c cˆ¢cµ
 `£cÍ÷ `àB¤GS
Ûôø· ÝB·
º ˆ.$ÞB± äBüÕC& ¼¥½¼½¥ð ÞCÈ-¾´¾ÚC¤‚D<…DÈ-»»
¾ ˆ.Ô¶D À¥ÁÀÁ¥ð ¿DÈ-ÂÃÄÅÉÌÏÑ»D%'ÔùDì×D‰ÿ†EÈ-¿¿