Files
boc/aamos-ledger-rust/target/debug/deps/libtokio_stream-13014b8ba9687d79.rmeta
T

2789 lines
654 KiB
Plaintext
Raw Normal View History

rust
J5
#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ÁtokioÁü4‰Ñg*j»ª"!-c2810403ed321132Ápin_project_liteÁ·x¼+Ä`·á¨›t—¸Íœ-2dc344ecc91b59efÁ parking_lotÁ×ßÿ9ȥɤ±X-bf01ab60cd5c5b66Álock_apiÁEcÓŽ/ÅS}sw‡A$P-0e8055cd433fa267Á
scopeguardÁ’‰‘p ÒÞa¢ßöéqÓB-29f0bdb2ea82739eÁparking_lot_coreÁí|ŸV„E`•Ö«Ì#ÎJH-d4f765203cf287f4ÁsmallvecÁµóª§eâéU
W¹Ñ-8fb808173b3f0087ÁserdeÁFVæ¸Û•IÄÀzÍ-9c8ce3cf08540cc3Á serde_deriveÁ,w|êñ]ù¿¥­C£ð-975c43f96d83014eÁ
serde_coreÁ²€Ãb˜cÐòžÇÇ
-7a42419d8e43b208Á®f©¾/ô)c§{õa“â‘-a3906971a93fd1b8Áæ\‹±ÔcdùÀTƒ-f86f80b348d33b13ÁmioÁGùj0ðÔ·â"FÆ#0Q-3545320490828222ÁbytesÁ`²['3_²µÆ=üå¥-d4f44708ed5da7b6Á tokio_macrosÁóÁm¹^E¼>ŽCê
z3-074a4ab5bbda1a72Ásocket2ÁsT›¸n>~RÊ1G/R-c161f09f0083d1e0Ásignal_hook_registryÁœ¥¿’g›´·DV<{Y<<-b3ea108dcb9d0adeÁerrnoÁÍ\Ý|#{°zŽ¡p&a”-464950f23d45b34dÁ futures_coreÁÆöc$޳–º¾v¸dK-ac1e9cdb826f83c0ÁrandÁ$¯³loomÁ$‘³ BroadcastStreamRecvErrorÁĦ»çß
broadcastÁLÜ»çß
BroadcastStreamÁ|þ»ç&(
watchÁ,˜»ç?A
WatchStreamÁ\²»ç^`
signal_unixÁ\ù»signalÁ¥
SignalStreamÁdÀ»Ô#%
signal_windowsÁtø»ÔEG
CtrlCStreamÁ\Æ»Ôdf
CtrlBreakStreamÁ|Ó»Ô
tcp_listenerÁdØ»netÁxÙ
TcpListenerStreamÁŒ–»(*
unix_listenerÁlÓ»IK
UnixListenerStreamÁ”ž»oq
splitÁ,Ì»io-utilÁ˜
SplitStreamÁ\滌"$
linesÁ,ü»Œ;=
LinesStreamÁ\ »ŒZ\ÀmacrosÁcfg_fsÁ cfg_io_utilÁcfg_netÁcfg_timeÁcfg_syncÁ
cfg_signalÁwrappersÁ
errorsÁ
 mpsc_boundedÁ       ¥æ 
into_innerÁcloseÁ ¥ poll_nextÁ size_hintÁ ¥É  ¥ as_mutÁ #¥#÷

mpsc_unboundedÁ'''''''.¥.æ .Ç.Ø'3¥33ö3'8¥8É';¥;³'>¥>÷

stream_extÁBBB£EEEEEEEEEEO'aÁOStÁOOæ ETÎTT°TŠ BBºZZZZZZZZZZdÅdÎddæ ZiÎii°iŠ BBchainÁooooooooox¥x¦xæ o|¥|¦||ö|BBcollectÁ 
 
FromStreamÁ¥¥¦æ ¥¦°Š žInternalCollectionÁž
initializeÁžextendÁžfinalizeÁ£¥¥¥¥£¥½¥Ï¥Ý«¥­¥­£­½­Ï­Ý³¥ µ¥µ£µ½µÏµÝ
»¥»¦» ¿¥¿¦¿¿£¿½¿Ï¿ÝsealedÁÇFromStreamPrivÁȥȣȽÈÏÈÝÇInternalÁÎ
BBBBfilterÁÓÓÓÓÓÓÓÓÓÜÎÜÜ×ÓàÎààæ ÓäÎäääöäBB
filter_mapÁëëëëëëëëëôÎôô×ëøÎøøæ ëüÎüü¥üüöüB BfoldÁŽÎŽŽŽæ Î°Š B
BfuseÁšššššššš¢¥¢æ 𥥥¥ö¥B BØ««««««««³Î³³×«·Î··æ «»Î»»¥»»öÀ Á »B B map_whileÁÅÅÅÅÅÅÅÅÍÎÍÍ×ÅÑÎÑÑæ ÅÕÎÕÕ¥ÕÕöÚ ÕB
BmergeÁÞÞÞÞÞÞÞÞæ¥æ¦ææ Þê¥ê¦êêöêÞöð¥ð¦BBó ôôôôôôôôôýÅýÎýæ ôÎ°Š BBskipÁÎ×Îæ Îö BB
skip_whileÁœœœœœœœœœ¥Î¥¥×œ©Î©©æ œ­Î­­­ö­BBtakeÁ´´´´´´´´´½Î½×´ÀÎÀæ ´ÃÎÃÃöÆ ÃBB
take_whileÁÊÊÊÊÊÊÊÊÒÎÒÒ×ÊÖÎÖÖæ ÊÚÎÚÚÚöÞ ß ÚBBthenÁãããããããããìÎìFutÁìì×ãñÎñŸ.ññæ ãöÎööŸ.ööööü BBtry_nextÁÿÿÿÿÿÿÿÿÿÿÅÎæ ÿ¥Î°Š BBpeekableÁ¥æ peekÁ   £¥££öBB StreamExtÁ¨ó ¨œ/ª¥ª¨Ø­¥­¨Î%°¥°¨Þ-³³Ÿ.¨ù&¦¨á¸¨!º¥º¨»#¨ª+¨µ,¿¨û(¨†*¨£Ä¨ºÆ¨øÈ¦¨­"ÊʨíÍ¥¨timeoutÁ¨timeout_repeatingÁ¨throttleÁ¨chunks_timeoutÁ¨¦0BÔÎBmerge_size_hintsÁadaptersÁÚÚÚÚÚÚÚÚÚÚ Ú
Ú Ú Ú
emptyÁéééééééð¥éò¥éô¥éÃ5ö¥éø¥øøöøùšùˆšŠšŠŠöŠ onceÁšÃ7¥Ÿ¥ŸŸöŸ
  pendingÁ§§§§§§§®¥§°¥§²¥§Ä8´¥§¥ö

stream_mapÁ¾¾¾¾¾¾¾¾¾¾ÈœÈ§ÈùËÈúÍÈæ È
with_capacityÁÈkeysÁÑÑ È¼ÔÔ È
values_mutÁ×× ÈcapacityÁÈÈis_emptyÁÈclearÁÈinsertÁÈremoveÁß¢È contains_keyÁᢾãœã§ãpoll_next_entryÁ¾çœç§ç>¾ëœë§ë next_manyÁîî ð ëpoll_next_manyÁ¾óœó§óóöó¾ùœù§ùùü¥¾þœþ§þÏ¥¾öƒƒƒöCOUNTERÁseedÁƒæ 
fastrand_nÁfastrandÁƒ thread_rng_nÁ  stream_closeÁ¤æ ÇŸ¤ŸŸö¢ Ÿ¤  ReceiverStreamÁ¨¥¨innerÁ «¥«×'UnboundedReceiverStreamÁ®¥®à@'±¥±×
intervalÁ´´´´´´´´´½æ ½Ç´ÀÀöÀ´ÄɴƳ
´IntervalStreamÁÉà@´Ë×
read_dirÁÍÍÍÍÍÍÍÍÍÍ׿ ×ÇÍÚÚöÍÝÉÍß³
Í
ReadDirStreamÁâà@Íä×E AllFutureÁæÅæÎææstreamÁæ±æ_pinÁEíÅíÎíí×EòóÅóÎóò__assert_not_repr_packedÁ÷Å÷Î÷ò
ProjectionÁû'__pinÁûÅûÎûûËDû±ûáDò
ProjectionRefÁƒþEƒÅƒÎƒƒËDƒ±ƒáDóprojectÁþEó project_refÁþEò__OriginÁþEÅÎ__dummy_lifetimeÁËD±áDò˜þE˜Å˜Î˜òMustNotImplDropÁòž¥ò Å Î Z AnyFutureÁ¤Å¤Î¤¤ËD¤±¤áDZ«Å«Î««×Z°±Å±Î±°´EµÅµÎµ°ìE¹þE¹Å¹Î¹¹ËD¹±¹áD°¼FÁþEÁÅÁÎÁÁËDÁ±ÁáD±‰GÉþE± GËþE°»GÍþEÍÅÍÎÍÍëGÍËDͱÍáD°ÖþEÖÅÖÎÖ°ÀH°Ü¥°ÞÅÞÎÞoChainÁâ¥â¦â¬â­oçè¥è¦ç´Eë¥ë¦çìEîþEî¥î¦î¬î­ç¼FôþEô¥ô¦ô¬ô­è‰GúþEè GüþEç»GþþEþ¥þ¦þëGþ¬þ­çþE¥¦çÀH犥猥Œ¦CollectÁ¥¦ËD
collectionÁ_outputÁáD ¥¦×œ¥¦œ´E¡¥¡¦¡œìE¥þE¥¥¥¦¥¥ËD¥ôO¥†P¥áDœ¼F®þE®¥®¦®®ËD®ôO®†P®áD‰G·þE G¹þEœ»G»þE»¥»¦»»ëG»ËD»ôO»†P»áDœÅþEťŦŜÀHœË¥œÍ¥Í¦ÍÓFilterÁÑÎÑÑËDѱÓÖ×Î×Ö´EÚÎÚÖìEÝþEÝÎÝÝËDݱּFãþEãÎããËDã±×‰GéþE× GëþEÖ»GíþEíÎííëGíËDí±ÖôþEôÎôÖÀHÖù¥ÖûÎûë FilterMapÁþÎþþËDþ±ëƒ ΃ ´E΃ ìEŠ þEŠ ÎŠ Š ËDŠ ±ƒ ¼F þE Î  ËD ±‰G þE G˜ þEƒ »Gš þEš Κ š ëGš ËDš ±ƒ ¡ þE¡ Ρ ƒ ÀHƒ ¦ ¥ƒ ¨ Ψ 
FoldFutureÁ« Ϋ « « ËD« accÁ« ±« áD³ γ ³ ³ ׸ ¹ ι ¹ ¸ ´E½ ν ½ ¸ ìEÁ þEÁ ÎÁ Á Á ËDÁ ÔYÁ ±Á áD¸ ¼FÊ þEÊ ÎÊ Ê Ê ËDÊ ÔYÊ ±Ê áD¹ ‰GÓ þE¹  GÕ þE¸ »G× þE× Î× × × ëG× ËD× ÔY× ±× áD¸ á þEá Îá á ¸ ÀH¸ ç ¥¸ é Îé é šFuseÁí ¥í ËDšð ¥ð ךó ô ¥ó ´Eö ¥ó ìEø þEø ¥ø ËDó ¼Fü þEü ¥ü ËDô ‰G
þEô  G
þEó »G
þE
¥
ëG
ËDó 
þE
¥ó ÀHó 
¥ó 
¥«MapÁ
Î

ËD
±«

Î

´Eš
Κ

ìE
þE
Î

ËD
±
¼F£
þE£
Σ
£
ËD£
±
‰G©
þE
 G«
þE
»G­
þE­
έ
­
ëG­
ËD­
±
´
þE´
δ

ÀH
¹
¥
»
λ
ÅMapWhileÁ¾
ξ
¾
ËD¾
±ÅÃ
Ä
ÎÄ
Ã
´EÇ
ÎÇ
Ã
ìEÊ
þEÊ
ÎÊ
Ê
ËDÊ
±Ã
¼FÐ
þEÐ
ÎÐ
Ð
ËDÐ
±Ä
‰GÖ
þEÄ
 GØ
þEÃ
»GÚ
þEÚ
ÎÚ
Ú
ëGÚ
ËDÚ
±Ã
á
þEá
Îá
Ã
ÀHÃ
æ
¥Ã
è
Îè
ÞMergeÁë
¥ë
¦ë
‘
­ë
a_firstÁÞñ
ò
¥ò
¦ñ
´Eõ
¥õ
¦ñ
ìEø
þEø
¥ø
¦ø
¬ø
­ø
±eñ
¼Fÿ
þEÿ
¥ÿ
¦ÿ
¬ÿ
­ÿ
±eò
‰G þEò
 Gˆ þEñ
»GŠ þEŠ ¥Š ¦Š ëGŠ ¬Š ­Š ±eñ
 þE ¥ ¦ñ
ÀHñ
 ¥ñ
 ¥ ¦ôNextÁœ Åœ Μ ËDœ áDô¡ Å¡ Ρ ×ô¥ ¦ Ŧ Î¥ ´E© Å© Î¥ ìE¬ þE¬ Ŭ ά ËD¬ áD¥ ¼F² þE² Ų β ËD² áD¦ ‰G¸ þE¦  Gº þE¥ »G¼ þE¼ ż μ ëG¼ ËD¼ áD¥ à þEà Åà Î¥ ÀH¥ È ¥¥ Ê ÅÊ ÎSkipÁÍ ÎÍ ËDÍ  remainingÁÑ Ò ÎÑ ´EÔ ÎÑ ìEÖ þEÖ ÎÖ ËDÖ £kÑ ¼FÛ þEÛ ÎÛ ËDÛ £kÒ ‰Gà þEÒ  Gâ þEÑ »Gä þEä Îä ëGä ËDä £kÑ ê þEê ÎÑ ÀHÑ î ¥Ñ ð Μ SkipWhileÁò Îò ò ËDò  predicateÁœ÷ ø Îø ÷ ´Eû Îû ÷ ìEþ þEþ Îþ þ ËDþ Øm÷ ¼F þE Î  ËD Ømø ‰GŠ þEø  GŒ þE÷ »GŽ þEŽ ÎŽ Ž ëGŽ ËDŽ Øm÷  þE Î ÷ ÀH÷ š ¥÷ œ Μ ´TakeÁŸ Ο ËDŸ £k´£ ¤ Σ ´E¦ Σ ìE¨ þE¨ Ψ ËD¨ £k£ ¼F­ þE­ έ ËD­ £k¤ ‰G² þE¤  G´ þE£ »G þE Î ëG ËD £k£ ¼ þE¼ Σ ÀH£ À ¥£  ÎÊ TakeWhileÁÄ ÎÄ Ä ËDÄ ØmÄ doneÁÊÊ Ë ÎË Ê ´EÎ ÎÎ Ê ìEÑ þEÑ ÎÑ Ñ ËDÑ ØmÑ ìrÊ ¼FØ þEØ ÎØ Ø ËDØ ØmØ ìrË ‰Gß þEË  Gá þEÊ »Gã þEã Îã ã ëGã ËDã Ømã ìrÊ ë þEë Îë Ê ÀHÊ ð ¥Ê ò Îò ãThenÁõ Îõ Ÿ.õ õ ËDõ futureÁõ ±ãü ý Îý Ÿ.ý ü ´E
Î
Ÿ.
ü ìE
þE
Î
Ÿ.

ËD
ïu
±ü ¼F
þE
Î
Ÿ.

ËD
ïu
±ý ‰G
þEý  G
þEü »G
þE
Î
Ÿ.

ëG
ËD
ïu
±ü ¢
þE¢
΢
Ÿ.¢
ü ÀHü ¨
¥ü ª
Ϊ
Ÿ.ª
ÿTryNextÁ®
Å®
ή
à@®
áDÿ³
ų
γ
×ÿ·
¸
Ÿ
η
´E»
Å»
η
ìE¾
þE¾
ž
ξ
à@¾
áD·
¼FÄ
þEÄ
ÅÄ
ÎÄ
à@Ä
áD¸
‰GÊ
þE¸
 GÌ
þE·
»GÎ
þEÎ
ÅÎ
ÎÎ
ëGÎ
à@Î
áD·
Õ
þEÕ
ÅÕ
η
ÀH·
Ú
¥·
Ü
ÅÜ
ÎPeekableÁß
¥ß
ó0ß
ËDã
ä
¥ã
´Eæ
¥ã
ìEè
þEè
¥è
ó0è
ËDã
¼Fí
þEí
¥í
ó0í
ËDä
‰Gò
þEä
 Gô
þEã
»Gö
þEö
¥ö
ëGö
ó0ö
ËDã
ü
þEü
¥ã
ÀHã
¥ã
¥Bê3 
  
¤æ ¤öštwice_plus_oneÁœæ ž×¡÷Bù3££££££££££ £
£¯¤¯æ £²¤²²ö²BBBBBB4¼¼¼¼¼¼¼¼¼¼ ¼
¼ ¼’4É¥¼Ë¥Ëget_refÁËget_mutÁËǼХÐÐö¼is_zeroÁBBBB¢4ØØØØØØØØØØ Ø
Ø Ø Øæ¤ææ æinto_remainderÁØê¤êêöêî BElapsedÁñ
ñˆô×÷ ùÖÚÚÚÚéEmptyÁ
¥ˆé¥×IterÁˆšˆùˆ yield_amtÁŒšŒ×OnceÁ¥ù¥×§´
¥ˆ§¥×¾ StreamMapÁœœœ§œentriesÁ¾ œ § ×ƒFastRandÁ¤oneÁ¤twoÁƒ§×
THREAD_RNGÁ©__rust_std_internal_init_fnÁ© « ¬__RUST_STD_INTERNAL_VALÁ« ®݇StreamNotifyCloseÁ°¤°à@³´¤³´E¤³ìE¸þE¸¤¸à@³¼F¼þE¼¤¼à@´‰GÀþE´ GÂþE³»GÄþEĤÄëGÄà@³ÉþEɤ³ÀH³Í¥³Ï¤Ø
ChunksTimeoutÁѤÑËDÑdeadlineÁÑdurationÁÑitemsÁÑcapÁØØ¤Ø×ØÛܤ۴EÞ¤ÛìEàþEà¤àËD໊àËŠàÛŠàèŠÛ¼FèþEè¤èËD車èËŠèÛŠèèŠÜ‰GðþEÜ GòþEÛ»GôþEô¤ôëGôËDô»ŠôËŠôÛŠôèŠÛýþEý¤ÛÀHÛ¥Ûƒ¤¼ThrottleÁ¥delayÁËŠ has_delayedÁËD¼¥×¼Ž¥Ž´E¥ŽìEþE¥ïËŠ…ŽËD޼FšþEš¥šïšËŠš…ŽšËD‰G¡þE G£þEŽ»G¥þE¥¥¥ëG¥ï¥ËŠ¥…Ž¥ËDŽ­þE­¥ŽÀHޱ¥Ž³¥£TimeoutRepeatingÁµ¤µËDµÂA£¹¤¹×£¼½¤¼´E¿¤¼ìEÁþEÁ¤ÁËDÁÂA¼¼FÆþEƤÆËDÆÂA½‰GËþE½ GÍþE¼»GÏþEϤÏëGÏËDÏÂA¼ÕþEÕ¤¼ÀH¼Ù¥¼Û¤TimeoutÁݤÝËDÝ»ŠÝËŠÝ
poll_deadlineÁ
ã¤ã×æç¤æ´E餿ìEëþEë¤ëËD뻊ëËŠëÚ“æ¼FòþEò¤òËDò»ŠòËŠòÚ“ç‰GùþEç GûþEæ»GýþEý¤ýëGýËDý»ŠýËŠýÚ“æþE¤æÀHæ¥æ¤





"
2
6
6
6
7
:
=
T
X
X
X
i
m
m
m







¡
¢
©
ª
±
²
¹
º
Å
Æ
Ì
Í
ß
ß
ß
ä
è
è
è
é
÷
÷
÷




˜
˜
˜
¨
¨
¨
©



À
À
À
Ã
Ð
Ð
Ð
Ú
Ú
Ú
Ü
î
î
î
ï
ð
ð
ð
ð







˜
˜
˜

¨
¨
¨
­
±
±
±
²
¿
¿
¿
Æ
Æ
Æ
È
Õ
Õ
Õ
Ú
Þ
Þ
Þ
á
ð
ð
ð
û
û
û
ü




 
¦
¦
¦
©
ª
¸
¿
Â
Ä
Æ
û
û
û
ü



Ž
¢
¢
¢
£
¹
¹
¹
º
Ë
Í
Ñ
Ô
×
Ú
Û
Ü
Ý
Þ
ß
ß
á
á
æ
æ
æ
î
î
ò
ò
ò
ò
÷
÷
÷
ø



¢
¢
¢
¤
­
­
­
³
³
³
Â
Â
Â
Ã
Å
Ç
Ì
Ì
Ì
Ü
Ü
Ü
Þ
à
å
å
å
ñ
ñ
ñ
÷
¯
¯
¯
µ
ë



¡
Ú

·
·
·
½
ò
ò
ò
ö
š
Ç
õ
¤
¤
¤
©
Ô
û
¦
Î




»
æ



š
Ÿ
Ÿ
Ÿ
µ
µ
µ

Í
Î
Ó
Ó
Ó
é
í
í
í
î
õ
õ
õ
ø
ø
ú



Ž
Ž
Ž






£
£
£
¨
¨
¨

Ú
Ú
Ú
Þ




»
»
»
¿
å
å
å
é
¡8Ì8Î8Ò8Õ8Ø8ï8ï8ÛÊÈø¥ æ Œ
¸
å
Ç í ¿ ï §
Ù
ÿ
ˆØ°¨Ì¿c¨¨Â@ªà@ ÙÞNµÊóB¥&E¼¤à¼¤ŒMŒMReceiverÁŽMchanÁìL‡G#tl4'é¤ã¼¤„¥é¼¤„¥¿c®®€A°à@'
¬p<XZ—©é¤&Eç¥à祬P¬PUnboundedReceiverÁ®PŸ¤”P´9ˆeŠé¤ã祭¦é祭¦¿cÉÉÊBÊà@´žËŽ–X&E–§à–§ÑeÑeIntervalÁÒeïdÓeperiodÁdÔemissed_tick_behaviorÁd‰=ù߯ÐÚã–§Ù§¿cââùCãà@Íl¸1}¹#=&EبàبÌ
Ì
Í
ReadDirÁÎ
ˆç õ°XïçT›íãب›©¿cææ¢DêËDEë±EìáDE½/سíïãÅÎ“íææ¢DêËDEë±EìáDE½/سíïãÅÎé¤ê©‚Øææ¢DêËDEë±EìáDE½/سíïã8³ª¹ª¿c¤¤€I¨ËDZ©±ZªáDZ)p1*ÙŽ¡}ųª¹ª“í¤¤€I¨ËDZ©±ZªáDZ)p1*ÙŽ¡}Å«–«Ûé¤Û‘¬‚ؤ¤€I¨ËDZ©±ZªáDZ)p1*ÙŽ¡}8³ª¹ª“íââæLå¬oæ­o‰`Õµ¥¦é¤ââæLå¬oæ­o‰`յ餦&E‡¯¿cÅOËDôO†PáDwNrx AÉÞé¤ï“íÅOËDôO†PáDwNrx AÉÞé®ï®Êé¤ÊÚ¯‚ØÅOËDôO†PáDwNrx AÉÞé¤ïïé¤&FÊÈúHúHßûHÁ‘4Ý­f‰úM÷é¤Èв餪BªBö­BbufÁ÷<®B÷<9)
-ÜnLé¤çEçEèEGlobalÁ ¿±‡§í#é¤È˜³é¤žBoxÁ¡ˆˆ¢ˆl }.xÏ
é¤Ù³é¤ÈŸ´é¤Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ïÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
é¤ÕµÈƒµÛµ“íÑÑÝSÔËDÓÕ±Ó
ȸÊ"àM!³ª¹ªøé¤øÑÑÝSÔËDÓÕ±Ó
ȸÊ"àM!οcœ·&Eœ·“íþþ¾V ËDë±ëSŽ2€ ~ž_³ª¹ª¥ 餥 þþ¾V ËDë±ëSŽ2€ ~ž_Ö·Ü·¿cÓ¸&EÓ¸¿c« « ¢Y¯ ËD° ÔY± ±² áD¿>•SÖ·¹ª“í« « ¢Y¯ ËD° ÔY± ±² áD¿>•S³ª–«æ 餿 ±¹‚ر¹¿cí í ¯]ï ËDšŸéû+Ó² ¶é¤“íí í ¯]ï ËDšŸéû+Ó² ¶é®Œ
餌
¢»&E¢»“í

Ã_
ËD«
±«Ö¯K‰´Êu³ª¹ª¸
餸


Ã_
ËD«
±«Ö¯K‰´ÊuÖ·Ü·¿cн&Eн“í¾
¾
¡bÁ
ËDÅÂ
±Å¢«/à;ªz³ª¹ªå
é¤å
¾
¾
¡bÁ
ËDÅÂ
±Å¢«/à;ªzÖ·Ü·¿c½¾&E½¾“íë
ë
„eî
¬Þï
­Þð
±eÞÕõb˜PI‹¦é®ï® é¤ ë
ë
„eî
¬Þï
­Þð
±eÞÕõb˜PI‹¦é¤ï&Eü¿¿cœ œ ‹hŸ ËDô  áDôèΟ6ú`ųª“íœ œ ‹hŸ ËDô  áDôèΟ6ú`Å«Ç é¤Ç ÛÀ‚Øœ œ ‹hŸ ËDô  áDôèΟ6ú`8³ª“íÍ Í ‡kÏ ËDÐ £kxæ_6ÂÈå ³ªí é¤í Í Í ‡kÏ ËDÐ £kxæ_6ÂÈå Ö·¿c¤Ã&E¤Ã“íò ò ¯mõ ËDœö Ømœ/[S®oŠˆ³ª¹ª é¤ ò ò ¯mõ ËDœö Ømœ/[S®oŠˆÖ·Ü·¿cÓÄ&EÓÄ“íŸ Ÿ œp¡ ËD´¢ £k´70´%b»³ª¿ 餿 Ÿ Ÿ œp¡ ËD´¢ £k´70´%b»Ö·¿c‚Æ&E‚Æ“íÄ Ä »rÇ ËDÊÈ ØmÊÉ ìrÊÆtãL¾jÖC³ª¹ªï é¤ï Ä Ä »rÇ ËDÊÈ ØmÊÉ ìrÊÆtãL¾jÖCÖ·Ü·¿c½Ç&E½Ç“íõ õ Ãuù ËDãú ïuãû ±ãL²Îß'Úí³ªŸ.–«§
餧
õ õ Ãuù ËDãú ïuãû ±ãL²Îß'ÚíÖ·Ÿ.¹ª¿cŽÉ&Eõ õ Ãuù ËDãú ïuãû ±ãL²Îß'ÚíÖ·òÈÜ·¿c®
®
ˆy±
à@ÿ²
áDÿHQˆ{žáųª“í®
®
ˆy±
à@ÿ²
áDÿHQˆ{žáÅ«Ù
é¤Ù
Ìʂخ
®
ˆy±
à@ÿ²
áDÿHQˆ{žá8Γíß
ß
‡|á
ó0â
ËD×fE* }Ÿé®ÿ
é¤ÿ
ß
ß
‡|á
ó0â
ËD×fE* }Ÿé¤&E—Í¿cÝÝ©“ßËD໊áËŠâÚ“’¤#bO¼‹¤“íÝÝ©“ßËD໊áËŠâÚ“’¤#bO¼‹¤ˆé¤ˆæÍ¿cññòÞƒóˆ ë.Ü#mxÐìÃϵßÃÏÃÏÃÏ&EæÍÄcÃϾÃÏéßßErrorÁà ¬
ÑøÿËO ŸÃÏ¿cµµé·ËD£¸ÂA£¡W Ù½pZÚ¼Î“íµµé·ËD£¸ÂA£¡W Ù½pZÚ ÏØé¤Ø‚Ñ&E‚Ñ¿c×(ˊ¼…޼ŠËD¼÷æ|7ðÚ‰—餓í×(ˊ¼…޼ŠËD¼÷æ|7ðÚ‰—鮰餰¯Ò&E¯Ò¿cÑÑ–ŠÓËDØÔ»ŠØÕËŠØÖÛŠØ×èŠØ0ôœ(¥YC¼Î“íÑÑ–ŠÓËDØÔ»ŠØÕËŠØÖÛŠØ×èŠØ0ôœ(¥YC Ï餒Ô&E’Ô¨Ö·¿c„ˆé %8M8IùJ£é¤“íšÖÌìšÖ šÖ&EšÖ¿cˆˆù„Šù•…‹‘v´§ @nš“í…×&E…׿c»…ù綦Þ~ÇÛé¤“í»…ù綦Þ~ÇÛÁ×&Eä׿c´˜ˆ§ wéðËh餓íãØÌìãØ ãØ&EãØ¿cœœž†Ÿ¿†¾'ö,_ÿí³ÍÙ&EÍÙÃLÍÙýÙƒÚÐLÍÙ©Ú¿c¤¤ë†¥û†ƒ¦†‡ƒß¾¶ôà!“í°°Šˆ²à@¶Û.1v ÏÌé¤Ì°°Šˆ²à@¶Û.1v¼Î&EÒÛ«¨±®ËÉäâíæ«¤ÜÑôþ³ « ð í ³
;
¡ œ Í ¥ò ½Ÿ ÒÄ ìõ ³
®
ãÝôñ¹µØÑŒˆ œ§¤¨3®ÀÉÚâ|âäÑüþ¥í »
Õ¾
êë
Í ­ò ß ÚÄ öõ £ß
ݲµÐêÑøŠˆŸóœŸ°¨8®ÄÉÝâ ¨;®ÆÉßâ#¨>®¡ß˜æÖ¤âÅôÑ¡ þá « ‰
í ´

á
¾
ë
à œ ê Í ò ¼ Ÿ ë Ä ¢
õ Õ
®
ü
ß
ÝÕµ­ýÑðˆ®É°ž æTæi¤« œ ®
ÜÞ¤ŠŒâËÍ
£úH«ªB³»Ö¿ž
¥úH­ªBµ¿Ö¿ùûѦ ¨ þç é «
í ¹
»

æ
è
¾
ë
È Ê œ î ð Í š œ ò À  Ÿ ð ò Ä ¨
ª
õ Ú
Ü
®
ß
Ýöñ÷ñùñžñ ñÙÛµ±³ƒÑÔò°ô²çœùœþœÍϰ¿cÑ&EÙàºãé“íÄ‚Ø
Û(
Ê

È"ø"¥ 
æ 
Œ

¸

å


Ç 
í 

¿ 
ï 
§

Ù

ÿ

ˆ
Ðì
µßÄc¾Ø°

¨
Ìì ³ÃLÐLÌü”« ¢é¤“ؓؔØÎ•؈ä o
³΢½Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¡² —Í®» Õ¬é¬é¬éÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¡² ¬é•êÛ¡² Û¼£éüž¬é
©—Í3Š 
ˆØœ œ ‹hŸ ËDô  áDôèΟ6ú`—ÍaˆÇþ¦ì ¦ìž£
öX ¦ì ¸ÁÅ
Ò×
„ئìê
Šøü  
  œØÞè7Cå È•ê¬é•ê 
,¬é@•ê L¬é•ê
©T¡²E¥¬é¹•ê  Ž¿ œØÞè&lx

Ž£ ©¾ Äó¢èøÈ«ü¾ øÿ "%"
ÆŽ
" 1( Ⱦ  0§¯½ÄÍ×
®˜èêýòù# ˜è ÌÌkÎwakerÁ¸Ï local_wakerÁ¸ÐextÁ¸Ñ_markerÁ¸Ò_marker2Á¸f'EwÚ]¾å±¬éi£é`£éÑ•êŒþ¦ìÞ¦ì¬é4¦ì  œØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ã•êW„¾„¾PinÁ†¾ ˜X$]È=„kt•¿í¿í¿í¦§ôJ§ôS§ôÁÉ•êmt§ôâê •êEÓÛãëóûÞè:BþM¬é°¬éitÁû¦ì 2«¼Ê œØàë
¢ú

œØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ãg ˜èp §ôy  ¬éצì)ûsw°œØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÞè
„¾„¾ùõ†¾ ˜X$]È=„kt•–èM
§ôV
 £éû¦ìe¦ìšŸöwíö¿í§ôš•ê>§ô¬€øÞèÉ
Ñ
–èÚ
¬éã
¬éì
¬éõ
¬éþ
¬é ¬é ¬é þ$ ׬é¬éƒøê ûò¦ì    óë¬ Ÿì¹íŽ íí•ê<úïȬé¦ìU û,ž¢Û ¬é:¦ìŒ ûcÕÙ
\ÿ 餔ù é¤ ŠöüÏ>šÖ PhantomDataÁFu\»Ÿé¤Q 餤õ é¤ ˆ´üÇDãØ¼j ü™‹J ðýÙƒÚ¥è ÍÙ ªBªBö­B«²÷<®B÷<9)
-ÜnLýÙƒÚ&FÙ³
׊²ƒâЏƒ‚‹ü«‹+ ñýÙƒÚ ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ã²ƒ¸ƒ ü£‹4<£‹
Ç€ñýÙƒÚ¦…ô†O
AØ‹

ˆØÊ€Ê€PollFnÁÌ€±À€¡Ab«SÁh©‡œ
^øâ£‹:ë‡~ 뇢
öX ë‡ ·

ÀÄ ÑÖ
„Øë‡
é Œ 
÷û
 
 Ã
! œØ7Cè Èã‹ œØ&Ýé𪸠 / 5
ðPøã™‹J # áÜ‹  â‹ãâ‹ 
áêó=#*3=
®•ƒP  •ƒŠ§ô²ƒL׊¸ƒ4âŠ,‚‹ë‡j뇺©‡Û²ƒä¸ƒíü†öë‡>ú°©†¹„¾„¾ùõ†¾ ˜X$]È=„kt•‚‰ô‚‰ý‚‰§ô­§ô§ô!)ÏÖ§ôAI£« þ$ÜŠ²ƒbufferÁ4¸ƒlimitÁAfÖhîkû|ë‡ N_m œØƒŽ
ðMT[fm¥úÍ•ƒÖ§ôßçEë‡Jîû™‹jnÑ©†5„¾„¾ùõ†¾ ˜X$]È=„kt•“ƒp§ôy²ƒæ¸ƒäë‡B뇩‡³ü†¼©†fo‚‰x§ô/§ôšô“ƒý þ R²ƒÖ¸ƒîˆ­Ö¯î²ûÃë‡ ØŸ‡ä‡Uüˆ\°‰cÖîë‡îûÕ=A¤Rë‡Wîû
uyÜùï·e
éï·e
¾ÈÚùïÕúe«Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÈÚ ÈÚõ—µæùîfa©®®£°à@¨it§ÅLS¶ÈÚáî¢fa["«õ—õ—ùïðe
éïðe
ÐÈÚ28ù瑩e
 ¬ú—Ž™2õ— ï¿eùïíÔeùï‚!­e
 ®‹›%õ— ï!eR ïÀ$eùïÛôe«õ—!$¬‹›ó®‹›¨W”¢ ñò%ÃÏ18?œÜ é¤)šÖ5¼=D¬à é¤)ãØ5¼=D
é§¾À¸Ø©1Lñ¨ÙÃ5,¬ öþ„ÿù ˆù„ˆÃ7$ü ¥»…$‚¦Ä8<© ´¼´½ž†œŠˆŒ•°¦StreamÁ4Ñ&E§©“ÝÿÞƒ<…ñüØüù Stream utilities for Tokio.ÁúüMJ A `Stream` is an asynchronous sequence of values. It can be thought of asÁüëGD an asynchronous version of the standard library's `Iterator` trait.Á³úü·\Y This crate provides helpers to work with them. For examples of usage and a more in-depthÁü”=: description of streams you can also refer to the [streamsÁüÒLI tutorial](https://tokio.rs/tokio/tutorial/streams) on the tokio website.ÁŸúì£ # Iterating over a StreamÁÁúüÅNK Due to similarities with the standard library's `Iterator` trait, some newÁü”HE users may assume that they can use `for in` syntax to iterate over aÁüÝLI `Stream`, but this is unfortunately not possible. Instead, you can use aÁüª  `while let` loop as follows:ÁËú ```rustÁüÛ2/ use tokio_stream::{self as stream, StreamExt};ÁŽ úü’ /, # #[tokio::main(flavor = "current_thread")]Á¼Â  # async fn main() {ÁüÚ 1. let mut stream = stream::iter(vec![0, 1, 2]);ÁŒ
úü
1. while let Some(value) = stream.next().await {ÁüÂ
" println!("Got {}", value);Á

 # }Á
 ```Áû
úüÿ
(% # Returning a Stream from a functionÁ¨ úü¬ JG A common way to stream values from a function is to pass in the senderÁü÷ PM half of a channel and use the receiver as the stream. This requires awaitingÁüÈ GD both futures to ensure progress is made. Another alternative is theÁü
NK [async-stream] crate, which contains macros that provide a `yield` keywordÁüß
-* and allow you to return an `impl Stream`.Áúü‘0- [async-stream]: https://docs.rs/async-streamÁÂúüÆ52 # Conversion to and from `AsyncRead`/`AsyncWrite`Áüúü€FC It is often desirable to convert a `Stream` into an [`AsyncRead`],ÁüÇMJ especially when dealing with plaintext formats streamed over the network.Áü•IF The opposite conversion from an [`AsyncRead`] into a `Stream` is alsoÁüßC@ another commonly required feature. To enable these conversions,Áü£EB [`tokio-util`] provides the [`StreamReader`] and [`ReaderStream`]Áüé)& types when the io feature is enabled.Áúü—QN [`tokio-util`]: https://docs.rs/tokio-util/latest/tokio_util/codec/index.htmlÁüéC@ [`tokio::io`]: https://docs.rs/tokio/latest/tokio/io/index.htmlÁü­MJ [`AsyncRead`]: https://docs.rs/tokio/latest/tokio/io/trait.AsyncRead.htmlÁüûOL [`AsyncWrite`]: https://docs.rs/tokio/latest/tokio/io/trait.AsyncWrite.htmlÁüË^[ [`ReaderStream`]: https://docs.rs/tokio-util/latest/tokio_util/io/struct.ReaderStream.htmlÁüª^[ [`StreamReader`]: https://docs.rs/tokio-util/latest/tokio_util/io/struct.StreamReader.htmlÁü® üÐ"|”
é§¾ÀÍ ¸Î Ø©1Í ¨ÙÃ5Ì öþ„Ë ÿùÊ ˆù„É ˆÃ7È ¥»…Ç ¦Ä8Æ ´¼´Å ½ž†Ä œŠˆà °¦ˆ ½ &E§©“¼ ÝÿÞƒ» ñá
ä
ç
T—4œ4
  »  ),   ', 8÷$& "8÷$#
(*+ . ¹, 8 9 ²+ G H \8âI L [8»<M U7fsÁ$W+ j k 8äDl t 8docsrsÁ4u$ {8Ó}  8â  8»<… 7Ä»$, ¤8÷
³ľ × ˆ Ý ì, Þ ß ê, à8÷& å8÷
ë*î ñ , û ü ÿ+ Š  ¤8⌠ £8»< ˜7Œ+ ² ³ ã8ä ¼ â8ø»$ Ã8ÓÅ È á8âÉ Ì à8» Õ7Œ, ñ8÷
¤‹   É ¦ µ, § ¨ ³, ©8÷& ®8÷
´*· º Ç, Ä Å À+ Ó Ô é8âÕ Ø è8» á7+ ÷ ø ¤8ä  £8ø»4‚$ ˆ8ÓŠ  ¢8⎠ ¡8»< š7, ²8÷
Á¬Ì â  è ÷, é ê õ, ë8÷& ð8÷
ö*ù ü ,   +   ¬8â š «8»< £7timeÁ+ º » è8ä Ä ç8ø»$ Ë8ÓÍ Ð æ8âÑ Ô å8» Ý7¬Ä, ö8÷
¬D ¦ Ñ ¬ », ­ ® ¹, ¯8÷& ´8÷
º*½ À Ï, Ê Ë È+ Ù Ú ð8âÛ Þ ï8» ç7ç+ þ ÿ ¬8äD€ ˆ «8ø»4‰$ 8Ó  ª8â ˜ ©8»<™ ¡7ç, º8÷
É¼Ô ì  ò , ó ô ÿ, õ8÷& ú8÷
*ƒ  ,   + Ÿ   ¸8â¡ ¤ ·8» ­7Ô+ Æ Ç ö8ä Ð õ8ø»$ ×8ÓÙ Ü ô8âÝ à ó8» é7Ô, 8÷$… 
„¤ü52 Wrappers for Tokio types that implement `Stream`.Á '´ÍÂ@tñ¨&€A¼®®AÊBtœÉÈùCl„
âátYü7! Error types for the wrappers.Á4a„É
¨ˆ 4 &E 
§ùõ!„¾ k<6Ì ·$?œØ ޤD]ŒM lalPL*CE46ÜJ'Ìç¥Íìé¤ ì¼¤ü®%ü‡" Create a new `ReceiverStream`.Áµ„¥¼¤
é¤recvÁ$¹ü¥ &üþ" Get back the inner `Receiver`.ÁT¬ ¼¤„¥
餼ù
üì ?< Closes the receiving half of a channel without dropping it.Á°
úü¸
KH This prevents any further messages from being sent on the channel whileÁüˆ HE still enabling the receiver to drain messages that are buffered. AnyÁüÕ FC outstanding [`Permit`] values will still be able to send messages.Á  úü¨ KH To guarantee no messages are dropped, after calling `close()`, you mustÁüø ?< receive all items from the stream until `None` is returned.Á¼
úüÄ
0- [`Permit`]: struct@tokio::sync::mpsc::PermitÁ,€ ¼¤ 
é¤$‹ü¸$¥¾Ï ½¼¤&F&G&Hé¤ü÷XŽ„¾„¾ùõ†¾ ˜X$]È=„kt• ޼¤ ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¼¤&F 
é¤cxÁžüÝ-üþFC Returns the bounds of the stream based on the underlying receiver.ÁÉúüÑ;8 For open channels, it returns `(receiver.len(), None)`.Áúü™KH For closed channels, it returns `(receiver.len(), Some(used_capacity))`ÁüéEB where `used_capacity` is calculated as `receiver.max_capacity() -Áü³HE receiver.capacity()`. This accounts for any [`Permit`] that is stillÁÜ€ able to send a message.Á úü¨0ÛÔ ¼¤Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ê
é¤ü0¥¾Ï ¼¤âü¸  ¼¤ „¥ Â
é¤üø0¥!!¾Ï ý¼¤"å"ü¯( ¼¤ „¥  ¹
"é¤üû/¥$$¾Ï ¼¤%ë%ü±"$´„¥¼¤##
%é¤ÐÏäã ”‚t†
®ˆ 4 &E'(§ùõ! „¾')k<6 Ì'+·$? œØ',·¥Œ] ¬P'-l al PL* CE46üJ$ (ü¬" ¥//¾Ï ± ç¥012ü… . üÕ+ ( Create a new `UnboundedReceiverStream`.ÁŒ ­¦ç¥..
0é¤ÐÏ$ üŽ
/ üÞ + ( Get back the inner `UnboundedReceiver`.ÁT•
祭¦..
1é¤$ 
¼Ã üÞ
? ÙТ úüª K ®Ñüú D A still enabling the receiver to drain messages that are buffered.Á,Ê  ç¥. Ð .
2é¤ ü‚
- ¥44¾Ï
ç¥567&F&G&H67
33é¤üÊ
X LÍ
„¾„¾ùõ†¾ ˜X$]È=„kt• ç¥ ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙç¥&F3 å
3
6é¤
âÙñ
ü¸- üÑF úÙœ úü¤; ÖÚä úüìG D For closed channels, it returns `(receiver.len(), receiver.len())`.ÁL» ˜ ˜ç¥ýÞ3 Å 3
7é¤ üšB ¥99¾Ï Ÿ ç¥:â:üã) 4æ  ç¥ ­¦8 í 8
:é¤ ü¬B ¥<<¾Ï ± ç¥=å=üõ1 4ø š šç¥ š­¦; ÿ ;
=é¤$„ üÊA ¥??¾Ï Ï ç¥@ë@ü’+ $• ­¦ç¥>>
@é¤ÐÏ üž'6EZo„Óëš«ÅÞôœ´Êãÿ¨Ö£¼ØFutureÁ4
‚ØBCˆ 4,
&EBD¢DLG
æBY€ILe
¤BnæL,
âƒÅO<¹
BѸ
BÒÝS4ì
Ñê¾VL™
þƒ¢YT¹
« B¯]$Þ
í ªÃ_û

Ä¡bD£
¾
Ý„e,È
ë
óh$ä
œ B‡k$ƒ
Í ¯mL®
ò ³œp$Ò
Ÿ É»rLý
Ä âÃu$¡
õ þˆy<Ä
®
B‡|Dî
ß
§©“
Ý·é„„
µ¸DurationÁD¬
­ÖBºã¦
ÑeB»4Dæ
ÉBÖ×
B×–Š
Ñð¤
+¤
<5
9
òˆ 4 &EEF§¨ñ4& ‚ØEG
PhantomPinnedÁl@ ”íEHö•íEHùõ^ „¾EIreadyÁ,t ¥‚EKk<{ ÌEL·$„ œØEM pin_projectÁ\¡ ENl Ϥ ¾Ü2 £tS Tg ln]_N 7ü·, ÅPÎQRPQRÎ쳪À Í칪 Ì ê©S¼ !#üê3 ø B ųª¹ªê©OO
Sųª¹ªËD4ü ±  ü†r 8ÎUVVU¹ª³ª&F˜" ±ù  &E³ª “í³ª “"¹ª‰û¼à  ù º«WXƒØ„ØXbd\ÿ 4„ TTü˜I $ œž„¾„¾ùõ†¾ ˜X$]È=„kt• œº« ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åžœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ãº«ƒØT ª T
X8³ª¹ª âÙ tB
H<S
W
°ˆ 4 &EZ[§¨ñ4& ‚ØZ\öl@ ”íZ]ö•íZ]ùõ^ „¾Z^æö,t ¥‚Z`k<{ ÌZa·$„ œØZb¥÷ Zcl µ¤ ¤Ü2 •tS qTg bdSUD 7ü·, ÅeÎfggef ùÀ ±ù Ì ‘¬h¼ üê3 ø BŠú¹ª‘¬dd
hųª¹ªËD4ü ±  ü†r 8ŸÎjkjkŸû ±ù  ¦û µû Æû¼à  ù Ù­lmƒØ„ØmFH\ÿ 4„ iiü˜I $  ¡¢„¾„¾ùõ†¾ ˜X$]È=„kt•  Ù­ ¡ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾å¢œØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÙ­ƒØi ª i
m8³ª¹ª âÙ t`

Lq
,u
ç¯]$
í opªˆ 4(
&Eoq§ùõ@
„¾oræö,V
¥‚otk<]
Ìou·$f
œØov¥÷
o
Žl!
|t5
kTI
\^MO>@ìq
1´Ð
¥y¦zyz¾Ï Õ
Íìï Ø
‡¯{üí\
û
Bé¤ï‡¯xx&Eé¤
&Eï
{é¤ï¬ ÿ
­ 
üþU
¥}¦~}~ï&F¡²
èˆ 
Ó‰4­
≴¼
¾Ï ƒ
‡¯&F&G&H!#FH

||¡²üôQ

£¤¥„¾„¾ùõ†¾ ˜X$]È=„kt• £‡¯ ¤ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾å¥Ÿö| 
|
é¤ï$
âÙ


üŽ-
L
¦ ¦‡¯ýÞ| 
|
é¤ï
d„
È
´“

Çœˆ 4 &E§¨ñ4&‚ØÊ€\AˆÊ€ˆölN”íö•ííhëŠùõ|„¾æö,’¥‚k<™ÌŽ·œØ¥÷\¿l¤öd2åç¾ÀLb™tq‰T…y{giUWì­FüÊ2ôÎ Convert from a [`Stream`].ÁíúüñA> This trait is not intended to be used directly. Instead, callÁü³85 [`StreamExt::collect()`](super::StreamExt::collect).Áìú”ð # ImplementingÁƒúü‡OL Currently, this trait may not be implemented by third parties. The trait isÁü×KH sealed in order to make changes in the future. Stabilization is pendingÁü£&# enhancements to the Rust language.Á¥ÎìüÊ5È¢•é®ÌãÍìé® ßš•>­•/š•J­•;-/ü `¥¦¾Ï èˆ Ó‰ï¡²œÍ À±/146üè Dö Bé¤À±
é¤ïËD4ú ü½ k¥˜¦˜¾Ï  èˆ Å Ó‰4…
Í–œ”
À±šƒØ„Ø469;
4´
ïüÅ
B
§¨©„¾„¾ùõ†¾ ˜X$]È=„kt• §À± ¨ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾å©œØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ãï Û

é¤ï
âÙç
\–Ô¦üÅ&Ÿ ¡¢ÊËÌÍ¢ ¡¼ò”÷žžü•HÎÎÏÁ ¢  h»³ßžž
  £_lowerÁ4¸_upperÁ4ÇüæGªÜœ ªž ž
¡ ð _collectionÁ\…_itemÁ,üÈ6«Üœ «ž öž
¢ Ôšü…,¥¤¤¾Ï Šàé¤Tвü¶8¥¦¦¾Ï »¾Ÿв§¨©ªÊËÌͪ¨©8:¼õ”ú¥¥вüœRÜœßв¥¥
¨é¤ ª§œ4¿µœü’H4•¬Üœ ¬в餥 ½¥
©é¤ œôOT±÷ü¡C­Üœ ­вв¥ Î¥
ªé¤ ­ôOTÂüŽ ¥¬¬¾Ï ˜³
ü³,¥®®¾Ï ¸˜³¯°±²ÊËÌͱ²°02¼æ”ë­­˜³üQTܜߘ³­­
°é¤ lowerÁ,°µœüŽH4‘®Üœ ®˜³é¤­ ¹­
±é¤ ˜ôOT­÷üCD“¯Üœ ¯˜³˜³­ ½­
²é¤ œôOT±üý"¥´´¾Ï Ÿ´
ü¤.¥¾Ï ©Ÿ´·¸¹ºÊËÌ͹¸º02¼Ù”Þµµ˜³ü€Pܜߘ³µµ
¸é¤ ޤupperÁ,±ü¸H°Üœ °˜³é¤µ ãµ
¹é¤ ÂôOT×÷üè E±Üœ ±˜³Ÿ´µ •!µ
ºé¤ ô ôOT‰!ü¯"N¥¼¦½¾½¾¼¾Ï ´"èˆ ·"ÍìÕµ º"ïé¤lð"ƒµ57:<68ü‚#_¥À¦ÁÂÂÀÁ¾Ï ‡#èˆ Š#©« #º«lÓ#ƒµÃÄÅÆÊËÌÍÅÄÆHJMORT¼è#”í#¿¿Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ïé¤ÊÕµü©$‰T¬$ܜ߾­¿¿
Äé¤ïÕµ À$¤,Ý$þ§,ó$üú%„4ý%²Üœ ²ƒµÛµÊÛµ¿ ¶&¿
Åé¤ïÕµ &ôOTª&÷$Ý&üï)[Dò)³Üœ ³»¯ƒµ¿ œ*¿
Æé¤ïÕµ û)ôOT*¬ï,4þ,ÈÎÏÜž-4‘-t¨-È¥ÉÉÈš•üž-Á• ·-Èš•"š•ËÌÍÊËÌÍÍ좕é®ÊÄÖ.—²ÍËÌce¼Ö.”Û.ÈÈüž/‘T¡/ܜߟ²ÈÈ
Ë¢•é®åD¹/¤,Ù/þ§,ó/üÌ1Z4Ï1´Üœ ´Ÿ²é®È ö1È
Ì¢•é®åDÖ1ôOTê1÷$•2üâ2SDå2µÜœ µŸ²¢•È Ž3È
Í¢•é®åDî2ôOT‚3œí3Dø3Üœ¢  h»³Ï-)ÎÎÜœ
!!q!t!TÐ

Öˆ 4 &EÓÔ§× `ÓÕùõ2„¾ÓÖæö,H¥‚ÓØk<OÌÓÙ·$XœØÓÚ¥÷\uÓÛlL„t'tT;ceRTACìc2üìBÎÝÞÝÞÍìÖ·ñÍìÜ· õ¿cÖ·œ·ßÀcß4602üµ8¸·¸ œ· · c cˆ¢cµ
 `£c«² `àB¤GS
¸Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈÎÏ éBLÜ ¼Ü
ßÖ·Ü·± ÃÌÛÎáââáޏàŸ¸ 䜷ãüû+BÖ·Ü·œ·àà
ãÖ·Ü·ËD4± üÍ[Îåæåæ¹Ü· ¹Ö·&F˜"Ÿ¸ Ö&EÖ·4€¹“"Ü·޽ÄޏÒœ·çèé&F&G&Hèé"$_aä䙽üÊVº»¼„¾„¾ùõ†¾ ˜X$]È=„kt• ºœ· »ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾å¼œØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ™½ä åä
èÖ·Ü·âÙñüƒ
-L†
½ ½œ·ýÞä
ä
éÖ·Ü·$

”'tõ

ƒ ˆ 4 &Eëì§× `ëíùõ2„¾ëîæö,H¥‚ëðk<OÌëñ·$XœØëò¥÷\uëólL„t'tT;ceRTACìc2ü÷EÎõöõöޏüŸ¸ °¸Ó¸÷Àc÷#%(*üÃ8ƾ¿À ¾Ó¸ ¿ c cˆ¢cµ
 `£c«² `àB¤GS
Àò¹ô Êô
÷Ö·Ü·± ÑäìÎùúúùޏñŸ¸ õÓ¸ûü+BÖ·Ü·Ó¸øø
ûÖ·Ü·ËD4¡± ­üáeÎýþ¥ÿýþÿÜ·™½˜"Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¥Ÿ¸ êÍì‰É íµ½“"Ü·»Èä©ޏæÓ¸&F&G&H"$df`büü‰ÉüáOÁÂľ„¾ùõ†¾ ˜X$]È=„kt• ÁÓ¸ ÂÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åÜ؞؟ØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÄÈü üü
Ö·Ü·‰ÉâÙˆü 
-
Ä ÄÓ¸ýÞü ­
ü
Ö·Ü·‰É
¬
?-D¥

¸ ˆ 4 &E§¨ñ4&‚Øöl@”íö•íùõ^„¾ˆæö,t¥‚Šk<{Ì·$„œØŒ¥÷lǤ´Ü2£tS{TgjlY[H9üØ#ÎޏÝÍ쇺 á±ù ä±¹$& "%'ü‚4BÖ·‡º¹ª±¹ŽŽ
Ö·‡º¹ªËD4”initÁ$ ± ©ü¼d骇º™½˜"‡º žÍРűù ȵ½“"¹ªÅÒ¼ˆޏÁ±¹˜ƒØ„ؘUWZ\‡ºü½IÅÆÇ„¾„¾ùõ†¾ ˜X$]È=„kt• ű¹ ÆÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åǜ؞؟ØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ã±¹ƒØ Ï
˜Ö·‡º¹ªâÙÛ„³
ˆ1DÆ

Bí ó ˆ 4 &Eš§¥÷\*šœùõE„¾šæö,Z¥‚šŸk<aÌš ·$jœØš¡l‚ìol;_LNNP=?,.ü¡$¥££¾Ï ¦Ó‰¢»¤üÌ'Ú餢»¢¢
¤é¤ËD4Þüº/¥¦¦¾Ï ¿Ó‰¢»§¨©&F&G&H©¨*,¥¥¡²üŠULÈÉÊ„¾„¾ùõ†¾ ˜X$]È=„kt• È¢» ÉÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åÊŸö¥ ¥¥
¨é¤$›âÙ±üÑ-Ë Ë¢»ýÞ¥ Þ¥
©é¤
£4<å
é
B
ˆ 4 &E«¬§× `«­ùõ2„¾«®k<HÌ«°·$QœØ«±¥÷\n«²lLmt']T;NP=?ì\.üÔ?δµ´µޏÙŸ¸ ݰ¸нÀc#%(*üš8ÌÍÎ Ìн Í c cˆ¢cµ
 `£c«² `àB¤GS
Îò¹³ ¡³
Ö·Ü·± ¨´£Î¸¹¸¹ޏ¨Ÿ¸ ¬нºüÀ+ÎBÖ·Ü·н··
ºÖ·Ü·ËD4Ò± Þü‘Wμ½¥¾¼¾½Ü·»È˜"‰É 柸 š›É µ½´É¤Óޏн¿ÀÃ&F&G&HÃÀ"$OQTV»»‰ÉüƒOL†ÏÐÑ„¾„¾ùõ†¾ ˜X$]È=„kt• Ïн ÐÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åў̻ ž»
ÀÖ·Ü·‰É$”âÙªÀ<closure_kind>ÁÁ<closure_signature>ÁÁ<upvars>ÁÁÁÀÁÖ·Ü·‰ÉêÀÄÈ „¾„¾ùõ†¾ ˜X$]È=„kt• нÐÀÃåÂÜåÂúåÂÂÀÂÖ·Ü·‰É»È‰É¼çü€-Ò ÒнýÞ» »
ÃÖ·Ü·‰É
Ö:l
L…

Ã
ˆ 4 &EÅÆ§× `ÅÇùõ2„¾ÅÈk<HÌÅÊ·$QœØÅË¥÷\nÅÌlLmt']T;NP=?ì\.üåDÎÎÏÏÎޏꟸ î°¸½¾ÐÀcÐ#%(*ü°8³ÓÔÕ Ó½¾ Ô c cˆ¢cµ
 `£c«² `àB¤GS
Õò¹Í ·Í
ÐÖ·Ü·± ¾ÜØÎÒÓÒÓޏÝŸ¸ á½¾Ôüú+ˆBÖ·Ü·½¾ÑÑ
ÔÖ·Ü·ËD4Œ± ˜üÐdÎÖ×¥Ø×ØÖ³ÈŸ¸ Ù›É Üµ½´Éä—ޏÕ½¾ÙÚÜ&F&G&HÜÚ"$OQTVÕÕ‰ÉüÏKÖר„¾„¾ùõ†¾ ˜X$]È=„kt• Ö½¾ ×ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åØžÌÕ æÕ
ÚÖ·Ü·‰ÉâÙòÚÃåÛÜåÛúåÛÛÚÛÖ·Ü·‰É­ç Ü·üš-LÙ Ù½¾ýÞÕ §Õ
ÜÖ·Ü·‰Éœ˜
"@L®

ë
ñ
¯]$í Þߪˆ 4(&EÞà§ùõ@„¾Þák<VÌÞã·$_œØÞä¥÷\|Þ弄l!pt5]TINP=?ìj.´¤¥ç¦èçè¾Ï ©èˆ ¬ü¿éüÁ\ÏBé¤ïü¿ææÓ‰â‰4–
éé¤ï¬ Ó­ ÙüœU¥ë¦ìëì¶Šèˆ ¤Ó‰â‰´Ú¾Ï ¡ü¿íîï&F&G&Hïî"$GIêꡲü’QL•ÚÛÜ„¾„¾ùõ†¾ ˜X$]È=„kt• Úü¿ ÛÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åÜŸöê ©ê
îé¤ïâÙµüî-Ý Ýü¿ýÞê ûê
ïé¤ïüï ­ÞÞßàᄾ„¾ùõ†¾ ˜X$]È=„kt• Þ餄¾„¾ùõ†¾ ˜X$]È=„kt• ßï àÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åáŸö¥ñ¦òòñ
¾Ï ü èˆ ÿ Ó‰
≴… ¶Š 
ðé¤ïfirstÁ,‡
secondÁ4Ÿ
âÙ¸
UWZ\
•EDÐ

 ¥ ˆ 4 &Eôõ§¨ñ4&‚Øôööl@”íô÷ö•íô÷ùõ^„¾ôøk<tÌôú·$}œØôû¥÷ôül¯¤œÜ2tScTgTVCEìˆ5üá!ÅþÎÿþÿ ùêÛÀæü‰-BŠúÛÀýý
ųªËD4›ü98âÎâ ù¦ûµû‰ÂƒƒØ„Ø,.Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ‹ûüõIãä儾„¾ùõ†¾ ˜X$]È=„kt• ã‰Â äÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾ååœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ã‰ÂƒØ 
8³ªâÙ
DIDë

 Ñ ˆ 4 &E§× `ˆùõ2„¾æö,H¥‚k<OÌŒ·$XœØ¥÷\uŽlL„t'tT;ceRTACìc2üç:Îޏì°¸T–¤ÃÀcü¨8«æçè æ¤Ã ç c cˆ¢cµ
 `£c«² `àB¤GS
èò¹ ¯
Ö·± ŒÌÎޏѤà 
üä7òBÖ·¤Ã
Ö·ËD4ö£kL‚üÊ2Îޏϵ½¤Ã˜&F&G&H˜*,™½üžXéê넾„¾ùõ†¾ ˜X$]È=„kt• é¤Ã êÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åëœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¤Ã&F ¹
˜Ö·âÙÅüŠ
-L
ì ì¤ÃýÞ

Ö·$˜
É ÃåšÜåšúåšššÖ· ¤Ã
{NtŠ

 ÷ ˆ 4 &Eœ§× `œžùõ2„¾œŸæö,H¥‚œ¡k<OÌœ¢·$XœØœ£¥÷\uœ¤lL„t'tT;ceRTACìc2üÿEΦ§¦§ޏŸ¸ ˆ°¸ÓĨÀc¨#%(*üË8Îíîï íÓÄ î c cˆ¢cµ
 `£c«² `àB¤GS
ïò¹¥ Ò¥
¨Ö·Ü·± ÙäôΪ«ª«ޏùŸ¸ ýÓĬü—3¥BÖ·Ü·ÓÄ©©
¬Ö·Ü·ËD4©ØmLµü«^ή¯®¯ðÜ· 𙽘"$„Ÿ¸ ´µ½ð“"Ü·¬—Äðޏ°Óݱ²&F&G&H±²"$XZL$•­­™½ü«Tñò󄾄¾ùõ†¾ ˜X$]È=„kt• ñÓÄ òÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åóœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÓÄ&F­ ­
±Ö·Ü·âÙÎüÈ - ô ôÓÄýÞ­ Õ ­
²Ö·Ü· ¬¢
TDº

 £ ˆ 4 &E´µ§´×- `´·ùõA„¾´¸k<WÌ´º·$`œØ´»¥÷\}´¼l“LL'rt6bTJSUBDìk3üï:ξ¾ޏô°¸‚Æ¿Àc¿ü°8³õö÷ õ‚Æ ö c cˆ¢cµ
 `£c«² `àB¤GS
÷ò¹½ ·½
¿Ö·± ¾ŒÔÎÁÁޏÙ‚ÆÂ 
üì7úBÖ·‚ÆÀÀ
ÂÖ·ËD4þ£kLŠüÒ2ÎÄÄޏ×µ½‚ÆÅÆÈ&F&G&HÈÆ*,L‹$ÃÙ½ü¦Xøùú„¾„¾ùõ†¾ ˜X$]È=„kt• ø‚Æ ùÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åúœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ‚Æ&Fà ÁÃ
ÆÖ·âÙÍÆÃåÇÜåÇúåÇÇÆÇÖ·°çêÀ „¾„¾ùõ†¾ ˜X$]È=„kt• ‚Æü‚ -L… û û‚ÆýÞà Ã
ÈÖ·$ 
qYtÙ

 Ê ˆ 4 &EÊ˧נ`ÊÌùõ2„¾ÊÍk<HÌÊÏ·$QœØÊÐ¥÷\nÊÑlLmt']T;NP=?ì\.ü„EÎÓÔÓÔޏŸ¸ °¸½ÇÕÀcÕ#%(*üÐ8Óüýþ ü½Ç ý c cˆ¢cµ
 `£c«² `àB¤GS
þò¹Ò ×Ò
ÕÖ·Ü·± Þä ÎרØ×ޏ¥Ÿ¸ ©½ÇÙüÃ3ÑBÖ·Ü·½ÇÖÖ
ÙÖ·Ü·ËD4ÕØmLáüß^ÎÛÜÜÛÿÜ· ÿ™½˜"Ÿ¸ èµ½4•ÿ“"Ü·«­Ĥޏä½ÇÝÞá&F&G&HáÞ"$XZÚÚ™½üßX„¾„¾ùõ†¾ ˜X$]È=„kt• ½Ç ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ½Ç&FÚ úÚ
ÞÖ·Ü·âÙÞÃåßÜåßúåßßÞßÖ·Ü·´¦ „¾„¾ùõ†¾ ˜X$]È=„kt• ½ÇÞÃåàÜåàúåààÞàÖ·Ü·»ÈêÀܲü‰
-
ƒ ƒ½ÇýÞÚ
Ú
áÖ·Ü·$—
–
í_D‰
$
 ü ˆ 4 &Eãä§× `ãå¨ñ45‚ØãæùõL„¾ãçk<bÌãé·$kœØãê¥÷ãëlL„¤'ttAcTUTVCEìv4ü¢JÎíŸ.îïîïíޏ§ÍìØÉ«±ù °°¸ŽÉðÀcð460257üó8ö ŽÉ  c cˆ¢cµ
 `£c«² `àB¤GS
ò¹ì úì
ðÖ·ØÉ¹ª± ü—!ÎòŸ.óôóòôޏœý¶ ±ù ¥ŽÉõ "%'ü¿+ÍBÖ·¹ªŽÉññ
õÖ·ØÉ¹ªËD4ѱ ÝüÌrÎ÷øŸ.ù÷øùÜ·»È˜"òȺŸ¸ ÕÍìòÈØµ½4‡‚ØòÈ´É´§ޏÑóÉúûü&F&G&Hüû"$ikegööòȃØüãUˆ„¾„¾ùõ†¾ ˜X$]È=„kt• óÉ ˆÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙç¼ö úö
ûÖ·Ü·òÈâÙü¢-Š ŠóÉýÞö ¯ö
üÖ·Ü·òÈüÃåýÜåýúåýýüýÖ·Ü·òȬ‘ßü†T›
rfd¨


·
‹h$œ ÿˆ 4(&Eÿ§¨ñ4C‚Øÿöl]”íÿƒö•íÿƒùõ{„¾ÿk<‘Ìÿ·œØÿ¥÷ÿˆ¼Êl!¶¤5£ÜOtpjT„\^JLì¥;ü‘$ŊΊ ùšÌÊŒü¼-ÊBŠúÌÊ
ŒÅ³ªËD4ÎüÕW8¥ŽÎ޹Ì&FÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
é®Õµœô©« ÝÎì¹Ìà&E¹ÌÜíÁ• Ú“í¹Ì,‹ú˃؄Ø-/bd^`4¸Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙé®ÕµüÜIŒŽ„¾„¾ùõ†¾ ˜X$]È=„kt• ŒúË ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åŽœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃúËƒØ î
8é®Õµ¹ÌâÙúŒº
bkdÎ


ã
ùõ„¾k<#Ì·$,œØ˜ˆ 4F&E¥÷\dš¯]$‰í ª©1Lš¨œÙl™LŠŒy{¤8jìR[¼vL„“9Üú¥žž¾Ï ÿÓ‰4‚—ÍŸ üœ$ªé¤—Í
Ÿé¤ËD4®üÃLü–(% Peek at the next item in the stream.Á$Ð —Í餡 Õ“íé¤,‰
 é¤Þ{€Éã 8ÉÉ ¢é¤¥èÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ 8¡² 8—ÍÍìé¤8¡©‚اѸ§ÑƒØÄÐÊŸÑкÑÖÉÑÜ †s <coroutine_kind>Á¢ <resume_ty>Á¢
<yield_ty>Á¢ <return_ty>Á¢ú墢 ˜èüÃ&¥¤¤¾Ï ÈÓ‰—Í¥¦&F&G¦ "££¡²üŠTL„¾„¾ùõ†¾ ˜X$]È=„kt• —Í ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ—Í&F£ ¡£
¦é¤$—âÙ­”ä
ëpÜ–
üÁJ
G An extension trait for the [`Stream`] trait that provides a variety ofÁüŒ $
! convenient combinator functions.Á±
úüµ O
L Be aware that the `Stream` trait in Tokio is a re-export of the trait foundÁü…
K
H in the [futures] crate, however both Tokio and futures provide separate矄
O
L `StreamExt` utility traits, and some utilities are only available on one ofÁü¡ N
K these traits. Click [here][futures-StreamExt] to see the other `StreamExt`Áüð 
 trait in the futures crate.Á
úü” L
I If you need utilities from both `StreamExt` traits, you should prefer toÁüá J
G import one of them, and use the other through the fully qualified callÁĬ
 syntax. For example:Á
´ªüÍ
 // import one of the traits:Áüî
#
use futures::stream::StreamExt;Áü’/
¨¼Â
ȨÚ
úüÞ.
+ let a = tokio_stream::iter(vec![1, 3, 5]);Áü.
+ let b = tokio_stream::iter(vec![2, 4, 6]);Á¼
úüÀ?
< // use the fully qualified call syntax for the other trait:Áü€6
3 let merged = tokio_stream::StreamExt::merge(a, b);Á·
úü»G
D // use normal call notation for futures::stream::StreamExt::collectÁüƒ0
- let output: Vec<_> = merged.collect().await;Áü´/
, assert_eq!(output, vec![1, 2, 3, 4, 5, 6]);Á
¤ª
´ªô
úìø
 [`Stream`]: crate::StreamÁü–&
# [futures]: https://docs.rs/futuresÁü½X
U [futures-StreamExt]: https://docs.rs/futures/0.3/futures/stream/trait.StreamExt.htmlÁL 
¨¨š•ü–³«
&E¢•
¨š•*ûãš•6û㪭°³¸º½¾¿ÁÂÄÆÈÊÍÏÐÑÒÓ©ª­°³¸º½¾¿ÁÂÄÆÈÊÍÏÐÑÒÓ°ÆÑ³¾ÁÄÏÒ©¿ÊÂͺнÈÓª¸­üÆC
ü¸F
C Consumes and returns the next value in the stream or `None` if theÁ¼ƒ
 stream is finished.ÁŸ
ú”§
 Equivalent to:Á¾
ú
```ignore矯3
0 async fn next(&mut self) -> Option<Self::Item>;Á<
´ªœ
úü¤D
A Note that because `next` doesn't take ownership over the stream,ÁüíK
H the [`Stream`] type must be [`Unpin`]. If you want to use `next` with aÁü½K
H [`!Unpin`](Unpin) stream, you'll first have to pin the stream. This canÁü6
3 be done by boxing the stream using [`Box::pin`] orÁüÈK
H pinning it to the stack using the `pin_mut!` macro from the `pin_utils`ÁT˜
 crate.Á§
úœ¯
 # Cancel safetyÁÇ
úüÏ8
5 This method is cancel safe. The returned future onlyÁüŒ4
1 holds onto a reference to the underlying stream,矁+
( so dropping it will never lose a value.Áõ
ú
# ExamplesÁ
ú<˜
´ªü¤/
¨¼Ø
Ȩüô2
ȧ«
úü³)
& let mut stream = stream::iter(1..=3);Áá
úüé-
* assert_eq!(stream.next().await, Some(1));Áü›-
* assert_eq!(stream.next().await, Some(2));ÁüÍ-
* assert_eq!(stream.next().await, Some(3));Áüÿ*
' assert_eq!(stream.next().await, None);Á
¤ª
´ª
 ¢•œ œ ‹hŸ ËDô  áDôèΟ6ú`¢•¨ Î
¨“í¢•
©¢•
üó'n
ü³D
A Consumes and returns the next item in the stream. If an error isÁüüD
A encountered before the next item, the error is returned instead.ÁÅ
ú”Í
Œæä
ú
³æüþ9
6 async fn try_next(&mut self) -> Result<Option<T>, E>;Á
´ªÈ
úüÐ @
= This is similar to the [`next`](StreamExt::next) combinator,Áü•!>
; but returns a [`Result<Option<T>, E>`](Result) rather than矯!<
9 an [`Option<Result<T, E>>`](Option), making for easy useÁü™"+
( with the [`?`](std::ops::Try) operator.ÁÉ"
úœÑ"
Ëêé"
úüñ"8
ôêü®#4
¶ëüç#+
ôë—$
útŸ$
´ì²$
ú<º$
´ªüÆ$/
¨¼ú$
Ȩ%
úüž%2
ȧÕ%
úüÝ%C
@ let mut stream = stream::iter(vec![Ok(1), Ok(2), Err("nope")]);Á¥&
úü­&5
2 assert_eq!(stream.try_next().await, Ok(Some(1)));Áüç&5
2 assert_eq!(stream.try_next().await, Ok(Some(2)));Áü¡'5
2 assert_eq!(stream.try_next().await, Err("nope"));Á<Û'
¤ª<ç'
´ªDö'
 ¢•®
®
ˆy±
à@ÿ²
áDÿHQˆ{žá¢•¨¥«¬«¬ …(
¨Á• ÿ'
©« (
ûãܽ(
¢•&FùÅœÄ(
Êñ,Û(
ª¢•é®Õµ$Š(
FHKMüË0j
üŽ)K
H Maps this stream's items to a different type, returning a new stream ofÁ¼Þ)
 the resulting type.Áú)
úü‚*H
E The provided closure is executed over all elements of this stream asÁüÏ*@
= they are made available. It is executed inline with calls toÁü”+%
" [`poll_next`](Stream::poll_next).Á¾+
úüÆ+L
I Note that this function consumes the stream passed into it and returns aÁü—,G
D wrapped version of it, similar to the existing `map` methods in theÁ¬ã,
 standard library.Áý,
út…-
´ì˜-
ú< -
´ªü¬-/
¨¼à-
Ȩüü-2
ȧ³.
úü».%
" let stream = stream::iter(1..=3);Áüå.+
( let mut stream = stream.map(|x| x + 3);Á•/
úü/-
* assert_eq!(stream.next().await, Some(4));ÁüÏ/-
* assert_eq!(stream.next().await, Some(5));Áü0-
* assert_eq!(stream.next().await, Some(6));Á<³0
¤ª<¿0
´ªÎ0
¢•¹ª

Ã_
ËD«
±«Ö¯K‰´Êu¢•¹ª¨¥®¯®¯¨Á• Ò0
±ù Õ0
“"¹ª¢•&F´‰1
¹ª‹…˜"é® ž1
Í좕,¯1
­¢•鮹ª$Ø0
± Þ0
pruwü¤<}
üá1L
I Map this stream's items to a different type for as long as determined byÁü²2G
D the provided closure. A stream of the target type will be returned,Áüþ2?
< which will yield elements until the closure returns `None`.ÁÂ3
úüÊ3H
µüü—4K
H they are made available, until it returns `None`. It is executed inlineÁüç4L
I with calls to [`poll_next`](Stream::poll_next). Once `None` is returned,Áü¸53
0 the underlying stream will not be polled again.Áð5
úüø5L
ŒþüÉ6O
L wrapped version of it, similar to the [`Iterator::map_while`] method in theÁ¬7
²ÿ·7
út¿7
´ìÒ7
ú<Ú7
´ªüæ7/
¨¼š8
Ȩü¶82
ȧí8
úüõ8&
# let stream = stream::iter(1..=10);Áü 9+
( let mut stream = stream.map_while(|x| {Á”Ð9
 if x < 4 {Á¼ç9
 Some(x + 3)Á„ƒ:
} else {Á„˜:
NoneÁL­:
<»:
 });矂:-
¨üù:-
ßü«;-
–‚üÝ;*
þî<Œ<
¤ª<˜<
´ªL§<
¢•¹ª¾
¾
¡bÁ
ËDÅÂ
±Å¢«/à;ªz¢•¹ª¨¥±²±²¨Á• ±<
±ù ´<
€…ôí<
¹ª‹…˜"·ÈL‚=
³…,=
°¢•鮹ª$·<
± ½<
SUXZü£HŠ
üÒ=L
I Maps this stream's items asynchronously to a different type, returning a矣>%
" new stream of the resulting type.ÁÍ>
úüÕ>H
µüü¢?J
G they are made available, and the returned future is executed. Only oneÁüñ?#
future is executed at the time.Á™@
úü¡@L
Œþüò@H
E wrapped version of it, similar to the existing `then` methods in theÁ¬¿A
²ÿÙA
úüáAL
I Be aware that if the future is not `Unpin`, then neither is the `Stream`Áü²BL
I returned by this method. To handle this, you can use `tokio::pin!` as inÁüƒCK
H the example below or put the stream in a `Box` with `Box::pin(stream)`.ÁÓC
útÛC
´ìîC
ú<öC
´ªü‚D/
¨¼¶D
ȨüÒD2
ȧ‰E
úü‘E/
, async fn do_async_work(value: i32) -> i32 {ÁŒÅE
 value + 3Á,ÛE
–ªåE
úüíE%
¸€ü—F,
) let stream = stream.then(do_async_work);ÁÈF
úÄÐF
 tokio::pin!(stream);ÁíF
úüõF-
¨ü§G-
ßüÙG-
–‚<H
¤ª<—H
´ª$¦H
¢•Ü·õ õ Ãuù ËDãú ïuãû ±ãL²Îß'Úí¢•òÈÜ·¨´Ÿ.µµ´¨Ÿ¸ «H
Ò»®H
“"Ü·‹…ÄêH
Ü·‹…˜"òÈÿH
ë»4I
³…,§I
³¢•Ü·òÈ$³H
± ¹H
gilnü´ar
üÚII
F Combine two streams into one by interleaving the output of both as itÁ„¨J
is produced.Á½J
úüÅJL
I Values are produced from the merged stream in the order they arrive fromÁü–KA
> the two source streams. If both source streams provide values矆KK
H simultaneously, the merge stream alternates between them. This providesÁü¬LJ
G some level of fairness. You should not chain calls to `merge`, as thisÁüûL+
( will break the fairness of the merging.Á«M
úü³MK
H The merged stream completes once **both** source streams complete. WhenÁüƒNB
? one source stream completes before the other, the merge streamÁüÊN+
( exclusively polls the remaining stream.ÁúN
úü‚OG
D For merging multiple streams, consider using [`StreamMap`] instead.ÁÎO
úüÖO#
[`StreamMap`]: crate::StreamMapÁþO
út†P
´ì™P
ú<¡P
´ªü­P*
' use tokio_stream::{StreamExt, Stream};ÁÔÜP
 use tokio::sync::mpsc;Á¤ûP
 use tokio::time;Á”Q
úäœQ
 use std::time::Duration;Á´½Q
 use std::pin::Pin;ÁØQ
úDàQ
 # /*Á”íQ
 #[tokio::main]ÁD„R
 # */Áü‘R/
¨¬ÅR
 async fn main() {Á¤ßR
 # time::pause();ÁüøR8
5 let (tx1, mut rx1) = mpsc::channel::<usize>(10);ÁüµS8
5 let (tx2, mut rx2) = mpsc::channel::<usize>(10);ÁòS
úüúS.
+ // Convert the channels to a `Stream`.Áü­T2
/ let rx1 = Box::pin(async_stream::stream! {ÁüäT7
4 while let Some(item) = rx1.recv().await {Áì U
 yield item;Á|ÂU
üÖU8
5 }) as Pin<Box<dyn Stream<Item = usize> + Send>>;Á“V
úü›V2
/ let rx2 = Box::pin(async_stream::stream! {ÁüÒV7
4 while let Some(item) = rx2.recv().await {ÁìŽW
ئ|°W
þ¦üÄW8
—§X
úü‰X$
! let mut rx = rx1.merge(rx2);Á²X
úüºX!
 tokio::spawn(async move {ÁüàX+
( // Send some values immediatelyÁüY'
$ tx1.send(1).await.unwrap();Áü¼Y'
$ tx1.send(2).await.unwrap();ÁèY
úüðY-
* // Let the other task send values矢Z9
6 time::sleep(Duration::from_millis(20)).await;ÁàZ
úüèZ'
$ tx1.send(4).await.unwrap();Á\”[
 });Á¤[
úü¬[!
ЩüÒ[5
2 // Wait for the first task to send valuesÁüŒ\8
5 time::sleep(Duration::from_millis(5)).await;ÁÉ\
úüÑ\'
$ tx2.send(3).await.unwrap();Áý\
úü…]9
6 time::sleep(Duration::from_millis(25)).await;ÁÃ]
úüË]#
// Send the final valueÁüó]'
$ tx2.send(5).await.unwrap();Á\Ÿ^
Ô¬¯^
úü·^/
, assert_eq!(1, rx.next().await.unwrap());Áüë^/
, assert_eq!(2, rx.next().await.unwrap());ÁüŸ_/
, assert_eq!(3, rx.next().await.unwrap());ÁüÓ_/
, assert_eq!(4, rx.next().await.unwrap());Áü‡`/
, assert_eq!(5, rx.next().await.unwrap());Á»`
úüÃ`'
$ // The merged stream is consumedÁüï`*
' assert!(rx.next().await.is_none());Á,ža
–ª<¨a
´ª,·a
¢•ïë
ë
„eî
¬Þï
­Þð
±eÞÕõb˜PI‹¦¢•都··¨èˆ ½a
â‰Ì÷a
ï&FŒþa
³…, b
¢•ï$Àa
¹
,Æa
BDüökq
üØbH
E Filters the values produced by this stream according to the providedÁt¥c
predicate.Á¸c
úüÀcK
H As values of this stream are made available, the provided predicate `f`Áüd.
+ will be run against them. If the predicateÁüÃdH
E resolves to `true`, then the stream will yield the value, but if theÁüe1
. predicate resolves to `false`, then the value矮e:
7 will be discarded and the next value will be produced.Á…f
úüfL
ŒþüÞfH
E wrapped version of it, similar to [`Iterator::filter`] method in theÁ¬«g
²ÿÅg
útÍg
´ìàg
ú<èg
´ªüôg/
¨¼¨h
ȨüÄh2
ȧûh
úüƒi%
" let stream = stream::iter(1..=8);Áü­i2
/ let mut evens = stream.filter(|x| x % 2 == 0);Áäi
úüìi,
) assert_eq!(Some(2), evens.next().await);Áüj,
) assert_eq!(Some(4), evens.next().await);ÁüÎj,
) assert_eq!(Some(6), evens.next().await);Áüÿj,
) assert_eq!(Some(8), evens.next().await);Áü°k)
& assert_eq!(None, evens.next().await);Á<Þk
¤ª<êk
´ª4ùk
¢•Ü·ÑÑÝSÔËDÓÕ±Ó
ȸÊ"àM!¢•Ü·¨¹¹¨Ÿ¸ €l
“"Ü· Ô·l
Ü·‚À˜"$Íl
³…,ál
¸¢•Ü·$ƒl
± ‰l
giü÷v
ü–mK
H Filters the values produced by this stream while simultaneously mappingÁüæm?
< them to a different type according to the provided closure.Áªn
úü²nK
H As values of this stream are made available, the provided function willÁü‚o4
1 be run on them. If the predicate `f` resolves toÁü»oL
I [`Some(item)`](Some) then the stream will yield the value `item`, but ifÁüŒp<
9 it resolves to [`None`], then the value will be skipped.ÁÍp
úüÕpL
Œþü¦qL
I wrapped version of it, similar to [`Iterator::filter_map`] method in theÁ¬÷q
²ÿr
út™r
´ì<¬r
´ªü¸r/
¨¼ìr
Ȩüˆs2
ȧ¿s
úüÇs%
Õºüñs+
( let mut evens = stream.filter_map(|x| {Áü¡t3
0 if x % 2 == 0 { Some(x + 1) } else { None }Á<Ùt
ÉŒåt
úüít,
) assert_eq!(Some(3), evens.next().await);Áüžu,
) assert_eq!(Some(5), evens.next().await);ÁüÏu,
) assert_eq!(Some(7), evens.next().await);Áü€v,
) assert_eq!(Some(9), evens.next().await);Áü±v)
¤½<ßv
¤ª<ëv
´ªTúv
¢•¹ªþþ¾V ËDë±ëSŽ2€ ~ž_¢•¹ª¨¥»¼¼»¨Á• …w
±ù ˆw
€…ôÂw
ÍL×w
³…,ðw
º¢•鮹ª$‹w
± w
DFIKü¢ˆ:
ü¨x7
4 Creates a stream which ends after the first `None`.Áäx
úüìxI
F After a stream returns `None`, behavior is undefined. Future calls to矼yH
E `poll_next` may or may not return `Some(T)` again or they may panic.Áü‡zJ
G `fuse()` adapts a stream, ensuring that after `None` is given, it willÁÔÖz
 return `None` forever.Áõz
útýz
´ì{
ú<˜{
´ªü¤{*
' use tokio_stream::{Stream, StreamExt};ÁÓ{
ú´Û{
â¢üö{#
use std::task::{Context, Poll};Áž|
úü¦|6
3 // a stream which alternates between Some and NoneÁ´á|
 struct Alternate {Áœü|
 state: i32,Á,”}
–ªž}
úü¦}
 impl Stream for Alternate {ÁÄÊ}
 type Item = i32;Áç}
úüï}\
Y fn poll_next(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Option<i32>> {ÁüÐ~!
 let val = self.state;Áüö~(
% self.state = self.state + 1;Á£
úü«1
. // if it's even, Some(i32), else NoneÁìá
 if val % 2 == 0 {Áüƒ€&
# Poll::Ready(Some(val))Á¤®€
 } else {ÁüÇ€!
 Poll::Ready(None)Álí€
Lÿ€
·Œ,
–ª
ú
£”¬
ž£
¹£üÐ/
¨¬„‚
Ø£üž‚0
- let mut stream = Alternate { state: 0 };ÁÓ‚
úüÛ‚)
& // the stream goes back and forthÁü‰ƒ1
. assert_eq!(stream.next().await, Some(0));Áü¿ƒ.
+ assert_eq!(stream.next().await, None);Áüòƒ1
. assert_eq!(stream.next().await, Some(2));Áü¨„.
¬ÖÛ„
úüã„$
! // however, once it is fusedÁüŒ…'
$ let mut stream = stream.fuse();Á¸…
úüÀ…1
. assert_eq!(stream.next().await, Some(4));Áüö….
¬Ö©†
úü±†=
: // it will always return `None` after the first time.Áüó†.
¬Öü¦‡.
¬ÖüÙ‡.
¬Ö,Œˆ
–ª<–ˆ
´ª$¥ˆ
¢•í í ¯]ï ËDšŸéû+Ó² ¶¢•¨¨³…,Öˆ
½¢•$ªˆ
üªŽD
ü†‰G
D Creates a new stream of at most `n` items of the underlying stream.ÁÒ‰
úüÚ‰I
F Once `n` items have been yielded from this stream then it will alwaysÁü¨Š#
return that the stream is done.ÁЊ
útØŠ
´ìëŠ
ú<óŠ
´ªüÿŠ/
¨¼³‹
ȨüÏ‹2
ȧ†Œ
úüŽŒ2
/ let mut stream = stream::iter(1..=10).take(3);ÁÅŒ
úüÍŒ-
* assert_eq!(Some(1), stream.next().await);ÁüÿŒ-
* assert_eq!(Some(2), stream.next().await);Áü±-
* assert_eq!(Some(3), stream.next().await);Áüã*
' assert_eq!(None, stream.next().await);Á<’Ž
¤ª<žŽ
´ª$­Ž
¢•Ÿ Ÿ œp¡ ËD´¢ £k´70´%b»¢•¨¨³…,èŽ
¾¢•$²Ž
¹ ¸Ž
üÏ•x
ü›?
< Take elements from this stream while the provided predicateÁ¼ß
 resolves to `true`.Áû
úüƒK
H This function, like `Iterator::take_while`, will take elements from theÁüÓH
E stream until the predicate `f` resolves to `false`. Once one elementÁü @
= returns false it will always return that the stream is done.Áå‘
útí‘
´ì€’
ú<ˆ’
´ªü”’/
¨¼È’
Ȩüä’2
ȧ›“
úü£“B
? let mut stream = stream::iter(1..=10).take_while(|x| *x <= 3);Áê“
úüò“-
¯Þü¤”-
çÞüÖ”-
Ÿßüˆ•*
×ß<·•
¤ª<Õ
´ªTÒ•
¢•Ü·Ä Ä »rÇ ËDÊÈ ØmÊÉ ìrÊÆtãL¾jÖC¢•Ü·¨ÀÀ¨Ÿ¸ Ý•
“"Ü· Ô—–
Ü·ëè˜"
³…,Á–
¿¢•Ü·$à•
± æ•
moü¶›D
üù–B
? Creates a new stream that will skip the `n` first items of theÁ´À—
 underlying stream.ÁÛ—
útã—
´ìö—
ú<þ—
´ªüŠ˜/
¨¼¾˜
ȨüÚ˜2
ȧ‘™
úü™™2
/ let mut stream = stream::iter(1..=10).skip(7);ÁЙ
úüØ™-
* assert_eq!(Some(8), stream.next().await);ÁüŠš-
* assert_eq!(Some(9), stream.next().await);Áü¼š.
+ assert_eq!(Some(10), stream.next().await);Áüïš*
×ß<ž›
¤ª<ª›
´ª$¹›
¢•Í Í ‡kÏ ËDÐ £kxæ_6ÂÈå ¢•¨¨³…,ô›
Á¢•$¾›
¹ Ä›
ü±£x
ü§œI
F Skip elements from the underlying stream while the provided predicateÁ¼õœ
‰â
úü™O
L This function, like [`Iterator::skip_while`], will ignore elements from theÁüíH
Žãüºž<
9 returns false, the rest of the elements will be yielded.Áûž
úüƒŸ?
< [`Iterator::skip_while`]: std::iter::Iterator::skip_while()ÁÇŸ
útÏŸ
´ìâŸ
ú<êŸ
´ªüöŸ/
¨¼ª 
ȨüÆ 2
ȧüý J
G let mut stream = stream::iter(vec![1,2,3,4,1]).skip_while(|x| *x < 3);ÁÌ¡
úüÔ¡-
Ÿßü†¢-
* assert_eq!(Some(4), stream.next().await);Áü¸¢-
¯Þüê¢*
×ß<™£
¤ª<¥£
´ªT´£
¢•Ü·ò ò ¯mõ ËDœö Ømœ/[S®oŠˆ¢•Ü·¨Ã蟸 ¿£
“"Ü· Ôù£
Ü·Àõ˜"$¤
³…,£¤
¢•Ü·$£
± È£
moü¥±y
üÛ¤=
: Tests if every element of the stream matches a predicate.Á¥
ú”¥¥
Œæ¼¥
úlÄ¥
³æüÖ¥-
* async fn all<F>(&mut self, f: F) -> bool;Á<ˆ¦
´ª”¦
úüœ¦F
C `all()` takes a closure that returns `true` or `false`. It appliesÁüç¦F
C this closure to each element of the stream, and if they all returnÁü²§A
> `true`, then so does `all`. If any of them return `false`, itÁüø§4
1 returns `false`. An empty stream returns `true`.籬
úü¹¨H
E `all()` is short-circuiting; in other words, it will stop processingÁü†©J
G as soon as it finds a `false`, given that no matter what else happens,ÁüÕ©$
! the result will also be `false`.Áþ©
úü†ª#
An empty stream returns `true`.稻
út¶ª
´ìɪ
ú„Ѫ
Basic usage:羻
ú<îª
´ªüúª/
¨¼®«
ȨüÊ«2
ȧ¬
ú´‰¬
 let a = [1, 2, 3];Á¤¬
úü¬¬4
1 assert!(stream::iter(&a).all(|&x| x > 0).await);Áå¬
úüí¬5
2 assert!(!stream::iter(&a).all(|&x| x > 2).await);Á<§­
¤ª<³­
´ª¿­
úüÇ­"
 Stopping at the first `false`:Áî­
ú<ö­
´ªü‚®/
¨¼¶®
ȨüÒ®2
ȧ‰¯
ú´‘¯
èü¬¯
úü´¯$
! let mut iter = stream::iter(&a);Áݯ
úüå¯*
' assert!(!iter.all(|&x| x != 2).await);Á”°
úüœ°;
8 // we can still use `iter`, as there are more elements.Áüܰ,
) assert_eq!(iter.next().await, Some(&3));Á<±
¤ª<™±
´ª¨±
˜ ˜¢•Ü·ææ¢DêËDEë±EìáDE½/سíï㘢•Ü·¨ÅÅ ¯±
¨Ÿ¸ ¬±
Êñ,ò±
™šÌ„²
Ü·‹…˜"$™²
Ä¢•Ü·$´±
± º±
KMüܾy
üв;
8 Tests if any element of the stream matches a predicate.Á³
ú”˜³
Œæ¯³
úl·³
³æüɳ-
* async fn any<F>(&mut self, f: F) -> bool;Á<û³
´ª‡´
úü´F
C `any()` takes a closure that returns `true` or `false`. It appliesÁüÚ´I
F this closure to each element of the stream, and if any of them returnÁü¨µ@
= `true`, then so does `any()`. If they all return `false`, itÁ¤íµ
 returns `false`.砦
úü޶H
E `any()` is short-circuiting; in other words, it will stop processingÁüÛ¶I
F as soon as it finds a `true`, given that no matter what else happens,Áü©·#
the result will also be `true`.ÁÑ·
úüÙ·$
! An empty stream returns `false`.Á‚¸
ú„Џ
úûŸ¸
ú<§¸
´ªü³¸/
¨¼ç¸
Ȩüƒ¹2
ȧº¹
ú´Â¹
èüݹ
úüå¹4
1 assert!(stream::iter(&a).any(|&x| x > 0).await);Ážº
úü¦º5
2 assert!(!stream::iter(&a).any(|&x| x > 5).await);Á<àº
¤ª<ìº
´ªøº
úü€»!
 Stopping at the first `true`:Á¦»
ú<®»
´ªüº»/
¨¼î»
Ȩüм2
ȧÁ¼
ú´É¼
èüä¼
úüì¼$
çÿ•½
úü½)
& assert!(iter.any(|&x| x != 2).await);Á˽
úüÓ½;
å€ü“¾,
) assert_eq!(iter.next().await, Some(&2));Á<ľ
¤ª<о
´ªß¾
 ¢•Ü·¤¤€I¨ËDZ©±ZªáDZ)p1*ÙŽ¡}¢•Ü·¨ÇÇ æ¾
¨Ÿ¸ ã¾
Êñ,©¿
™šÌ»¿
¸„$п
Æ¢•Ü·$ë¾
± ñ¾
>@üØÇr
ü‡ÀG
D Combine two streams into one by first returning all values from theÁüÓÀ8
5 first stream then all values from the second stream.ÁÁ
úü˜ÁJ
G As long as `self` still has values to emit, no values from `other` areÁüçÁ$
! emitted, even if some are ready.ÁÂ
út˜Â
´ì«Â
ú<³Â
´ªü¿Â2
ȧöÂ
úüþÂ/
¨¼²Ã
ȨüÎÃ*
' let one = stream::iter(vec![1, 2, 3]);ÁüýÃ*
' let two = stream::iter(vec![4, 5, 6]);Á¬Ä
úü´Ä$
! let mut stream = one.chain(two);ÁÝÄ
úüåÄ-
Ùíü—Å-
îüÉÅ-
ÇîüûÅ-
¨ü­Æ-
ßü߯-
–‚ü‘Ç*
þî<ÀÇ
¤ª<ÌÇ
´ª,ÛÇ
¢•ïââæLå¬oæ­o‰`Õµ¢•都ÉÉ¨èˆ áÇ
â‰Ì›È
еŒ¢È
³…,ÄÈ
È¢•ï$äÇ
¹
,êÇ
>@üÎÍ
üüÈE
B A combinator that applies a function to every element in a streamÁüÆÉ$
! producing a single, final value.畃
ú”÷É
ŒæŽÊ
úl–Ê
³æü¨Ê2
/ async fn fold<B, F>(self, init: B, f: F) -> B;Á<ßÊ
´ªëÊ
útóÊ
´ì„†Ë
úû<›Ë
´ªü§Ë/
¨¼ÛË
Ȩü÷Ë*
' use tokio_stream::{self as stream, *};Á¦Ì
úü®Ì*
' let s = stream::iter(vec![1u8, 2, 3]);ÁüÝÌ0
- let sum = s.fold(0, |acc, x| acc + x).await;Á’Í
ú¼šÍ
 assert_eq!(sum, 6);Á<¶Í
¤ª<ÂÍ
´ª$ÑÍ
¢•‡º¹ª« « ¢Y¯ ËD° ÔY± ±² áD¿>•S¢•‡º¹ª¨ËÌÌ˨ÍÐ ÖÍ
±ù ÙÍ
³…,£Î
“"¹ª‡º̵Î
¹ªàŸ˜"‡º ÍÎ
Ê¢•‡º¹ª$ÜÍ
îÐ$âÍ
± ëÍ
uwy{üåà
üˆÏ>
; Drain stream pushing all emitted values into a collection.ÁËÏ
ú”ÓÏ
ŒæêÏ
úlòÏ
³æü„Ð#
async fn collect<T>(self) -> T;Á<¬Ð
´ª¸Ð
úüÀÐL
I `collect` streams all values, awaiting as needed. Values are pushed intoÁü‘ÑC
@ a collection. A number of different target collection types areÁüÙÑ<
9 supported, including [`Vec`], [`String`], and [`Bytes`].ÁšÒ
úü¢ÒB
? [`Bytes`]: https://docs.rs/bytes/0.6.0/bytes/struct.Bytes.htmlÁéÒ
útñÒ
# `Result`Á„Ó
úüŒÓJ
G `collect()` can also be used with streams of type `Result<T, E>` whereÁüÛÓH
E `T: FromStream<_>`. In this case, `collect()` will stream as long asÁü¨ÔK
H values yielded from the stream are `Ok(_)`. If `Err(_)` is encountered,ÁüøÔ>
; streaming is terminated and `collect()` returns the `Err`.Á»Õ
ú\ÃÕ
 # NotesÁÓÕ
úüÛÕF
C `FromStream` is currently a sealed trait. Stabilization is pendingÁü¦Ö&
È“ÑÖ
útÙÖ
´ììÖ
ú„ôÖ
úû‰×
ú<‘×
´ªü×2
ȧÔ×
úüÜ×/
¨¼Ø
ȨܬØ
 let doubled: Vec<i32> =ÁüÌØ#
stream::iter(vec![1, 2, 3])ÁÜôØ
 .map(|x| x * 2)Á´”Ù
 .collect()Áœ¯Ù
 .await;ÁÇÙ
úüÏÙ'
$ assert_eq!(vec![2, 4, 6], doubled);Á<ûÙ
¤ª<‡Ú
´ª“Ú
úü›Ú*
' Collecting a stream of `Result` valuesÁÊÚ
ú<ÒÚ
´ªüÞÚ2
ȧ•Û
úüÛ/
¨¼ÑÛ
ȨüíÛ=
: // A stream containing only `Ok` values will be collectedÁü¯Ü(
% let values: Result<Vec<i32>, &str> =ÁüÜÜ/
, stream::iter(vec![Ok(1), Ok(2), Ok(3)])Á´Ý
ö©œ«Ý
–ªÃÝ
úüËÝ*
' assert_eq!(Ok(vec![1, 2, 3]), values);ÁúÝ
úü‚ÞD
A // A stream containing `Err` values will return the first error.ÁüËÞD
A let results = vec![Ok(1), Err("no"), Ok(2), Ok(3), Err("nein")];Á”ß
úüœß(
í¬ìÉß
 stream::iter(results)Á´ëß
ö©œ†à
–ªžà
úü¦à"
 assert_eq!(Err("no"), values);Á<Íà
¤ª<Ùà
´ª<èà
¢•ÅOËDôO†PáDwNrx AÉÞ¢•é®é®Ê¨¥ÎΨÁ• ðà
é®´¹á
³…,ßá
Í¢•é®$óà
8:üÆþT
ü’â4
1 Applies a per-item timeout to the passed stream.ÁËâ
úüÓâH
E `timeout()` takes a `Duration` that represents the maximum amount ofÁü ãF
C time each element of the stream has to complete before timing out.Áëã
úüóãL
I If the wrapped stream yields a value before the deadline is reached, theÁüÄäM
J value is returned. Otherwise, an error is returned. The caller may decideÁü–åL
I to continue consuming the stream and will eventually get the next sourceÁüçå/
, stream value once it becomes available. SeeÁü›æJ
G [`timeout_repeating`](StreamExt::timeout_repeating) for an alternativeÁüêæ#
where the timeouts will repeat.Á’ç
ú\šç
ò¦ªç
úü²çB
? This function consumes the stream passed into it and returns aÁÔùç
 wrapped version of it.Á˜è
úü èK
H Polling the returned stream will continue to poll the inner stream evenÁüðè"
 if one or more items time out.Á—é
útŸé
´ì²é
úüºéJ
G Suppose we have a stream `int_stream` that yields 3 numbers (1, 2, 3):Á‰ê
ú<‘ê
´ªüê/
¨¼Ñê
Ȩüíê2
ȧä¤ë
½¢üÅë+
( # let int_stream = stream::iter(1..=3);Áõë
úüýë@
= let int_stream = int_stream.timeout(Duration::from_secs(1));ÁäÂì
 tokio::pin!(int_stream);Áãì
úüëìC
@ // When no items time out, we get the 3 elements in succession:Áü³í9
6 assert_eq!(int_stream.try_next().await, Ok(Some(1)));Áüñí9
6 assert_eq!(int_stream.try_next().await, Ok(Some(2)));Áü¯î9
6 assert_eq!(int_stream.try_next().await, Ok(Some(3)));Áüíî6
3 assert_eq!(int_stream.try_next().await, Ok(None));笕
úü°ïU
R // If the second item times out, we get an error and continue polling the stream:ÁüŠðL
I # let mut int_stream = stream::iter(vec![Ok(1), Err(()), Ok(2), Ok(3)]);ÁüÛð9
Ù¾ü™ñ2
/ assert!(int_stream.try_next().await.is_err());ÁüÐñ9
¿üŽò9
á¿üÌò6
¥À‡ó
úüóG
D // If we want to stop consuming the source stream the first time anÁüÛó?
< // element times out, we can use the `take_while` operator:ÁüŸôH
E # let int_stream = stream::iter(vec![Ok(1), Err(()), Ok(2), Ok(3)]);Áüìô>
; let mut int_stream = int_stream.take_while(Result::is_ok);Á¯õ
úü·õ9
Ù¾üõõ6
¥À<°ö
¤ª<¼ö
´ªÈö
úüÐöH
E Once a timeout error is received, no further events will be receivedÁü÷F
C unless the wrapped stream yields a value (timeouts do not repeat).Áè÷
ú<ð÷
´ªüü÷D
A # #[tokio::main(flavor = "current_thread", start_paused = true)]Á¼Åø
Ȩüáø<
9 use tokio_stream::{StreamExt, wrappers::IntervalStream};Áä¢ù
½¢üÃùa
^ let interval_stream = IntervalStream::new(tokio::time::interval(Duration::from_millis(100)));Áü©úL
I let timeout_stream = interval_stream.timeout(Duration::from_millis(10));Áüúú
 tokio::pin!(timeout_stream);ÁŸû
úü§ûM
J // Only one timeout will be received between values in the source stream.Áüùû5
2 assert!(timeout_stream.try_next().await.is_ok());Áü³üN
K assert!(timeout_stream.try_next().await.is_err(), "expected one timeout");Áü†ýR
O assert!(timeout_stream.try_next().await.is_ok(), "expected no more timeouts");Á<Ýý
¤ª<éý
´ª»¬Ä„ûý
Äõý
<Éþ
¢•­Ö­Öëô®ÖsecsÁâ}¯ÖnanosÁâ}Zµ–²ªÝÝ©“ßËD໊áËŠâÚ“’¤#bO¼‹¢•¨¨³…,”ÿ
Ï¢•$Ñþ
ËŠD×þ
üÇžg
üÑÿ4
³Š€
úü’€K
H `timeout_repeating()` takes an [`Interval`] that controls the time eachÁüâ€<
9 element of the stream has to complete before timing out.Á£
úü«L
ŒµüüM
ãµü΂L
»¶üŸƒK
H stream value once it becomes available. Unlike `timeout()`, if no valueÁüïƒK
H becomes available before the deadline is reached, additional errors areÁü¿„K
H returned at the specified interval. See [`timeout`](StreamExt::timeout)Áü8
5 for an alternative where the timeouts do not repeat.ÁÌ…
ú\Ô…
ò¦ä…
úüì…B
÷¸Ô³†
ù҆
úüÚ†K
õ¹üª‡"
˺ч
útÙ‡
´ìì‡
úüô‡J
 »È
ú<ˈ
´ªü׈/
¨¼‹‰
Ȩü§‰2
ȧäÞ‰
½¢üÿ‰+
ʼ¯Š
úü·Ša
^ let int_stream = int_stream.timeout_repeating(tokio::time::interval(Duration::from_secs(1)));Áä
×½¾‹
úüÆ‹C
‹¾üŽŒ9
Ù¾üÌŒ9
¿üŠ9
á¿üÈ6
¥ÀƒŽ
úü‹ŽU
óÀüåŽL
ÓÁü¶9
Ù¾üô2
¹Âü«9
¿üé9
á¿ü§‘6
¥Àâ‘
úüê‘G
°Ãü¶’?
‚Äüú’H
ÌÄüÇ“>
ŸÅŠ”
úü’”9
Ù¾üД6
¥À<‹•
¤ª<—•
´ª£•
úü«•J
G Timeout errors will be continuously produced at the specified intervalÁüú•,
) until the wrapped stream yields a value.Á«–
ú<³–
´ªü¿–D
ûǼˆ—
Ȩü¤—<
ØÈäå—
½¢ü†˜`
] let interval_stream = IntervalStream::new(tokio::time::interval(Duration::from_millis(23)));Áüë˜l
i let timeout_stream = interval_stream.timeout_repeating(tokio::time::interval(Duration::from_millis(9)));ÁüÜ™
ðÊš
úü‰šN
K // Multiple timeouts will be received between values in the source stream.ÁüÜš5
€Ìü–›N
ÀÌüé›S
P assert!(timeout_stream.try_next().await.is_err(), "expected a second timeout");ÁüÁœF
C // Will eventually receive another value from the source stream...ÁüŒM
J assert!(timeout_stream.try_next().await.is_ok(), "expected non-timeout");Á
¤ª
´ª»¬Ä„ü
Äö
ŒÊž
¢•Ù§µµé·ËD£¸ÂA£¡W Ù½pZÚ¢•¨¨³…,¨Ÿ
Т•$Üž
ÂADâž
üÔ¥V
üîŸ;
8 Slows down a stream by enforcing a delay between items.Á® 
úü¶ R
O The underlying timer behind this utility has a granularity of one millisecond.Á¡
úl•¡
# ExampleÁ§¡
úô¯¡
 Create a throttled stream.Á”Ò¡
 ```rust,no_runÁäé¡
½¢üŠ¢
 use tokio_stream::StreamExt;Á¯¢
ú´·¢
 # async fn dox() {ÁüÒ¢V
S let item_stream = futures::stream::repeat("one").throttle(Duration::from_secs(2));Áì­£
 tokio::pin!(item_stream);ÁÏ£
úT×£
 loop {Áüæ£>
; // The string will be produced at most every 2 secondsÁü©¤3
0 println!("{:?}", item_stream.next().await);Á,á¤
–ª<ë¤
¤ª<÷¤
´ª»¬Ä„‰¥
ă¥
D×¥
¢•½Ï×(ˊ¼…޼ŠËD¼÷æ|7ðÚ‰—¢•¨¨³…,¤¦
Ñ¢•$à¥
ËŠDæ¥
ü‘¶r
üݦ[
X Batches the items in the given stream using a maximum duration and size for each batch.Á½§
úüŧL
I This stream returns the next batch of items in the following situations:Áü–¨Z
W 1. The inner stream has returned at least `max_size` many items since the last batch.Áüõ¨T
Q 2. The time since the first item of a batch is greater than the given duration.ÁüΩ)
& 3. The end of the stream is reached.Áü©
úü„ªd
a The length of the returned vector is never empty or greater than the maximum size. Empty batchesÁüíª:
7 will not be emitted if no items are received upstream.Á¬«
úd´«
# PanicsÁÅ«
úüÍ«.
+ This function panics if `max_size` is zeroÁ€¬
úlˆ¬
À䚬
ú\¢¬
³§䲬
½¢¤Ó¬
”¢üì¬2
ȧÜ£­
 use futures::FutureExt;Áí
ú”Ë­
ž£Üâ­
 # async fn _unused() {}Áü‚®D
ûǬˮ
Ø£üå®0
- let iter = vec![1, 2, 3, 4].into_iter();Áüš¯)
& let stream0 = stream::iter(iter);Áȯ
úüЯ'
$ let iter = vec![5].into_iter();Áüü¯(
% let stream1 = stream::iter(iter)Áü©°Q
N .then(move |n| time::sleep(Duration::from_secs(5)).map(move |_| n));Áÿ°
úü‡±"
 let chunk_stream = stream0ÁÜ®±
 .chain(stream1)Áüα7
4 .chunks_timeout(3, Duration::from_secs(2));Áüв"
 tokio::pin!(chunk_stream);Á±²
úü¹²$
! // a full batch was receivedÁüâ²A
> assert_eq!(chunk_stream.next().await, Some(vec![1,2,3]));Áü¨³;
8 // deadline was reached before max_size was reachedÁüè³=
: assert_eq!(chunk_stream.next().await, Some(vec![4]));Áüª´%
" // last element in the streamÁüÔ´=
: assert_eq!(chunk_stream.next().await, Some(vec![5]));Á,–µ
–ª< µ
´ª»¬Ä„²µ
Ĭµ
²|ýµ
t”¶
¢•½ÏÑÑ–ŠÓËDØÔ»ŠØÕËŠØÖÛŠØ×èŠØ0ôœ(¥YC¢•¨¨³…,ý¶
Ò¢•$£¶
max_sizeÁD©¶
ËŠDº¶
üݽB
ü‰¸^
[ Turns the stream into a peekable stream, whose next element can be peeked at without beingÁlì¸
consumed.Á\þ¸
³§ü޹2
ȧŹ
ú”͹
ž£Üä¹
Ãñü„ºD
ûǬͺ
Ø£üçº0
†òüœ»7
4 let mut stream = stream::iter(iter).peekable();ÁØ»
úüà»5
2 assert_eq!(*stream.peek().await.unwrap(), 1);Áüš¼5
òýüÔ¼4
1 assert_eq!(stream.next().await.unwrap(), 1);Áü½5
2 assert_eq!(*stream.peek().await.unwrap(), 2);Á,ǽ
–ª<ѽ
´ªDà½
¢•ß
ß
‡|á
ó0â
ËD×fE* }Ÿ¢•¨¨³…,™¾
Ó¢•$é½
ü˾2
ÎÕÕÎìÖ·о
µ½4÷¾
Ö·ü­¿˜
„°¿
BýÞýÞýÞ
ÖœÜ-??„¿üýA> Adapters for [`Stream`]s created by methods in [`StreamExt`].ÁæL,ûâ܃ÝS4‚ÑÝê¾VLŠþÞƒ¯]$•í ߪÃ_
àÄ¡bD ¾
áÝ„e,ªë
âó‡|D±ß
㧇k$»Í ä¯mLÁò 峜p$ÌŸ æÉ»rLÚÄ çâÃu$åõ èþ–ŠÑüð©“Ýý·é„¾µþ¸ŒÞdgTWDG47$'ôöâäÐÒ¾À¬®šœL‘,•öˆ 4 &Eéê§Ê€\&éëÊ€éëùõB„¾éìk<XÌéî·$aœØéïlÌnt7HTK9;(*Ô‚¥ññ¾Ï šÖ
ü  ¥óó¾Ï ¬šÖ
üÄ ¥õõ¾Ï КÖ
üÏ#üé)& Creates a stream that yields nothing.Áúü—DA The returned stream is immediately ready and returns `None`. UseÁüÜLI [`stream::pending()`](super::pending()) to obtain a stream that is neverÁ ready.Á´ú´ìÇú„ËúûÜú´ªüè2ȧúüŸ/¨¼ÏȨüç*' let mut none = stream::empty::<i32>();Áúü–(% assert_eq!(None, none.next().await);Á<¿¤ª´ªšÖ¥÷÷¾Ï â
öé¤Ü¥ùù¾Ï šÖúûü&F&G&Hüû"$øøé¤üÅJšœ„¾„¾ùõ†¾ ˜X$]È=„kt• ššÖ ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åœœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ餸 Üø
ûé¤ èü·- šÖýÞø Äø
üé¤QQddˆˆˆ 4 &E§ùõ#„¾k<9Ì·$BœØlVtCT,46#%ÌöšÍìÁ× û…×
ü Dü”@= Converts an `Iterator` into a `Stream` which is always readyÁäÕ to yield the next value.ÁòúüöIF Iterators in Rust don't express the ability to block, so this adapterÁüÀ74 simply always calls `iter.next()` and returns that.Áøú´ª´„îåü›2ȧÎúüÒ0- let mut stream = stream::iter(vec![17, 19]);Áƒúü‡.+ assert_eq!(stream.next().await, Some(17));Áü¶.+ assert_eq!(stream.next().await, Some(19));Áüå*þî<¤ª<˜´ªÁ׈ˆù„Šù•…‹‘v´§ @nÁ×ÉLš¶” ¬ÇLÁ×
ˆÁ×´ ¯%'ü®1š¶” ³ùMÁׅ׌Ž&F&G&HŽ24ŠŠÁ×úMü€UžŸ „¾„¾ùõ†¾ ˜X$]È=„kt• ž…× ŸÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾å œØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙµ›Š Š
Á×$‘âÙ§üí
-
¡ ¡…×ýÞŠ ú
Š
ŽÁ×
vvù„$ ˆˆ 4&E§³
4&‰Tùõ=„¾k<SÌ·$\œØš,ƒnpd ^t2NTF?A.0Ì’šœœ¶” ŸØ
ü¯#ü°85 Creates a stream that emits an element exactly once.ÁéúüíOL The returned stream is immediately ready and emits the provided value once.Á½ú´ìÐú´ªüÜ2ȧúü“/¨¼ÃȨüÛ" // one is the loneliest numberÁüþ" let mut one = stream::once(1);Á¡úü¥*' assert_eq!(Some(1), one.next().await);ÁÐúüÔ" // just one, that's all we getÁü÷'$ assert_eq!(None, one.next().await);Á¤ª´ªé¤ä×¥žž¾Ï »
餻ԑ¥  ¾Ï äס¢£&F&G&H£¢"$ŸŸé¤üÆO¢£¤„¾„¾ùõ†¾ ˜X$]È=„kt• ¢ä× £ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾å¤ùŸ áŸ
¢é¤âÙíüÒ-¥ ¥ä×ýÞŸ ߟ
£é¤®®´ˆ 4 &E§¨§Ê€\&§©Ê€§©ùõB„¾§ªk<X̧¬·$aœØ§­lÌnt7HTK9;(*䈥¯¯¾Ï ãØ
ü¨"¥±±¾Ï ´ãØ
üÎ"¥³³¾Ï ÚãØ
üÇ'üõ(% Creates a stream that is never readyÁžúü¢:7 The returned stream is never ready. Attempting to callÁüÝ?< [`next()`](crate::StreamExt::next) will never complete. UseÁüB? [`stream::empty()`](super::empty()) to obtain a stream that isÁüà,) immediately empty but returns no values.Áút‘´ì ú„¤úûµú
```no_runÁüÇ2ȧúú”þž£¬‘Ø£ü§1. let mut never = stream::pending::<i32>();ÁÙúüÝ# // This will never completeÁÜ never.next().await;Áú¼¡ unreachable!();Á–ª<¿´ªãØ¥µµ¾Ï Ü
´é¤ì¥··¾Ï ãØ¸¹º&F&G&H¹º"$é¤üÅJ¦§¨„¾„¾ùõ†¾ ˜X$]È=„kt• ¦ãØ §ÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾å¨ù Ü
¹é¤ èü³ -© ©ãØýÞ À 
ºé¤ÀÀÒÒƒœˆ 4 &E¾¿§Y4% ¾Àpoll_fnÁ<> Ç€¾ÁŽ$Vše¾ÂŽ e¾Âùõj„¾¾Ãæö,¥‚¾Åk<†Ì¾Æ·$œØ¾ÇlÆœµ¤1Ÿ|Kl`kLsZ\IK79Ô«6œÉ§ÊÉÊÍìýÙ °6ÍìƒÚ ³6ÍÙËÍÏÐÑÔ×ÚÛÜÝÞßáCE?AüÏ:3üÌ6@= An iterator visiting all key-value pairs in arbitrary order.Á7úü™7.+ The iterator element type is `&'a (K, V)`.ÁÌ7útÔ7´ìç7ú<ï7´ªüû7+( use tokio_stream::{StreamMap, pending};Á«8úü³8# let mut map = StreamMap::new();ÁÛ8úüã8&# map.insert("a", pending::<i32>());ÁüŽ9 map.insert("b", pending());Áü²9 map.insert("c", pending());ÁÖ9úüÞ9%" for (key, stream) in map.iter() {Áüˆ:,) println!("({}, {:?})", key, stream);Á,¹:–ª<Ã:´ª$Ö:ª ªÍÙýÙƒÚªÌÈ Û:È
ËýÙƒÚ$Ü:èÌå:Ë8ÊÊËÄlÄlù„Çlµ ™lÈl
end_or_lenÁ™lÉlûó™lŒœjSž8©ÚÍìýÙƒÚ8ÌšùMæÀÄê:æÀúM 8©Útó:ÞÀÉýÀ'ÁËü¿??ü¬;HE An iterator visiting all key-value pairs mutably in arbitrary order.Áù;úü<2/ The iterator element type is `&'a mut (K, V)`.Á¸<útÀ<´ìÓ<ú<Û<´ªüç<+öº—=úüŸ=#·»Ç=úüÏ=&ð»üú= ¼üž>ɼÂ>úüÊ>)& for (key, stream) in map.iter_mut() {Áüø>,­½,©?–ª<³?´ªDÆ?« «ÍÙýÙƒÚ«ÎÈ Ï?È
ÍýÙƒÚ$Ô?øÍÝ?!Í8ËËÍÜlÜlIterMutÁßlµ ™làl£¿™lálûó™lÚ½íDþïl%8©ÚÍìýÙƒÚ8ΘùMÄÆäâ?ÄÆúM 8©Ú”ë?¼ÆÇÛÆ'ëÆÍü”Cü¬@! Creates an empty `StreamMap`.ÁÒ@úüÚ@JG The stream map is initially created with a capacity of `0`, so it willÁü©A1. not allocate until it is first inserted into.ÁßAútçA´ìúAú<B´ªüŽB+( use tokio_stream::{StreamMap, Pending};Á¾BúüÆB=: let map: StreamMap<&str, Pending<()>> = StreamMap::new();Á<ˆC´ªCÍÙÈÈ
ÏýÙƒÚüG8üçC=: Creates an empty `StreamMap` with the specified capacity.Á©Dúü±DLI The stream map will be able to hold at least `capacity` elements withoutÁü‚EGD reallocating. If `capacity` is 0, the stream map will not allocate.ÁÎEútÖE´ìéEú<ñE´ªüýE+¢È­FúüµFIF let map: StreamMap<&str, Pending<()>> = StreamMap::with_capacity(10);Á<ƒG´ªlGÍÙÈÈ
ÐýÙƒÚ§;D¤Gü‡L.ü¦H=: Returns an iterator visiting all keys in arbitrary order.ÁèHúüðH)& The iterator element type is `&'a K`.ÁžIút¦I´ì¹Iú<ÁI´ªüÍI+öºýIúü…J#·»­JúüµJ&ð»üàJ ¼ü„Kɼ¨KúܰK for key in map.keys() {ÁäÐK println!("{}", key);Á,ñK–ª<ûK´ª$ŽL¬ ¬ÍÙýÙƒÚ¬ÒÈ “LÈ
ÑýÙƒÚ$”LÀÎLÑ8ÌÌÑâ­â­Ã_å­ùæ­±Å@Iœóë ¶¥æÀÓýÙƒÚ˜Á 8ýÙÍìýÙƒÚ8Ò©ùMèÓœ¢LèÓúMÐÓL«LàÓÒÿÓ!ÔÑDÐLÑÃåÓÜåÓúåÓÓÑÓýÙƒÚ ©Ú ýÙüÌP0üçL74 An iterator visiting all values in arbitrary order.Á£Múü«M)& The iterator element type is `&'a V`.ÁÙMútáM´ìôMú<üM´ªüˆN+öº¸NúüÀN#·»èNúüðN&ð»ü›O ¼ü¿OɼãOúüëO  for stream in map.values() {ÁüP! println!("{:?}", stream);Á,¶P–ª<ÀP´ª4ÓP­ ­ÍÙýÙƒÚ­ÕÈ ÚPÈ
ÔýÙƒÚ$ÛPÀÏäPÔ8ÍÍÔâ­â­Ã_å­ùæ­±Å@Iœóë ¶¥æÀÖýÙƒÚËÓ 8ƒÚÍìýÙƒÚ8Õ§ùM¾ÚœéP¾ÚúM¦ÚLòP¶ÚÐÕÚ!åÚÔD—QÔÃåÖÜåÖúåÖÖÔÖýÙƒÚ™Õ ƒÚü£U<ü®Q?< An iterator visiting all values mutably in arbitrary order.ÁòQúüúQ-* The iterator element type is `&'a mut V`.Á¬Rút´R´ìÇRú<ÏR´ªüÛR+öº‹Súü“S#·»»SúüÃS&ð»üîS ¼ü’Tɼ¶Túü¾T$! for stream in map.values_mut() {ÁüçT!ƒ×,U–ª<—U´ªTªU® ®ÍÙýÙƒÚ®ØÈ µUÈ
×ýÙƒÚ$ºUàÐÃU×8ÎÎ×â­â­Ã_
¤œœÍì¼Î Ô
ÒÛžìœ üò
%" Create a new `StreamNotifyClose`.Á£ ¼ÎÒÛ
¼ÎËD4§ üè $ü  Get back the inner `Stream`.Á¦ úü® 52 Returns `None` if the stream has reached its end.ÁTï ÒÛÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¼Î
ž¼Î ü«
<¤  Õª °
&E¼Î
ÒÛ¡¢¤&F&G&H¤¢13

ŸŸÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¼Î&FüXL“ÈÉÊ„¾„¾ùõ†¾ ˜X$]È=„kt• ÈÒÛ ÉÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åʜ؞؟ØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÒÛ&FŸ «Ÿ
¢¼ÎâÙ·¢Ãå£Üå£ú壣¢£¼Î„¾„¾ùõ†¾ ˜X$]È=„kt• ¼ÎœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ãê®§ôüÌ-Ë ËÒÛýÞŸ ÙŸ
¤¼Îá¤Ãå¥Üå¥ú奥¤¥¼ÎëÁü‡ø¤Ãä­ühPM A wrapper around [`tokio::sync::mpsc::Receiver`] that implements [`Stream`].Á¹úÀäËú´ªÔ×ñ¡üò/, use tokio_stream::wrappers::ReceiverStream;Áü¢ ·åÃúüÇ/¨ü÷NK # async fn main() -> Result<(), tokio::sync::mpsc::error::SendError<u8>> {ÁüÆ$! let (tx, rx) = mpsc::channel(2);Á¼ë tx.send(10).await?;Á¼ƒ tx.send(20).await?;Áü›*' # // prevent the doc test from hangingÁ
drop(tx);ÁÔúüØ-* let mut stream = ReceiverStream::new(rx);Áü†.+ assert_eq!(stream.next().await, Some(10));Áüµ.+ assert_eq!(stream.next().await, Some(20));Áüä*þîd # Ok(())Á¤ª´ª¬úü°GD [`tokio::sync::mpsc::Receiver`]: struct@tokio::sync::mpsc::ReceiverÁüø# [`Stream`]: trait@crate::StreamÁt¸¥©©¾Ï Ǽ¤ÙÞNµÊóBª ”Ð ¨¨„¥(¥7¥¬¬¾Ïl¿cé¤Ç¼¤­Àc­ŽUWÌÍΠ̼¤ Í c cˆ¢cµ
 `£c«² `àB¤GS
Îò¹«¥«
­é¤þ±üà% üqY V A wrapper around [`tokio::sync::mpsc::UnboundedReceiver`] that implements [`Stream`].ÁË ú ÀäÝ ú ´ªÔé ñ¡ü„8 5 use tokio_stream::wrappers::UnboundedReceiverStream;Áü½ ·åÞ úüâ/ ¨ü’N  ·üá- * let (tx, rx) = mpsc::unbounded_channel();ÁŒ  tx.send(10)?;ÁŒ¡  tx.send(20)?;Áü³* æ¸ ™¹ì úüð6 3 let mut stream = UnboundedReceiverStream::new(rx);Áü§. ó¹üÖ. «ºü…* þî 𺠤ª ´ªÍ úüÑY V [`tokio::sync::mpsc::UnboundedReceiver`]: struct@tokio::sync::mpsc::UnboundedReceiverÁü«# ý»¼ë ¥¯¯¾Ï ƒ ç¥
¬p<XZ—©° ÜŒ '®®­¦(Ø 8¥²²¾Ïl±¾ƒ 祳Àc³ˆMOÏÐÑ Ïç¥ Ð c cˆ¢cµ
 `£c«² `àB¤GS
Ñò¹±Ø ±
³é¤ö±üdø»¬ÄÀ
Ɉ 4 &E´µ§ùõ! „¾´k<6 Ì´¸·$? œØ´¹InstantÁ<X ­e´»ã¦Da Ñe´¼l †l sL* dfSU\J >@-/œ£ –§¾¿üä& ü½"  Create a new `IntervalStream`.Áë Ù§–§½½
¾ÂADï üà# ü¹"  Get back the inner `Interval`.ÁTç –§Ù§½½
¿ ô¢ –§ÁÂÃ&F&G&HÃÂLÇ $Ì ÀÀ­e­e²È®eÀÜcSOf"¥Xüá U Lä ÒÓÔ„¾„¾ùõ†¾ ˜X$]È=„kt• Ò–§ ÓÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åԜ؞؟ØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¹ÌÀ ü À
ÂâÙˆ
üï
- Lò
Õ Õ–§ýÞÀ ü
À
Ã
üà ' –§ÅâÅìñ Ö Ö–§ ÖÙ§Ä û Ä
Å ü® ' –§ÇåÇüÜ % 4ß × ×–§ ×Ù§Æ æ Æ
Ç Ä’D¦Ìï üm= : A wrapper around [`Interval`] that implements [`Stream`].Á« ú Àä½ ú ´ªüÉ3 0 use tokio::time::{Duration, Instant, interval};Áüý/ , use tokio_stream::wrappers::IntervalStream;Áü­ ·åÎ úüÒ/ ¨¼‚ Ȩüš  let start = Instant::now();Áüº7 4 let interval = interval(Duration::from_millis(10));Áüò3 0 let mut stream = IntervalStream::new(interval);Áœ¦  for _ in 0..3 {Áüº4 1 if let Some(instant) = stream.next().await {ÁüïG D println!("elapsed: {:.1?}", instant.duration_since(start));Á ·Œ –ª ¤ª ´ª× úüÛ. + [`Interval`]: struct@tokio::time::IntervalÁüŠ# ý»9tú –§žËŽ–XÊ| , ´ÉÉÙ§(· :–§ÌÀcÌ"$ØÙÚ Ø–§ Ù c cˆ¢cµ
 `£c«² `àB¤GS
Úò¹Ë· Ë
ÌÆ±ÌdÊ »Ä»pM°GƒŒ´ 

∠4 !&EÍΧioÁ!¦ÍÏùõ.!„¾ÍÐk<C!ÌÍÒ·$L!œØÍÓDirEntryÁDc!Ý
ÍÕ©¨<m!Ì
ÍÖl!<!‰l$!yL7!jlY[LW!CE24”Ò!
بØÙü‘%!üë!! Create a new `ReadDirStream`.Á˜!›©ب××
ØôBDœ!ü‹"!üå!! Get back the inner `ReadDir`.ÁT!ب›©××
Ù$!ìÌ!
بÛÜ&F&GÜ!$õ!ÚÚÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Ý
Ý
—ÛÞ
file_typeÁçß
Àç'~Âîgn‘òÄÐü— X!Lš !ÛÜÝ„¾„¾ùõ†¾ ˜X$]È=„kt• Ûب ÜÌÌkξó¸ÏÑó¸Ðêó¸Ñûó¸Òô¸f'EwÚ]¾åݜ؞؟ØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙب&FÚ ² !Ú
Ü$¨ !âÙ¾ !ü¹
%!
بÞâÞäå
!4è
!Þ Þب Þ›©Ý ï
!Ý
Þ
!ü¡ %!
بàåàüÍ $!4Ð !ß ßب ß›©ß × !ß
à !¼ú V¦Ä !üxG!D A wrapper around [`tokio::fs::ReadDir`] that implements [`Stream`].ÁÀ!ú!ÀäÒ!ú!´ªäÞ! use tokio::fs::read_dir;Áüû;!8 use tokio_stream::{StreamExt, wrappers::ReadDirStream};Á·!úü»/!¨üë.!+ # async fn main() -> std::io::Result<()> {Áüš$!! let dirs = read_dir(".").await?;Áü¿,!) let mut dirs = ReadDirStream::new(dirs);Áüì-!* while let Some(dir) = dirs.next().await {Á¼š! let dir = dir?;Áü²-!* println!("{}", dir.path().display());Á!–ª!ðº!¤ª!´ªƒ!úü‡5!2 [`tokio::fs::ReadDir`]: struct@tokio::fs::ReadDirÁü½#!ý»;l«!ب‹l¸1}¹#=ãt¿!,¿!Íâ⛩(ê!<بåÀcå"$àáâ àب á c cˆ¢cµ
 `£c«² `àB¤GS
âò¹äê!ä
寱Ìù&•º´.I&º3futures do nothing unless you `.await` or poll themÁHLè ÅçÎèééèç ùö ±ù  ³ªÅá&“»ê©½/سíïãêëìò BDGIE4 EææŠú^ « Eææ¹ªw$™ Eææ”í”í•íö yaDŸd¤†ì('‰ IÅîÎïðîïð ù±ù¿c³ª ¿c¹ª'‚ ê©ñÀcñPSWZ¡£ãäå ãê© ä c cˆ¢cµ
 `£c«² `àB¤GS
åò¹í'‰ í
ñųª¹ªV±]Y(ös (üsEù(¸{2GÅôÎõööôõ ù±ùê©]`Ÿ¢¦©ù(Ú•SÁ(Ý•Eøæ æææ¢DêËDEë±EìáDE½/سíïãøÖ·Ü·Îùúùú9÷~Ÿ¸}
÷Ö·Ü·thisÁ!(Œ–hkª­±´ù*¨ÝÕ1*¨ÕQQ(ÝtþEüÅýÎþÿþÿýüÎì«JÍì–«RǪþE1*¤ÞÅþEù)ÿÈ«þE«Å –«þE-ûûìEËDE±EáDE'@EŒúsàþEÅ«–«'@EŒúsà1*ÓÝéì+.25ÍíEûû þE Å«óúEûû þE–«Eûû„¾„¾ùõ†¾ ˜X$]È=„kt• þEÚïù/¨ÝÕ1/¨ÕUi(®xþEÅÎôöY„÷X”÷1/¤Þ¦÷ù.ÿÈ»÷ È÷Õ÷ƒƒ¼FˆËDE±EŠáDE"úL²˜®¬þEÅ«–«"úL²˜®¬ˆŠ1/ÓÝÊÍ ¸ÎEƒƒ þEšù×ÔEƒƒ þE–«öÚEƒƒ„¾„¾ùõ†¾ ˜X$]È=„kt• þEÚïù3•‡13ù…9(Ü}Œ„¾„¾ùõ†¾ ˜X$]È=„kt• Œê©ûûìEËDE±EáDE'@EŒúsàŒÅ³ª¹ªó13°‡ó
ųª¹ª!3Ň)+ù7•‡17ù…Y(Ž„¾„¾ùõ†¾ ˜X$]È=„kt• Žê©ƒƒ¼FˆËDE±EŠáDE"úL²˜®¬ŽÅ³ª¹ªó17°‡ó
ųª¹ª!7Ň)+ù;å½0OA;ñ½þEÅÎôöN
„÷M
È÷ù(݈t»GëGEËDE±EáDEÝmä%®¤“PþEÅ«–«Ýmä%®¤“P1;ú½¯
²
ñ
ô
ø
û
ù;ܾ<;ܾEÊ€Fu\»Ÿ þE E001 AlwaysUnpinÁ3ˆ ‰4ä\’ÎMšùS; E001µ„ 3ˆ ‰4ä\’ÎM–«ši EÚïù;ÿáOþEŚΜœšôö^ „÷] “í))*PinnedFieldsOfHelperStructÁ,ˆ Úˆ3Clœšƒ (Á;ŒÁǪ1;È¿š  Ü ß ã æ ©?ûéPy?êEš•Á?ûéš•š•!ù?Ïê6P¥ŸŸ¾Ï ?ÔêŒ"餹?×êé¤ ù?‘ëFPš΢££¢¡ ùÛ
±ùÚ
ê©­
°
ï
ò
ö
ù
ùH•º´.IHºÀìmLè ťΦ§¥¦§ ùö ±ù  ÃîáH“»‘¬)p1*ÙŽ¡}¨©ªò ;=@BE4 Z¤¤Šú^ « Z¤¤¹ªw$™ Z¤¤Úï(I‰ nŬέ®­®¬ ùâ±ùàÐð áðI‚ ‘¬¯Àc¯ÖØçèé 瑬 è c cˆ¢cµ
 `£c«² `àB¤GS
éò¹«I‰ «
¯Å³ª¹ªB±IYJös JüsZùJ¸{2lŲγ´´²³ ùD±ùC‘¬ÉË#&^aehùJÚ•SÁJÝ•Zê ꤤ€I¨ËDZ©±ZªáDZ)p1*ÙŽ¡}ַܷη¸¸·ÿ÷=Ÿ¸<
µÖ·Ü·Íô!JŒ–+.fimpùL¨ÝÕ1L¨ÕvQJÝtþEºÅ»Î¼½º¼½»ôöý„÷üê¬þE1L¤Þ¦÷ùKÿÈ»÷ È÷Õ÷¹¹ìE¾ËDZ¿±ZÀáDZxVNBÅG+BþEÅ«–«xVNBÅG+B¾¿À1LÓÝ|·º¾Á¸Z¹¹”ùÐZ¹¹ºùè~Z¹¹ÚùùQ¨ÝÕ1Q¨ÕziJ®xþEÂÅÃÎÄÅÂÃÅÄôö„÷£“ 1Q¤Þ¦÷ùPÿÈ»÷ È÷Õ÷ÁÁ¼FÆËDZDZZÈáDZ?;øFþEÅ«–«?;øFÆÇÈ1QÓÝILPS¸ZÁÁõüÐZÁÁ”ýèZÁÁ³ýùU•‡1Uù…9JÜ}Ê„¾„¾ùõ†¾ ˜X$]È=„kt• Ê‘¬¹¹ìE¾ËDZ¿±ZÀáDZxVNBÅG+BÊųª¹ª±1U°‡±
Éųª¹ª!UŇ)+ùY•‡1Yù…YJÌ„¾„¾ùõ†¾ ˜X$]È=„kt• Ì‘¬ÁÁ¼FÆËDZDZZÈáDZ?;øFÌųª¹ª±1Y°‡±
Ëųª¹ª!YŇ)+ù]å½0tA]ñ½þEÎÅÏÎÐÑÎÐÑÏôöD „÷C È÷ùJ݈tÍÍ»GÒëGZÓËDZÔ±ZÕáDZ0·ä¯;ìµþEÅ«–«0·ä¯;ìµÒÓÔÕ1]ú½¬ ¯ ç ê î ñ ù]ܾ<]ܾZÍÍä„ ÕÒ ZÍͪ… íÑ ZÍÍû… Ñ ZÍÍÚïù]ÿátþE×ÅØÎÙÚØ×ÙÚôö¿
„÷¾
“í))*µ† ,ˆ Úˆ3Clœõ (Á]ŒÁê¬1]È¿é
ì
$ ' + . ©aûéuyaêZÛÛš•ÁaûéÛš•š•!ùaÏê6u¥ÝÝ¾Ï aÔê­‰ ¹a×êé¤ùa‘ëFuÅßÎàáàßá ù ±ù ‘¬ô ÷ / 2 6 9 ùh•º´ü¤E
IhºB Stream returned by the [`chain`](super::StreamExt::chain) method.Á
¥ã¦äãä¾Ï ÿ
èˆ 
‡¯‰`Õµåæ(*-/áh“» ž
oâ⢻ Á
oââïYiös iüsoùi¸{2¥é¦êéê¾ÏÅèˆǯúü×ÙÜÞùiÚ•SÁiÝ•oë 뇯¥ì¦íìí i’–¾Ïaèˆ`
ëé¤ïÍô!iŒ–Žùk¨ÝÕ1k¨ÕQiÝtþEï¥ð¦ñïðñÁ•Íìï®±®þE1k¤Þé®þEùjÿÈï®þEîîìEò¬oó­ovÉL–ò¹þEé®ï®vÉL–ò¹òó1kÓݺ½ÁÄšoî„¾ùõ†¾ ˜X$]È=„kt• þEÜ»ëÉoî„¾ùõ†¾ ˜X$]È=„kt• þEï®ùo¨ÝÕ1o¨Õšii®xþEõ¥ö¦÷÷õöÁ•挩 圩 1o¤Þ®© ùnÿÈÁ©  ôô¼Fø¬où­oÙÄ;®EþÅþEé®ï®ÙÄ;®EþÅøù1oÓÝtw{~Koôô„¾„¾ùõ†¾ ˜X$]È=„kt• þEÜ»äƒoôô„¾„¾ùõ†¾ ˜X$]È=„kt• þEï®ùr•‡1rù…9iÜ}û„¾„¾ùõ†¾ ˜X$]È=„kt• û‡¯îîìEò¬oó­ovÉL–ò¹ûé¤ïè1r°‡è
úé¤ï!rŇ#%ùu•‡1uù…Yiý„¾„¾ùõ†¾ ˜X$]È=„kt• ý‡¯ôô¼Fø¬où­oÙÄ;®EþÅýé¤ïè1u°‡è
üé¤ï!uŇ#%ùxå½0Axñ½þEÿ¥¦ÿÁ•ŒŒ© þþ»GëGoƒ¬o­o„Ðc,ËzswþEé®ï®„Ðc,Ëzswƒ1xú½

ùxܾ<xܾoþþä„ ùi݈t oþþÜ»oþþï®ùxÿáþE¥¦ˆˆÁ•ÃŒ© “í))*µ† ,ˆ Úˆ3Clœ´ (ÁxŒÁ±®1xÈ¿" % ) , ©{ûéy{êoš•Á{ûéš•š•!ù{Ïê6¥¾Ï {Ôê­‰ ¹{×êé¤ù{‘ëF¥¦ŽŽ¾Ï
èˆ
‡¯

$
'
ù„•º´.I„ºÀ쮥¦¾Ï ßèˆ âÍì´° åÚ¯wNrx AÉÞ=?BD>@á„“»4…餴°:<¯Ê€Fu\»Ÿï{$°Úï(…À¯¥˜¦šš˜¾Ï?èˆ>Ÿº 4±¾ß¿cïâ¿c´°åÚ¯ÀcÁÃìíî ìÚ¯ í c cˆ¢cµ
 `£c«² `àB¤GS
îò¹À
é¤ï´°u±|Y†ösüsù†¸{2­¥ž¦Ÿ žŸ ¾Ï×èˆÖŸº ÌÚ¯·¹òõùü÷úù†Ú•SÁ†Ý•ï ïÚ¯¥¢¦£¤¤£¢’–¾Ï£èˆ¢Ÿº ˜
¡é¤ï´°Íô!†Œ–ÒÕÙÜ×Úùˆ¨ÝÕ¨Õ·Q†ÝtþE¦¥§¦¨©©§¦¨Á•~Œ© }Í윱|°þE1ˆ¤Þ®© ù‡ÿÈœ±þEÁ© ¥¥ìEªËD«ôO¬†P­áD‘æ%ŸþEé®ï®œ±‘æ%Ÿª«¬­ÓÝUX\_Z]Ó¥¥„¾„¾ùõ†¾ ˜X$]È=„kt• þEé®%Q¥¥ þEœ±FX¥¥ þEÊ€Fu\»Ÿï®Ž_¥¥ÚùùލÝÕ¨Õ¼i†®xþE¯¥°¦±²²°¯±Á•ÖŒ© ՛à ˫à 1Ž¤Þ®© ùÿÈËà 
Á© ®®¼F³ËD´ôOµ†PáDJ–Ê I,^þEé®ï®œ±J–Ê I,^³´µÓÝ žÌY®®„¾„¾ùõ†¾ ˜X$]È=„kt• þEé®®® þEœ±?®® þE¤Æ `y®®³ýù“•‡1“ù…9†Ü}¸„¾„¾ùõ†¾ ˜X$]È=„kt• ¸Ú¯¥¥ìEªËD«ôO¬†P­áD‘æ%Ÿ¸é¤ï´°1“°‡
·é¤ï´°!“Ň)+ù˜•‡ù…Y†º„¾„¾ùõ†¾ ˜X$]È=„kt• ºÚ¯®®¼F³ËD´ôOµ†PáDJ–Ê I,^ºé¤ï´°°‡
¹é¤ï´°Ň)å½0µAñ½þE¼¥½¦¾¿¿½¾¼Á•+ Œ© * ›Ã  »»»GÀëGÁËDÂôOÆPÄáD"²oþ‘NÜþEé®ï®œ±"²oþ‘NÜÀÁÂÃÄ1ú½Ô × Û Þ Ù Ü ùܾ<ܾ»»ä„ ù†݈tà »»é®  »»001µ„ 3ˆ ‰4ä\’ÎMœ±gï »»001µ„ 3ˆ ‰4ä\’ÎM¤Æ ®õ »»ÚïùÿáµþEƥǦÈÉÈÆÇÉÁ•@
Ω ?
›Ã 5
“í))*µ† ,ˆ Úˆ3ClœÎÐ (ÁŒÁ°1È¿¨
«
¯
²
­
°
©¢ûéêÊÊš•Á¢ûéÊš•š•"ù¢Ïê6¥ÌÌ¾Ï ¢Ôê­‰ ¹¢×êé¤ù¢‘ëF¥Î¦ÏÐÎÐϾϻ舺Ÿº °Ú¯ÐÓ×ÚÕØù¬•º´ü–GºD Stream returned by the [`filter`](super::StreamExt::filter) method.Á.Q streams do nothing unless polledÁÒÎÒÓÒÓޏ©Ÿ¸ ­œ·
ȸÊ"àM!ÔÕ(*-/ᬓ»ÓÑÑÖ· ÝÓÑÑÜ·ös ­üsÓù­¸{2ÖÎØÙØÙޏÌŸ¸Êœ·éëÞàãåù­Ú•SÁ­Ý•Óð ðœ·ÎÛÜÜÛ ­’–ޏlŸ¸k
ÚÖ·Ü·ÍôŒ–šù¯¨ÝÕ¨ÕÞÝtþEÞÎßààÞßÍ쳪&±ù%ȶþE1¯¤Þ³ªþEù®ÿȹªþEÝÝìEáËDÓâ±Ó¢—D³'¶e…þE³ª¹ª¢—D³'¶e…áâÓÝÎÑÕØž¤ÓÝÝ„¾„¾ùõ†¾ ˜X$]È=„kt• þE³ªðÜÓÝÝ þE¹ªù³¨ÝÕ¨Õá®xþEäÎåæäåæçÝ Í±ùÌþÝ 1³¤Þ‘Þ ù²ÿÈ¥Þ 
ãã¼FçËDÓè±Ód4}üáf‰åþE³ª¹ªd4}üáf‰åçèÓÝ`cgj6Óãㄾ„¾ùõ†¾ ˜X$]È=„kt• þE³ªénÓãã þE¹ªù¶•‡ù…9­Ü}ꄾ„¾ùõ†¾ ˜X$]È=„kt• ꜷÝÝìEáËDÓâ±Ó¢—D³'¶e…êÖ·Ü·×°‡×
éÖ·Ü·Ň%'ù¹•‡ù…섾„¾ùõ†¾ ˜X$]È=„kt• 윷ãã¼FçËDÓè±Ód4}üáf‰åìÖ·Ü·×°‡×
ëÖ·Ü·Ň%'ù¼å½0Üñ½þEîÎïððîïçÝ X±ùWíí»GñëGÓòËDÓó±ÓëËx¢£þE³ª¹ªëËx¢£ñòóú½ÚÝáäù¼ܾ<¼ܾÓííä„ ù­݈tÜÓíí³ª ÛÓíí001µ„ 3ˆ ‰4ä\’ÎM¹ªù¼ÿáÜþEõÎö÷÷öõçÝ È±ùÇ“í))*µ† ,ˆ Úˆ3Clœ¯è (Á¼ŒÁȶÈ¿) , 0 3 ©¿ûéÝy¿êÓøøš•Á¿ûéøš•š•"ù¿Ïê6Ý¥úú¾Ï ¿Ôê­‰ ¹¿×êé¤ù¿‘ëFÝÎüýüýޏ
Ÿ¸
œ·,
/
3
6
ùÇ•º´ü–OºL Stream returned by the [`filter_map`](super::StreamExt::filter_map) method.Á.Y÷× ïÎÿÿޏ´Ÿ¸ ¸Ó¸SŽ2€ ~ž_ (*-/áÇ“»ëþþÖ· èëþþÜ·ös Èüsëùȸ{2óÎޏÌŸ¸ÊÓ¸– ˜ ÞàãåùÈÚ•SÁÈÝ•ëñ ñӸΈ ˆ  È’–ޏlŸ¸k
Ö·Ü·ÍôŒ–šùʨÝÕ¨ÕûÝtþEÎŒ  Œ  çÝ ±ùÿ·þE1Ê¤Þ‘Þ ùÉÿÈ¥Þ 
Š Š ìEŽ ËDë ±ëfo\#ÂþE³ª¹ªfo\#ÂŽ ÓÝ·º¾ÁëŠ Š Ïß °ŒëŠ Š ¡à ùΨÝÕ¨Õþ®xþEÎçÝ v±ùuæó 1Î¤Þ‘Þ ùÍÿÈ¥Þ 
  ¼FËDë±ëàGŠa® GŠþE³ª¹ªàGŠa® GŠ” • 1ÎÓÝ  ßë  áâ °Þë  ³ã ùÑ•‡ù…Ü}„¾„¾ùõ†¾ ˜X$]È=„kt• — ӏРРìEŽ ËDë ±ëfo\#ÂÖ·Ü·°‡
Ö·Ü·Ň%'ùÔ•‡ù…„¾„¾ùõ†¾ ˜X$]È=„kt• ™ Ó¸  ¼FËDë±ëàGŠa® GŠÖ·Ü·°‡
˜ Ö·Ü·Ň%'ù×å½0ùñ½þEΜ  œ  çÝ Á±ùÀš š »Gž ëGëŸ ËDë  ±ë‰ÝŒ‰¢ªtþE³ª¹ª‰ÝŒ‰¢ªtž Ÿ   1×ú½CFJMù×ܾ<×ܾëš š ä„ ùÈ݈tEëš š ³ª Dëš š  ê ù×ÿáùþE¢ Σ ¤ £ ¤ ¢ çÝ ±ù“í))*µ† ,ˆ Úˆ3Clœ‰ý (Á׌Áÿ·È¿dgkn©Úûéúêë¥ ¥ š•ÁÚûé¥ š•š•"ùÚÏê6ú¥§ § ¾Ï ÚÔê­‰ ¹Ú×êé¤ùÚ‘ëFúΩ ª ª © ޏY Ÿ¸X Ó¸g j n q ù㕺´.IãºÀìά ­ ® ¬ ® ­ ޏýÍÐ ±ù ±¹¿>•S¯ ° ± ² 469;>@áã“»« « Ö· ´« « Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ‡º Ì« « ¹ª™$º« « Úïδ µ ´ µ ޏTÍÐS±ùR°¸äý¿c‡ºäáðä±¹· Àc· 𡤍«¹»òóô ò±¹ ó c cˆ¢cµ
 `£c«² `àB¤GS
ôò¹³ ä³
· Ö·‡º¹ªm±tös åüsùå¸{2κ » ¼ » ¼ º ޏäÍÐã±ùâ±¹Ó Õ ÿ 
ùåÚ•SÁåÝ•õ õ±¹Î¾ ¿ À ¿ ¾ À  å’–ޏ°ÍЯ±ù®
½ Ö·‡º¹ªÍôŒ–ßâæéíðùç¨ÝÕ¨ÕÝtþE Îà Ä Å Â Ä Å à çÝ Íìﺄ÷™ºþE1ç¤Þ‘Þ ùæÿÈïºþEÕ÷Á Á ìEÆ ËDÇ ÔYÈ ±É áDéì` ÉIçþE³ªïº–«éì` ÉIçÆ Ç È É 1çÓÝbeilpsÓ.Á Á Ïß ì-Á Á þEÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙïºQ4Á Á ºùk4Á Á Úùùí¨ÝÕ¨Õ ®xþEË ÎÌ Í Î Ë Í Î Ì çÝ À¯Œ
¿„÷¾ÆŒ
¤Þ‘Þ ùìÿÈæŒ

Õ÷Ê Ê ¼FÏ ËDÐ ÔYÑ ±Ò áD ¾±®q|"þE³ªïº–« ¾±®q|"Ï Ð Ñ Ò 1íÓÝƒŠŽÌLÊ Ê áâ åKÊ Ê þEäŽ

Ê Ê ”ý
Ê Ê ³ýùò•‡ù…Ü}Ô „¾„¾ùõ†¾ ˜X$]È=„kt• Ô ±¹Á Á ìEÆ ËDÇ ÔYÈ ±É áDéì` ÉIçÔ Ö·‡º¹ª¹ °‡¹
Ó Ö·‡º¹ªŇ)+ù÷•‡ù…Ö „¾„¾ùõ†¾ ˜X$]È=„kt• Ö ±¹Ê Ê ¼FÏ ËDÐ ÔYÑ ±Ò áD ¾±®q|"Ö Ö·‡º¹ª¹ °‡¹
Õ Ö·‡º¹ªŇ)+ùüå½0ñ½þEØ ÎÙ Ú Û Ú Ø Ù Û çÝ Ô
¯Œ
Ó
„÷Ò
× × »GÜ ëGÝ ËDÞ ÔYß ±à áDô^K¸C_þE³ªïº–«ô^K¸C_Ü Ý Þ ß à 1üú½}     Ž ùüܾ<üܾ× × ä„ ùå݈tu × × ³ª t × × 001µ„ 3ˆ ‰4ä\’ÎMäŽ
g\ × × û… [ × × ÚïùüÿáþEâ Îã ä å å ã â ä çÝ » ¯Œ
º „÷¹ “í))*µ† ,ˆ Úˆ3Clœ…™
(ÁüŒÁ™ºÈ¿#
&
*
-
1
4
©ûéšyêæ æ š•Áûéæ š•š•"ùÏê6š¥è è ¾Ï Ôê­‰ ¹×êé¤ù‘ëFšÎê ë ì ì ë ê ޏ6ÍÐ5±ù4±¹KNRUY\ù‰•º´ü…:I‰º7 Stream returned by [`fuse()`][super::StreamExt::fuse].Á»¥î î ¾Ï é¢»Ÿéû+Ó² ¶ï  ቓ»4…ší í ¾‘ͼ¥ñ ñ ¾Ïs±¾Šé¢»ò Àcò ŽPRö÷ø ö¢» ÷ c cˆ¢cµ
 `£c«² `àB¤GS
øò¹ð ŠÍð
ò é¤ú±Y‹ösüsšù‹¸{2º¥õ õ ¾Ï¢»
œŸù‹Ú•SÁ‹Ý•šù ù¢»¥÷ ÷ ’–¾Ï
ö é¤Íô!‹Œ–(+ù¨ÝÕ1¨ÕÄQ‹ÝtþEù ¥ú ú ù Á•Ü»þE1¤Þ®© ùŒÿÈø ø ìEû ËDšaµˆ¦øT˜ þEé®aµˆ¦øT˜ û 1ÓÝpïšø ø „¾„¾ùõ†¾ ˜X$]È=„kt• þE·Èù¨ÝÕ1¨ÕÆi‹®xþEý ¥þ ý þ Á•Ñ«¦
1¤Þ®© ùÿÈü ü ¼Fÿ ËDšíû¹íþEé®íû¹íÿ 1ÓÝEHp#šü ü „¾„¾ùõ†¾ ˜X$]È=„kt• þE·Èù’•‡1’ù…9‹Ü}
„¾„¾ùõ†¾ ˜X$]È=„kt• 
¢»ø ø ìEû ËDšaµˆ¦øT˜ 
é¤ô 1’°‡ô
é¤!’Ň!#ù”•‡1”ù…Y‹ƒ
„¾„¾ùõ†¾ ˜X$]È=„kt• ƒ
¢»ü ü ¼Fÿ ËDšíû¹íƒ
é¤ô 1”°‡ô
é¤!”Ň!#ù–å½0ÂA–ñ½þE
¥

Á•Ô

»G
ëGšˆ
ËDšwÏ‘šqЧþEé®wÏ‘šqЧ
ˆ
1–ú½=@ù–ܾ<ܾš

ä„ ù‹݈tGš

·Èù–ÿáÂþEŠ
¥
Š
Á•Æ“í))*µ† ,ˆ Úˆ3Clœè®
(Á–ŒÁÜ»1–È¿ #©˜ûéÃꚌ
Œ
š•Á˜ûéŒ
š•š•"ù˜Ïê6Ã¥Ž
Ž
¾Ï ˜Ôê­‰ ¹˜×êé¤ù˜‘ëFÃ¥

¾Ï÷¢»þ ù •º´ü9I º6 Stream for the [`map`](super::StreamExt::map) method.Á.C÷× ÐÎ


ޏŸ¸ нÖ¯K‰´Êu
(*-/á “»«

Ö· Å«

Ü·ös ¡üs«ù¡¸{2ÔΘ


˜
ޏÌŸ¸Êн©
«
Þàãåù¡Ú•SÁ¡Ý•«ú úнÎ
œ

œ
 ¡’–ޏlŸ¸k
š
Ö·Ü·ÍôŒ–šù£¨ÝÕ¨ÕÜÝtþEž
Ο
 
 
ž
Ÿ
çÝ ±ù¶¼þE1£¤Þ‘Þ ù¢ÿÈ¥Þ 


ìE¡
ËD«¢
±«’•ó'è\)þE³ª¹ª’•ó'è\)¡
¢
ÓÝ·º¾Á«

Ïß °Œ«

¡à ù§¨ÝÕ¨Õß®xþE¤
Î¥
¦
¥
¦
¤
çÝ v±ùu׸
¤Þ‘Þ ù¦ÿÈ¥Þ 
£
£
¼F§
ËD«¨
±«Î]E½²‘ð×þE³ª¹ªÎ]E½²‘ð×§
¨
ÓÝ  ß«£
£
áâ °Þ«£
£
³ã ùª•‡ù…Ü}ª
„¾„¾ùõ†¾ ˜X$]È=„kt• ª
н

ìE¡
ËD«¢
±«’•ó'è\)ª
Ö·Ü·
°‡
©
Ö·Ü·Ň%'ù­•‡ù…¬
„¾„¾ùõ†¾ ˜X$]È=„kt• ¬
н£
£
¼F§
ËD«¨
±«Î]E½²‘ð׬
Ö·Ü·
1­°‡
«
Ö·Ü·Ň%'ù°å½0Úñ½þE®
ί
°
¯
°
®
çÝ Á±ùÀ­
­
»G±
ëG«²
ËD«³
±«ÙÂr41ÙþE³ª¹ªÙÂr41Ù±
²
³
ú½CFJMù°ܾ<°ܾ«­
­
ä„ ù¡݈tE«­
­
³ª D«­
­
 ê ù°ÿáÚþEµ
Î
·
·
µ
çÝ ±ù“í))*µ† ,ˆ Úˆ3ClœúÁ
(Á°ŒÁ¶¼È¿dgkn©³ûéÛ꫸
¸
š•Á³ûé¸
š•š•"ù³Ïê6Û¥º
º
¾Ï ³Ôê­‰ ¹³×êé¤ù³‘ëFÛμ
½
½
¼
ޏY Ÿ¸X нg j n q ùº•º´üEºB Stream for the [`map_while`](super::StreamExt::map_while) method.Á.O÷× íD™Î¿
À
À
¿
ޏ¢Ÿ¸ ¦½¾¢«/à;ªzÁ
Â
(*-/ẓ»Å¾
¾
Ö· Öž
¾
Ü·ös »üsÅù»¸{2ñÎÅ
Æ
Å
Æ
ޏÌŸ¸ʽ¾Ö
Ø
Þàãåù»Ú•SÁ»Ý•Åû û½¾ÎÈ
É
É
È
 »’–ޏlŸ¸k
Ç
Ö·Ü·ÍôŒ–šù½¨ÝÕ¨ÕùÝtþEË
ÎÌ
Í
Ì
Ë
Í
çÝ ±ùé½þE1½¤Þ‘Þ ù¼ÿÈ¥Þ 
Ê
Ê
ìEÎ
ËDÅÏ
±ÅH6ËAA¡þE³ª¹ªH6ËAA¡Î
Ï
ÓÝ·º¾ÁÅÊ
Ê
Ïß °ŒÅÊ