Files
thefoldwithin-earth/.old2/target/release/deps/libquote-41756a17d2ad9431.rmeta
T

617 lines
263 KiB
Plaintext
Raw Normal View History

2025-10-19 16:48:12 -05:00
rust
#rustc 1.90.0 (1159e78c4 2025-09-14)Á®µùØkºKGÅGáâJ÷ïŒ(-210854cf1daa4becÁ˜[9íùBëÔØî'Ì-049beac0cc29bd50ÁÙÁüˆX=ÈõÈ/}â…™-11a30f34fef80118ÁÒŸãPñqµöu}ð(ÚòÑË-8e6617d0a0e102d3Á ŠÉ2nÓ
LT
>0åHº-25b9095ba4a91f19Árustc_std_workspace_coreÁÉ}_ŽP„!à„Š pjoqT-9eb003a32f0992faÁÑ”[YÕÏÜ7³zŸß,-8777a826d833fed1Ácfg_ifÁ;¬m9ï³!¨b?zòHRµ-6b0ee99d0cd367aaÁ miniz_oxideÁ ä4»†Çäʹ³lF -792c79271e16ea9fÁadler2Á9¤ÁiªLh£¦ÞL¶¸þ-ae8f2d91738556a4Á hashbrownÁ}<É‘zLÅ6“ [)1 "-eac3a09b6db64fd7Árustc_std_workspace_allocÁ'h¯ZñKyMæ&0$$-9764c127deb56b65Á
std_detectÁãÍ›åeÒyÿK>~…ßè-6a40cf5258f51f80Árustc_demangleÁ$HßzhQ¶Xv®ŸäÞäû-4f7fbb1f095fcd3fÁ addr2lineÁ¸MÕ½ÞáŰ®ëW¬>ôã-4762c639c5141640ÁgimliÁU-öŰMg×líQ-68de3fb7a86859f3ÁobjectÁþÚ—ªÉò©4MÜÒ]'-c8ba02a03a2c8826ÁmemchrÁ“rŽcÚ`q)WaÖ©ø3—¯-8fad20e6ec27261fÁÖ ]3ÜÃnk4²‡›&íÆn-60999f71969c62e4Á ª1LƒèÝ oÇ l–¶Ð-205600e30a99f188Árustc_literal_escaperÁã6ð—„x>Ódù!¦C®-6b9fd9e26e54fd54Árustc_std_workspace_stdÁøëÝÿžˆûÐ?,Ì2-31e31b7df4d72782Á proc_macro2Ámub™¬6ýÎÂù¶.«_-30dd1c0184916507Á
unicode_identÁšbœGe=I÷HP?ÿ—i-d90ab847601a2565Á®Ù extÁTokenStreamExtÁ appendÁ  
append_allÁ append_separatedÁÍ
´
 append_terminatedÁÍ
´
§
´
¼
Í
Õ
Í
´
ú
Í
´
privateÁ!!SealedÁ!¸% format_identÁ%format_ident_implÁident_fragmentÁ((((((
IdentFragmentÁ.¥.spanÁ(11ƒ
1¥(55ƒ
5¥(9ƒ
9¥(<<ƒ
<¥(ident_fragment_displayÁ to_tokensÁAAAAAAAAAA A
A A A
AAToTokensÁQˆQto_token_streamÁQinto_token_streamÁAUUˆAXXˆA['aÁ[[ˆA__ˆAbbˆAeeˆAhˆAjˆAlˆA nˆA
pˆA rˆA tˆA
vˆAxˆAzˆA|ˆA~ˆAˆAˆAˆAˆAˆˆAŠˆAŒˆAŽˆAˆAˆAˆAˆA˜ˆAšˆš __privateÁ 
  
 DelimiterÁSpanÁ HasIteratorÁ´
´· · ·Õº ·Û¼ ¼ ¼ À À ÀÕÃ ÀÛÅ Å Å É É ÉÕÌ ÉÛÎ Î Î Ò Ò ÒÕÕ ÒÛ× × × Û Û ô ÞÞÞÞÞÞÞÞÞRepIteratorExtÁçquote_into_iterÁè è ÞëÞRepToTokensExtÁíä
í˜ï ï ÞòÞRepAsIteratorExtÁô'qÁôIterÁô˜÷ Þùùù¥ù˜ý Þÿÿÿ¥ÿ˜ƒ Þ¥˜  ÞŒŒŒÊŒ Œ¥Œ˜  Þ¥˜  Þœœœ¥œ˜    Þ£££¥£˜§ ©©ä
¬¬»¬ä
°°ˆget_spanÁ³ÌµµµµGetSpanÁ¹
¹¹òµ GetSpanInnerÁ½
½½òµ GetSpanBaseÁÁ
ÁÁòµÅ __into_spanÁµÇõµÉÉõµÌÌÌäµÐÐÐä
push_groupÁpush_group_spannedÁparseÁ
parse_spannedÁ× respan_token_treeÁÙ 
push_identÁpush_ident_spannedÁ
push_lifetimeÁpush_lifetime_spannedÁ
push_punctÁpush_underscoreÁpush_underscore_spannedÁmk_identÁident_maybe_rawÁääƒ
 çç¥
êê¥ íí¥ ðð¥
óó¥spannedÁùùùùùùSpannedÁÿ__spanÁùâ ùƒâ ùâ ù
join_spansÁˆ ˆ ˆ ùê ŒŒŒŒü ŒŒŒ__quoteÁ__quote_spannedÁpounded_var_namesÁpounded_var_names_with_contextÁpounded_var_with_contextÁquote_bind_into_iterÁquote_bind_next_or_breakÁquote_each_tokenÁquote_each_token_spannedÁquote_tokens_with_contextÁ!quote_tokens_with_context_spannedÁquote_token_with_contextÁ quote_token_with_context_spannedÁ quote_tokenÁquote_token_spannedÁ(¤¥(¦¥(¨¥(ª¥(¬¥( ®¥(
°¥( ²¥( ´¥(
¥CheckHasIteratorÁ¸î¸checkÁ RepInterpÁ»
»»ò¿ÁÁ±push_addÁpush_add_spannedÁ push_add_eqÁpush_add_eq_spannedÁpush_andÁpush_and_spannedÁ push_and_andÁpush_and_and_spannedÁ push_and_eqÁpush_and_eq_spannedÁpush_atÁpush_at_spannedÁ push_bangÁpush_bang_spannedÁ
push_caretÁpush_caret_spannedÁ
push_caret_eqÁpush_caret_eq_spannedÁ
push_colonÁpush_colon_spannedÁ push_colon2Ápush_colon2_spannedÁ
push_commaÁpush_comma_spannedÁpush_divÁpush_div_spannedÁ push_div_eqÁpush_div_eq_spannedÁpush_dotÁpush_dot_spannedÁ push_dot2Ápush_dot2_spannedÁ push_dot3Ápush_dot3_spannedÁpush_dot_dot_eqÁpush_dot_dot_eq_spannedÁpush_eqÁpush_eq_spannedÁ
push_eq_eqÁpush_eq_eq_spannedÁpush_geÁpush_ge_spannedÁpush_gtÁpush_gt_spannedÁpush_leÁpush_le_spannedÁpush_ltÁpush_lt_spannedÁ push_mul_eqÁpush_mul_eq_spannedÁpush_neÁpush_ne_spannedÁpush_orÁpush_or_spannedÁ
push_or_eqÁpush_or_eq_spannedÁ
push_or_orÁpush_or_or_spannedÁ
push_poundÁpush_pound_spannedÁ
push_questionÁpush_question_spannedÁ push_rarrowÁpush_rarrow_spannedÁ push_larrowÁpush_larrow_spannedÁpush_remÁpush_rem_spannedÁ push_rem_eqÁpush_rem_eq_spannedÁpush_fat_arrowÁpush_fat_arrow_spannedÁ push_semiÁpush_semi_spannedÁpush_shlÁpush_shl_spannedÁ push_shl_eqÁpush_shl_eq_spannedÁpush_shrÁpush_shr_spannedÁ push_shr_eqÁpush_shr_eq_spannedÁ push_starÁpush_star_spannedÁpush_subÁpush_sub_spannedÁ push_sub_eqÁpush_sub_eq_spannedÁIdentFragmentAdapterÁœ
œœò ¢¢±Î 
quote_spannedÁ 88888888/8/8/80818384848485878888888:8;8;8;8<8>8?8?8?8R8R8S8U8W8W8X8Z8Z8^8^8a8a8d8d8g8g8i8i8k8k8m8m8o8o8q8q8s8s8u8u8w8w8y8y8{8{8}8}88888ƒ8ƒ8888888888888888888888888î8ï8ù8ÿ8¯8²8²8È8Ë8Ï8Ó8Ô8Õ8Ö8Ö8×8×8Û8Û8Ü8Ü8Ý8Ý8Þ8Þ8à8á8â8ã8æ8é8é8é8ì8ì8ì8ï8ï8ï8ò8ò8ò8õ8õ8õ88888¥8¥8¥8§8§8§8©8©8©8«8«8«8­8­8­8¯8¯8¯8±8±8±8³8³8³8µ8µ8µ8·8·8·8Ã8Ä8Å8Æ8Ç8È8É8Ê8Ë8Ì8Í8Î8Ï8Ð8Ñ8Ò8Ó8Ô8Õ8Ö8×8Ø8Ù8Ú8Û8Ü8Ý8Þ8ß8à8á8â8ã8ä8å8æ8ç8è8é8ê8ë8ì8í8î8ï8ð8ñ8ò8ó8ô8õ8ö8÷8ø8ù8ú8û8ü8ý8þ8ÿ8888ƒ88888ˆ88Š88Œ88Ž8888888888˜88š88¤8 #.Q¸çíôÿ þþÿinnerÁ_markerÁ¢Ä„D¦#‹F. 8. 8âF.ÄÄIdentÁÅžEÆ®EBŠÇ/nå‹.»¾¿BorrowedÁÀòÁÂOwnedÁÃòÇŠZ,8âF...EEœE®ð1ÿ"ð±¼%.......QÝFQïFQ»¾¿ÎFÀòÁÂïFÃòÇŠZ,ÀâFQ  ¡BoxÁ¤ò¥ól—ÌW¸UL9èAèAéAGlobalÁ X©ï mº ÔQ + +ï£+§ æ*¤+phantomÁæ*¥+Ùæ*'wÙÌEy}ËJÑJQæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ËJQQ²HQQQQQQQíHQöHQÿHQˆIQIQšIQQQQQÖëÖëk×ëžEì.g¨×[öl»QÕDÕDCStringÁÖDžEŠ)ÔtT¢&úQ˜˜GroupÁžE<j¸] Ü#QþFQ¯¯PunctÁ°chÁ±spacingÁ²ƒ
g¾tÏQÉÉLiteralÁÊžEË®E|ßWjR”r¨QŠ¿MŒòŽˆFòÿMòÕNòp!À1CQ‹Fÿ·´´µÖ ñ4„êcÁ™Qÿ·´´µÖ ñ4„êcÁ™Qÿ·™QÏQÿ·ÏQÏQ¸ÏQçËJíËJô 8ô 8ÉRô
âFôâFÊôš?š?§?bufÁü9ž? ü92þq¡2âFÑJô­­e°Ë ÄêW$|CwyâFÑJô»»¼Å&¾ò û“1„¯°â`âFË»»¼Å&¾ò û“1„¯°â`ËJ¥æT†IæTQæTµ¹¹ºû¼ò º èä ÛîËJµ½½¾ŸÀò #º°AvÇ´@ËJËœœû5Ÿò ÅDã••ÀfËJ¥¯V˜]¯Vš]¯Vž]¯V ]¯Vœ]¯VÿƒƒÂžE®EFu0# 3(ÿ DelimSpanÁ˜žEÝ®EÝ?_oPV\ÉÿËJ£WáWËJþ$þ1
5
9Ä<»¤¦¨›Eª¬®°²´U
X
[»_ b +eæ‚hjElnprtvxz|~ˆŠŒÖëŽÕD˜Ä¯É˜šþ°»·´À´É´Ò´Û´ëòù
ÿ
 Œš?œ­£»¿» œÁ»¢œ¬»Ì¹Ð½çœêœíœðœóœƒƒƒ Å#.Q!Eÿ·®¸çíôË'¥†Iµ˜]š]ž] ]œ]ÿ
µ´
PÄ”T”
•FPK"üˆ%4
ŒH‹FPõðõðOnceÁ÷ðžE‘F Ú®´¿-ÝLPƒü ´ü²
Ó
FL¿
Œ]
×^¨ë]ÖP*tokenÁ3a†]=·]ß]ñ 
„HÍ
$¸&*ø>«@@MR
ˆIà_ƒHj
sw
Šà_‚H,Ë
¬Ë
Rù`
'   ê
ñ
: üº·ü½. ×^Þà^à_ª`ƒª`æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ù`× ª`âåLµù`Z×^7 ù`Pžô¢ô)›^Ú_H¤`Nžaª`gù`\ù`bª`y„ŸÚ_äŸ
´Iª`@àBŸ
„H€í€í‚íôÀ4ƒí¨À4Š}?äù6Ϫ`_cøA¦z Œ
ˆI©e ¦ª
´
Å  ŠšIù`šI,• Šõfù`,Í
  ÑšI"

 å”å
R´
*,“ ¬“L™ža" |™ ²  ¸
¹* Ã7ü÷ÂÍ
Åü¼w×^«à^L‘à_üg¥©em©eŸª`Í©eæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷õfÑ ©eÜåLvšI!ù` ø×^° ügÉ×^ƒÌcÖôÚopÁàôQ ›^ ] Ú_Ìúd¬£eˆ§fŽ©e`÷gGža
ù`èügÝù`ô©eügïÚ_
"øDØb8EJ¤`U ^b
l} Šù`,ø  ¬øža "$ˆ
  
$
¤›÷g
"  |  ¹   ¿
À* ƒ
7ü¿\üêP×^öà^à_ügª`ê`ËÝbÓ©cÛåLù`h×^LÌcb×^žk(môqtermÁyô@›^É â
Ú_^¤`džaê`ž÷gù``ügUù`lª`¼ügg$† æ‚£W0üÝ3æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷£W  u,“
üø!Ôø
0âF'"Ÿ3üÏP²r  âF,ׄt 9Çsx
ää”ä
/âF& þ(4ü¥a½…À…Á…ÏÂ…òÃ…Ä…Å…òý3lËêM×^ÑÑÒ
=ClJÑÁt ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59 ³„tMVÚúÖt?,
 üò!ÔòÇs.7üÉP²r  âF„tpów@Çsz
 äÞ”ÞÖt- ø#8üŸauñw—v ­„tyów"Ú&PÖt 
·»¾¿ÎFÀòÁÂïFÃòÇŠZ,âFai  Çs
>üÆ <²r  øy „tÁ6òyÝÇst
òy

Öt3 Ô
#Ü
?üˆ
Tu
˜{,
—v
„tÚIòy¨ÖtŽ”¨„¨
ÜÄ
Rs/´Éõ ôüäSü—^F\ÿr‹FT›×^à^¬"tokensÁ,k}÷È}Ï‹F´¨
Ss'Œ­ ÃÄüÑsTFsÿrŒ@µšsvs{
Ô±
RâF&ŒºÒWüùY×^¦‚t,†à^4×^g„t"ë}&Pñ€˜
 ÔÃñ€.ŒÌäZü‹Y×^¸ñwà^×^c„tƒów )ë}-Wñ€òyÔçñ€6Œðˆ^ü¯Y×^ܘ{à^×^c„t"ë}&Pòy´ñ€
  ÚÚUniqueÁÜ÷ ÏÝ®EÏÖ°1—íJ5ËJÒÒËÔ÷ ºóî°°TÛnÕËJ ËJÔùL‚
RËJµŒ‚šaüÁY×^î ‹Jà^×^j ËJJ$–†,5ë}9fµ†®
·K"ÔŠL“µ†<4Œ“«düÒY×^ÿ ‚Kà^×^f•‡#ë}'T퇿µ†ž
< ¢ŠËJœºµ† ºŒ¼ÞüÞgü¬,×^ ÚKà^åL¤•‡š×^ˆ*ë}.Å~µ†¾
¸",3falseÁ
¹",3falseÁ
»",3falseÁ
½",3falseÁ
¾",3falseÁ
¿",3falseÁ
Á",3falseÁ$”
Â",3trueÁ
Ä",3trueÁ
Æ",3falseÁ
Ç",3trueÁ$
È",3trueÁ
Ê",3trueÁ
Ë",3falseÁ$ÿ
Í",3trueÁ
Ï",3trueÁ
Ð",3trueÁ
Ñ",3trueÁ$… 
Ó",3trueÁ
Ô",3trueÁ
Ö",3trueÁ
Ø",3trueÁ$„

Ù",3trueÁ

Ú",3trueÁ
Š
ºŒù ×^
s$
 +sT

Ü",3trueÁ

Ý",3trueÁÜ» ÏQàèü÷isÏQÌ“s 0
é",3trueÁ
ê",3trueÁ æ‚ÿrîüÍBæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ÿrÿr päà ¢™Qïü™mÿr™Qܶÿr 0
ð",3falseÁ
ñ",3falseÁ
ø",3trueÁ
ü¥/ü¥(
÷ÉR,'Þýü×ÉRöÏQü÷  ÉRö¡
I¦¡$
þ",3trueÁ
 ü«/ü«(¦¡1 äƒüÝÝ¡üý  ÉRö¡xà£E¦¡$–
",3trueÁ\Ÿ!$¤!
ÊmâF$Ÿ!4¤!üž!" øÏQÊ!üÐ zˆfˆf¥‹f§ ÝeŒf
end_or_lenÁÝef®EÝe©ø(<²YïÝâFÏQüð  óRÌ¥Íú¤ê$‰!
Š",3trueÁ$º!
",3trueÁ$˜#©¦\˜#$#ú¤(4#ü—#" ÏQÃ#üÉ"zÊ¥üé" „SDÜ"Ì¥r©¦Aú¤$‚#
",3trueÁ$³#
",3trueÁ\%
·šS$%"'$†%ú¤"4†%ü€%" éÏQ¬%ü²$zÊ¥üÒ$ šSDÅ$Ì¥©¦ŸA˪¼ú¤Â$ë$
š",3trueÁ$œ%
",3trueÁ\ó&$ø&
ÏâFÑJ$ó&4ø&üò&" 0 ÏQž' ü¤&zÊÊ¥ÍôÄ6EÉ?FÂÐâFÏQüÄ& éSD·&„®®k¯­Ë$Ý&
¡",3trueÁ$Ž'
¢",3trueÁ4è(âFÄè(|ï(
÷âF/Œï(Š)§üš(pâFöÏQüº( ¨TD­(„tD¬°$Ó(
¨",3trueÁ( é*ËJ
¦ËJ*2( º* »ËJ ¿*Ã+æT6 æT@ËJ}•‡Xbš²¢4Ò-ËJdÍ- æ‚ËJß-«ü¤-;ÚKL¹-æT$°-ËJZ34â.ËJlâ.$é.
ˆIËJ.4é.õ.¯ü¯.Fæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ËJ‡I”Å. æTL·. ËJ¾Ç´Ç4ã/ËJÄã/Lê/µ†(4ô/Œê/‚0²ü«/W×^Ø/ì²,¸/à^4¿/×^e•‡#ë}'Rµ†Œä0 ÁËJü×0 ½ËJüÏ0( ¹ËJù0³üŸ0Z»UT¾0ËJ$²0õUcÁÁÂÈÄò ªDx˜V·Â\ËJ²ƒ
Jktë3½½¾ŸÀò #º°AvÇ´@£WÁÁÂÈÄò ªDx˜V·Â\£W£Wƒ4Æü¼3G£W$Ø3¹¹ºû¼ò º èä Ûî£W$Ï3 \Tø4ÁÁÂÈÄò ªDx˜V·Â\áWáWŒø4$ƒ5
é^4ƒ5“5ÈüÈ4K£W$å4 ½½¾ŸÀò #º°AvÇ´@áW,Û4 áWÓiÞ»©ù §!DÁ §!
­Rù À!*( 1Ëüæ5EËJ ƒ6 ¿¸,ù5`6˜½}<Ç7õUØ7Ïü˜7@ õUl«7 »U,¡7 2<ø8¿¸‰9ÓüÉ8@Ö½lÜ8»¾,Ò8 .(:†sËJš²%-(:½r œËJ:Âr¤+¯V6 ¯V@ËJx•‡Xbš²4ñsËJlñs$øs
0ËJ,4øs„tæüÄs@²rdÚs½À,Ðs•‡m5›Áw< uËJôuu
/ËJ, ©u(±uéüÎtcu\÷t½À,Õt—v Üt•‡{Ú K°Â<ÕvËJÜÅv|Åv
]ËJ- Þv)ævìü†v`u\¯v½À,v—v ”v•‡|Ú KàÃ<“xËJô€x”€x
Ÿ]ËJ- œx)¤xïüÁwcu\êw½À,Èw—v Ïw•‡|Ú K‘Å<ÑyËJô¾y”¾y
¡]ËJ- Úy)âyòüÿxcu\¨y½À,†y—v y•‡|Ú KÂÆ<‰{ËJäøz„øz
]ËJ- {)š{õü¹zau\âz½À,Àz—v Çz•‡|Ú KóÇÄôŒù
T•‡œùüé$
ˆC üÆM£W•‡‹F4’Éž¾Éy¼Ñ* »ËJ¼&æT1ËJ8?M »ËJd¼qæT|ËJƒŠ¬ë1 ¹ËJº&»U1õU8?M ¹ËJdºq»U|õUƒŠÔ£2 ½ËJ¾&õU1¿¸9@N ½ËJe¾rõU}¿¸ŒÌß2 ÁËJÂ&¿¸2ËJ9@N ÁËJeÂr¿¸~ËJŒüÔr1 œËJ'¯V2ËJ9@N œËJer¯V}ËJ%(Aù®Ù  &§ ŒÕ'
t›  öè .÷ÔQø™"Œ¡¼±"ô“¾˜Ö"Ä…Àõ"¤èĚǯ#„éâœÆ#Ä·æå#̧êž…$ü£í!Ÿ­$ÄÁð Ì$ü ¡ó$\®¡¢…%œ­É£Î ,Ó†¥Ô6lì­¦üúûüŽ [![github]](https://github.com/dtolnay/quote)&ensp;[![crates-io]](https://crates.io/crates/quote)&ensp;[![docs-rs]](https://docs.rs/quote)Á©ü“jg [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=githubÁüþnk [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rustÁüímj [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rsÁÛ© <br>Áè©üìNK This crate provides the [`quote!`] macro for turning Rust syntax tree dataÁü»*' structures into tokens of source code.Áæ©üêJG Procedural macros in Rust receive a stream of tokens as input, executeÁüµPM arbitrary Rust code to determine how to manipulate those tokens, and produceÁü†PM a stream of tokens to hand back to the compiler to compile into the caller'sÁü×MJ crate. Quasi-quoting is a solution to one piece of that &mdash; producingÁü¥%" tokens to return to the compiler.ÁË©üÏNK The idea of quasi-quoting is that we write *code* that we treat as *data*.ÁüžLI Within the `quote!` macro, we can write what looks like code to our textÁüëJG editor or IDE. We get all the benefits of the editor's brace matching,Áü¶ OL syntax highlighting, indentation, and maybe autocompletion. But rather thanÁü†
PM compiling that as code into the current crate, we can treat it as data, passÁü×
OL it around, mutate it, and eventually hand it back to the compiler as tokensÁü§ -* to compile into the macro caller's crate.ÁÕ ©üÙ FC This crate is motivated by the procedural macro use case, but is aÁü  PM general-purpose Rust quasi-quoting library and is not specific to proceduralÁ  macros.Áý ©\
 ```tomlÁ
 [dependencies]ÁŒ 
 quote = "1.0"Á
 ```Áº
©
ÙÖÇ
©

# ExampleÁÙ
©üÝ
OL The following quasi-quoted block of code is something you might find in [a]Áü­OL procedural macro having to do with data structure serialization. The `#var`ÁüýNK syntax performs interpolation of runtime variables into the quoted tokens.ÁüÌMJ Check out the documentation of the [`quote!`] macro for more detail aboutÁüšLI the syntax. See also the [`quote_spanned!`] macro which is important forÁüç,) implementing hygienic procedural macros.Á©Ô˜ [a]: https://serde.rs/Á³©òἿ # use quote::quote;Á,×ÄÝ # let generics = "";Áäö # let where_clause = "";ÁÄ“ # let field_ty = "";Á¼¬ # let item_ty = "";Á¤Ä # let path = "";Á¬Ù # let value = "";ÁçÌõ let tokens = quote! {Áü63 struct SerializeWith #generics #where_clause {ÁüÆ! value: &'a #field_ty,Áüè96 phantom: core::marker::PhantomData<#item_ty>,Á¬©ü°SP impl #generics serde::Serialize for SerializeWith #generics #where_clause {Áü„LI fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>ÁŒÑ whereÁüã%" S: serde::Serializer,Ál‰
ü—-* #path(self.value, serializer)Á
®êÝ©¼á SerializeWith {ÁÔù value: #value,Áü”;8 phantom: core::marker::PhantomData::<#item_ty>,Á®ê };Áòáé©ÙÖö©üú # Non-macro code generatorsÁš©üžOL When using `quote` in a build.rs or main.rs and writing the output out to aÁüîDA file, consider having the code generator pass the tokens throughÁü³OL [prettyplease] before writing. This way if an error occurs in the generatedÁüƒ85 code it is convenient for a human to read and debug.Á¼©üÀ;8 [prettyplease]: https://github.com/dtolnay/prettypleaseÁÿ¾ Á ð8Ž Ð7https://docs.rs/quote/1.0.41ÁôÒü»7%(Aù®èÙé è ç&§ æ'
å öè ä.÷ÔãQø™"â±"à˜Ö"Þõ"Üš#Ú¯#ØœÆ#Öå#Ôž…$ÒŸ­$Ï Ì$Í¡ó$Ê¢…%ȣΠƥÔ6ĦEHK”³B¼ç7< !ÔD Qøô$Ë0\7þ TokenTreeÁLD
|TTDü)%8:!#üé)üQB? TokenStream extension trait with methods for appending tokens.Á©ü˜PM This trait is sealed and cannot be implemented outside of the `quote` crate.Á  Ö©süé #s îùîù   üŒGü™*' For use by `ToTokens` implementations.ÁÈ©üÐ74 Appends the token specified to this list of tokens.Á4§ §süg×^ ´

  Õ©üg ³ügP
süg^,¤/1ü°büÙ*ºùˆ©<òáüœ30 # use quote::{quote, TokenStreamExt, ToTokens};ÁüÔ# # use proc_macro2::TokenStream;Áçl†
struct X;Á˜©Ì  impl ToTokens for X {Áü¾74 fn to_tokens(&self, tokens: &mut TokenStream) {Áüú.+ tokens.append_all(&[true, false]);ÁL­®êÅ©äÍ let tokens = quote!(#X);Áüî1. assert_eq!(tokens.to_string(), "true false");Áòᨠ¨sÍ
×^ Í
 Á Õ©Ñ€ ¾HÑ€QÑ€‚HD‰
sÑ€ôDFüª ‡ü˜*ºùÇ©üÏIF Appends all of the items in the iterator `I`, separated by the tokensÁD  `U`.Á„­ © ©sÑ€´
×^ Í
´
 Ä  ù€ ¾ Õ©„ƒ Á ŠšD“
Q„ƒ
sÑ€„ƒôÖjØ Z\VXüú Šü·
*ºùæ
©üî
DA Appends all tokens in the iterator `I`, appending `U` after eachÁü· >; element, including after the last element of the iterator.ÁŒý ª ªsÑ€„ƒ×^ Í
´
  ù€ Áƒ Š š âƒ
sÑ€„ƒ ô Žp$© JLOQüˆ
#‹Fü²
G
« «‹FŒ]×^´
 ¿
Õ©Œ] ¼
³Œ]P
Œ]
›^ï.+-üºb¬ ¬‹Fà_×^Í
 ËÕ©à_ ÈHà_Qù`D“
à_ôÇ068ü÷„ú­ ­‹Fà_üg×^Í
´
 µ‰ ýû ŽʼnÔ‰Qüg
à_üg$ôq4Öjz4IKNPü¿ŠŒÂ® ®‹Fà_üg×^Í
´
  Úµ‰ Ôýû ×ʼnÔ‰‡‹
à_ügô7Žp7CEHJ#þ!"ÄÚ„ù##Üùœù#Ü’‹FÌÝü/, Formatting macro for constructing `Ident`s.Á0©D4ÙÖ=©dA # SyntaxÁN©üROL Syntax is copied from the [`format!`] macro, supporting both positional andÁ¤¢ named arguments.Á·©ü»NK Only a limited set of formatting traits are supported. The current mappingÁüŠ! of format types to traits is:Á¬©ü°  * `{}` ⇒ [`IdentFragment`]ÁüÑ+( * `{:o}` ⇒ [`Octal`](std::fmt::Octal)Áüý1. * `{:x}` ⇒ [`LowerHex`](std::fmt::LowerHex)Áü¯1. * `{:X}` ⇒ [`UpperHex`](std::fmt::UpperHex)Áüá-* * `{:b}` ⇒ [`Binary`](std::fmt::Binary)Á©ü“*' See [`std::fmt`] for more information.Á¾©ÙÖË©œÏ # IdentFragmentÁã©üçOL Unlike `format!`, this macro uses the [`IdentFragment`] formatting trait byÁü·B? default. This trait is like `Display`, with a few differences:Áú©üþMJ * `IdentFragment` is only implemented for a limited set of types, such asÁüÌ$! unsigned integers and strings.ÁüñMJ * [`Ident`] arguments will have their `r#` prefixes stripped, if present.Á¿©üÃ+( [`IdentFragment`]: crate::IdentFragmentÁüï! [`Ident`]: proc_macro2::IdentÁ©D•ÙÖž©
# HygieneÁ°©ü´OL The [`Span`] of the first `Ident` argument is used as the span of the finalÁü„ KH identifier, falling back to [`Span::call_site`] when no identifiers areÁ
provided.ÁÞ ©òáôê  # use quote::format_ident;Áü‰
)& # let ident = format_ident!("Ident");Áü³
PM // If `ident` is an Ident, the span of `my_ident` will be inherited from it.Áü„ <9 let my_ident = format_ident!("My{}{}", ident, "IsCool");ÁüÁ *' assert_eq!(my_ident, "MyIdentIsCool");Á òáô ©üø IF Alternatively, the span can be overridden by passing the `span` namedÁ 
argument.ÁÐ © òáôÜ ¬™üû 63 # const IGNORE_TOKENS: &'static str = stringify! {Áä²
 let my_span = /* ... */;Á
 # };矯
30 # let my_span = proc_macro2::Span::call_site();ÁüŒ-* format_ident!("MyIdent", span = my_span);Áòá©üÆ [`Span`]: proc_macro2::SpanÁüæ52 [`Span::call_site`]: proc_macro2::Span::call_siteÁœ©|  <p><br></p>Á°©d´ # PanicsÁÁ©üÅKH This method will panic if the resulting formatted string is not a validÁ| identifier.Á¡©ÙÖ®© # ExamplesÁÁ©üÅ*' Composing raw and non-raw identifiers:Áòáôø¬™ü—2/ let my_ident = format_ident!("My{}", "Ident");ÁüÊ$! assert_eq!(my_ident, "MyIdent");Áï©üó%" let raw = format_ident!("r#Raw");Áì™ assert_eq!(raw, "r#Raw");Á·©ü»>; let my_ident_raw = format_ident!("{}Is{}", my_ident, raw);Áüú-* assert_eq!(my_ident_raw, "MyIdentIsRaw");Áòá°©ü´ Integer formatting options:Áòáôܬ™´û let num: u32 = 10;Á©ü–.+ let decimal = format_ident!("Id_{}", num);ÁüÅ! assert_eq!(decimal, "Id_10");Áç©üë.+ let octal = format_ident!("Id_{:o}", num);Áüš assert_eq!(octal, "Id_12");Áº©ü¾/, let binary = format_ident!("Id_{:b}", num);Áüî" assert_eq!(binary, "Id_1010");Á©ü•2/ let lower_hex = format_ident!("Id_{:x}", num);ÁüÈ" assert_eq!(lower_hex, "Id_a");Áë©üï2/ let upper_hex = format_ident!("Id_{:X}", num);Áü¢" assert_eq!(upper_hex, "Id_A");Áòá¿ dÏ-- ÷ ¦ ý , þ8¥ÿ& 8Ì* Œ , 8,—'œ8§ Œž ¯ ° ú ± ù , ¿8'Å8Á'Ð8Ð'Ø8Í$ Þ, ì8¥í%  ˆ  , 8¥Š& 8Ì$ ,   ž, 8restÁ$—& 8¦œ
Ÿ*¢ ¥ £, ¯8'µ8§ Œ· È É  Ê  , Ø8'Þ8Á'é8Ð'ñ8Í$ ÷, 8¥,   , 8î¬$—
œ% ¤ôÈ¿ d«ÿ» ¾ Å84¿¿/ ç ¹%  š  , 8ƒ
& 8Ì$ˆ$ Œ, Ž  , 8¥& 8¦
˜*œ Ÿ š, ©8'¯8Á'º8û Ä 
 Ò, Ó8'Ù8Á'ä8¸ ì í ö, î ï ô, ð8¥ñ
õ$ ÷, 8ƒ
$†$ Š%  · â ¸ Ï, ¹8oldÁº& ½8Ì$ Â, Ä Å Í, Æ8¥Ç& Ê8¦Ë
Î8ƒ
 Ö, Ø8ƒ
& Ý8Ì*ä ç °, ñ8'÷8§ Œù Š  ª Œ , 8벎$ ,   , 8¥
š8ƒ
$ ¢, ¤8ƒ
$ ©% ± · ð  ¸ Ï, ¹8벺& ½8Ì$ Â, Ä Å Í, Æ8¥Ç& Ê8¦Ë
Î8ƒ
 Ö, Ø8ƒ
& Ý8Ì$ â, ä å î, æ8î¬& ë8¦ì
ï*ò õ , ÿ8,€'8§ Œ‡ ˜   š ˆ, ¨8'®8Á'¹8Ð'Á8Š'Ç É, Ê8'Ð8Á'Û8 á â è, ã8ƒ
$ é, ÷ ø ý, ù8¥ú
þ, Š  , Œ8î¬$
% š · é
 ¸ Ð, ¹8ƒ
& ¾8Ì$¿$ Ã, Å Æ Î, Ç8¥È& Ë8¦Ì
Ï, Ò8¾
& ×8° Þ, à8argÁá& ä8Ì*ë î ¸ , ø8'þ8§ Œ€    ²   £ , 8ƒ
$• $ ,  œ  ¡ , 8¥ž 
¢ , ¥ 8¾
 « , ­ 8¼® $ ± % ¹  ¿  ÿ  À  Ø , Á 8ƒ
& Æ 8Ì$ Ë , Í  Î  Ö , Ï 8¥Ð & Ó 8¦Ô 
× , Ú 8¾
& ß 8° æ , è 8¼é & ì 8Ì$ ñ , ó  ô  ý , õ 8î¬& ú 8¦û 
þ *! „! »" 8,Ž!, ”!8,•!'š!8ÁLœ!'¥!8û5¤§! »! Á! ¼!, ½!8¼¾! Ã! µ" 8¼Ñ!*Õ!, Ø!8,Ù!'Þ!8§ Œà! ñ! ò! ª" ó! Ÿ", ô!8ƒ
$õ! ù!8  ú! ü! ‡"8¼ý! €"8ƒ
$" …" †"$ ˆ", Š" " ", Œ"8¥"
"$ ", ”"8¾
$•" š"8¼œ", ¡" ¢" ¨", £"8î¬$¤"
©"$ «"% ¼" Þ" # ß" ÷", à"8ƒ
$á"& å"8Ì$æ"$ ê", ì" í" õ", î"8¥ï"& ò"8¦ó"
ö", ù"8¼ú"& ý"8Ì$þ"*„# ‡# É#, #8,#'—#8§ Œ™# ª# «# Ã# ¬# ¼#, ­#8ƒ
$®#$ ²#, ´# µ# º#, ¶#8¥·#
»#, ¾#8¼¿#$ Â#% Ê# Ð# $  Ñ# é#, Ò#8ƒ
$Ó#& ×#8Ì$Ø#$ Ü#, Þ# ß# ç#, à#8¥á#& ä#8¦å#
è#, ë#8¼ì#& ï#8Ì$ð#$ ô#, ö# ÷# €$, ø#8î¬$ù#& ý#8¦þ#
$*„$ ‡$ ¶% 8,$, —$8,˜$'$8ÁLŸ$'¨$8û5¤ª$ ¾$ Ä$ ¿$, À$8¼Á$ Æ$ °% 8¼Ô$*Ø$, Û$8,Ü$'á$8§ Œã$ ô$ õ$ ¥% ö$ š% , ÷$8ƒ
$ø$ ü$8  ý$ ÿ$ Š%8¼€% ƒ%8ƒ
$„% ˆ% ‰%$ %, % Ž% “%, %8¥%
”%$ •%8¼—%, œ% % £%, ž%8î¬$Ÿ%
¤%$ ¦%% ·%”–.»()¥"ÚY(*ˆF,9Ä(,Â$@ƒ(-”HL;Ô+.0 "¼ÒüH96 Specialized formatting trait used by `format_ident!`.Á©ü†NK [`Ident`] arguments formatted using this trait will have their `r#` prefixÁÌÕ stripped, if present.Áï©üó/, See [`format_ident!`] for more information.Á£©ü§*' [`format_ident!`]: crate::format_identÁ..ÜùüÒÀ./0/00/ü¥5üð0- Format this value as an identifier fragment.Á¨¯°± ¯s °ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59±u. ¬.
/sÚ ³ôÝüà.+ Span associated with this `IdentFragment`.Á©ü›=: If non-`None`, may be inherited by formatted identifiers.Á$ಠ²s²r. å.
0sü”48³2³2Ö©âF .âFÝF3434ôÏ´ ´ÝF²r1 ×1
38âFü¥4¨µ· µÝF ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59·u1 ¬1
48âF$­ÚÕ:üŠ88¸66¸ÓÔ ãÔl’ïF7887ôɹ ¹ïF²r5 Ñ5
78âFüŸ4¢º»¼ ºïF »ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59¼u5 ¦5
88âFÚ!<ä„ þF:;:;ô§ ½ ½þF²r9 ¯ 9
:üí 4𠾿À ¾þF ¿ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59Àu9 ô 9
;Ú û üì S8Á==ÁÓÔ ñ ãÔ ²âF ÀG>?>?&(ôÆ   ÂÀG²r< Î <
>8âF üˆ
4
ÃÄÅ ÃÀG Äü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59Åu<
<
?8âF$
ÚÊ=ü€#´ ¤  ª µ, « ¬ ², ­8 ®& ¯8«°$ ³
´*· º , Ä Å 88è 8
æ, ê8 ë í ƒ8 ÿ8¥  £
 8$‡$ 8Ú & Ž 88¥'˜8š(¥8¥¨'«8ø4­ ´ õ8¥Ê'Í8Š'Ö8¥Ø Û ã8$ à8Ú â
Ž% Q
t  ABö.»ACïB +ADô$PË0AE¿M,h˜AGˆF,oÄAHÕN<vÉAIÿM,¯AJÂ$†ƒAKþALÝöL™AMk$´ÖëAO…M<ºÕDAò”ãl7ÖTJÉüZI½¿¯±¡£vxfhÌ©\^LN”†üÅ@= Types that can be interpolated inside a `quote!` invocation.ÁDQQÜùü†ÀQRSTRSTRTSüÚ .üŸ,) Write `self` to the given `TokenStream`.ÁЩüØIF The token append methods provided by the [`TokenStreamExt`] extensionÁü¦41 trait may be useful for implementing `ToTokens`.Áß©£âù©üDA Example implementation for a struct representing Rust paths likeÁÔÊ `std::cmp::PartialEq`:Áé©òáüýDA use proc_macro2::{TokenTree, Spacing, Span, Punct, TokenStream};ÁüÆ*' use quote::{TokenStreamExt, ToTokens};Áõ©¬ý pub struct Path {ÁÌ— pub global: bool,Áüµ'$ pub segments: Vec<PathSegment>,Á®þë©äó impl ToTokens for Path {Áü”7¬ýüÐB? for (i, segment) in self.segments.iter().enumerate() {Áü—)& if i > 0 || self.global {ÁüÅ(% // Double colon `::`ÁüòC@ tokens.append(Punct::new(':', Spacing::Joint));Áüº C@ tokens.append(Punct::new(':', Spacing::Alone));ÁŒ‚
ü˜
*' segment.to_tokens(tokens);Á
í
®ê
®þ
çìû
 # pub struct PathSegment;Á, çü§ %" # impl ToTokens for PathSegment {ÁüÑ 96 # fn to_tokens(&self, tokens: &mut TokenStream) {Áô  # unimplemented!()Á  # }Á  # }Á òá ÆÇ Æs Ç‹F×^Q ç QÈ} ë}4î üä(üŽ
85 Convert `self` directly into a `TokenStream` object.ÁË
©üÓ
JG This method is implicitly implemented using `to_tokens`, and acts as aÁü¢=: convenience method for consumers of the `ToTokens` trait.Á|çÈ Ès‹FQ ÷QµüÑHüû8êð¸©üÀJ¶ñü=‰òŒÔsFQQÕ©s,“
Tsœ?üÈ*8ÉVÉVÓÔ ÍQâFÝFWWüù-ÊË ÊÝF Ë‹F×^U U
W8âF$‡ë}A@üÖ.8ÌYYÌÓÔ Û½õïFZZü‹-ÍÎ ÍïF ΋F×^X ˜X
Z8âF$™ë}ù@üè@À\]\]ÓÔ ñ¬Ü½õD‡µI^^í!#ü¯-ÏРϵI ЋF×^[ ¼[
^ÀâFë}ÁAüŒ.``Ö©ËJ QËJDJaaüÁ-ÑÒ Ñ‹J Ò‹F×^_ Î_
aËJë}Cüž-ccëù £ûù‚KddüÒ-ÓÔ Ó‚K Ô‹F×^b ßb
dËJë}åCü¯(ffÕ©ËJ ´ûùÚKggüÞ-ÕÖ ÕÚK Ö‹F×^e ëe
gËJë}ÙD¬âiiüþ-Lר × Ø‹F×^h h
ië}4’Äå²Hkkü„-L‡ÙÚ Ù²H Ú‹F×^j j
k$’ë}4˜¤æ¸Lmmü-L„ÛÜ Û¸L Ü‹F×^l Žl
m$ë}4•¬îÁLooüŠ-LÝÞ ÝÁL Þ‹F×^n n
oë}4ž¬øÊLqqü”-L—ßà ßÊL à‹F×^p ¡p
që}4¨¬‚ÓLssüž-áâ áÓL â‹F×^r «r
së}4²´Œ ÜLuuü© -ãä ãÜL ä‹F×^t t
uë}4½ ¼˜!åLwwü¶!-L¹!åæ ååL æ‹F×^v Ã!v
w$Ä!ë}4Ê!¤¦"íHyyüÁ"-LÄ"çè çíH è‹F×^x Î"x
y$Ï"ë}4Õ"¬®#öH{{üÊ#-LÍ#éê éöH ê‹F×^z ×#z
{$Ø#ë}4Þ#¬¸$ÿH}}üÔ$-L×$ëì ëÿH ì‹F×^| á$|
}$â$ë}4è$¬Â%ˆIüÞ%-Lá%íî íˆI î‹F×^~ ë%~
$ì%ë}4ò%´Ì&Iüé&-Lì&ïð ï‘I ð‹F×^ ö&
$÷&ë}4ý&¼Ø'šIƒƒüö'-Lù'ñò ñšI ò‹F×^ ƒ(
ƒ$„(ë}4Š(¬æ(¤M…ü‚)-L…)óô ó¤M ô‹F×^ )
$)ë}4)¬ð)­M‡üŒ*-L*õö õ­M ö‹F×^ ™*
$š*ë}4 *´ú*ü—+-Lš+÷ø ÷ ø‹F×^ˆ ¤+ˆ
$¥+ë}4«+´‚,üŸ,-L¢,ùú ù ú‹F×^Š ¬,Š
$­,ë}4³,´Í-
t_ ¥ö¥zÚY¦ô$‰Ë0§BitOrÁ,žÿ·¨¿M,·˜ªˆF,¾Ä«ÿM,ů¬SpacingÁ<̵­Ýö®¸4€¯Ðæ‚°ü4žx{UXü>069%(Ltù„“åü©6ÖØÅÇ´œžŠŒlù}¤Ÿq”Åÿ¸ » Â8œž ParenthesisÁŸ BraceÁ¡¢BracketÁ£¤Í\p{s‘»élÿô ÷ þ8£W¤³ÿ¦ © °8‹Füô%ÿç ê ñ8\ÿîîl‹´´µÖ ñ4„êcÁîñ4„êcÁµ˜m´´Á m üœ5™Qº¼¼2E}E··™QÈEüþ>,™Q™Q™Q··
¼$‡_rhsÁ$F^F©Füå4ÏQÃÅÅôF?G\ ÀÀÏQ‰GüÅ=ÏQ™QÏQÀÀ
ÅÍ¡ÓGHhHüª4™QÌÎβHüHÉÉÏQGIüŠ<,™QÏQÏQÉÉ
Î$“Í¡$™‘IÛI%Jüî3ÏQÕ××oJ¹J4­ ÒÒÏQKüÍ <ÏQÏQÏQÒÒ
×Í¡MK—KáKüŽ
1ÏQLÕL\¿üÄ
NK Extension traits used by the implementation of `quote!`. These are definedÁü“NK in separate traits, rather than as a single trait due to ambiguity issues.Áâ©üæMJ These traits expose a `quote_into_iter` method which should allow callingÁü´NK whichever impl happens to be applicable. Calling that method repeatedly onÁüƒ,) the returned value should be idempotent.Áÿ² µ ¼8ÇçíôÖ´ÞàÖµÞàÅ&Lê»ÞáÅ&¼ÞáÔD…QÞâø btree_setÁ$·í(ÞäeD½­ÞåŽß_ÞæüÕµ·‘|þmü—/SL«EG\Ð8üÂ*üâHE Extension trait providing the `quote_into_iter` method on iterators.Áÿ± ´ »8ççðô†Isçðô'×®ðô3×®èèü÷5sЛçç
ès`M„MÎMüì&ììÉü ñ†IËJËJÄáü›>; Extension trait providing the `quote_into_iter` method forÁüÞFC non-iterable types. These types interpolate the same value in eachÁü©  iteration of the repetition.ÁÿÐ Ó Ú8ííÜùüá«íîïîïîïüÍü„DA Pretend to be an iterator for the purposes of `quote_into_iter`.ÁüÑ?< This allows repeated calls to `quote_into_iter` to continueÁü™+( correctly returning HasIterator<false>.Á$Ð sæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷Ô´í Õí
îsü™8Œ Œsíµ™Qí ¬í
ïs$­(OsOü’/óóëù ûùËJôÕüÊIF Extension trait providing the `quote_into_iter` method for types thatÁü˜%" can be referenced as an iterator.ÁÿÄ Ç Î8„ßôõôõÜùüÕôö÷ö÷Õ©sö¤þ†Iú¸D‰ò¸¹÷ðœþôôüœ@ sú¸ÏQôô
÷s¾OüèFú8ûúûÖ©ÉR ñôÉR
 ôæ5\í5 ¿¸ËJÉ ù5É
ËËJ$ú5ä·6ÍÍÉü ¼6»UÎÏÏ\Þ64ã6ÌÌõUü˜7 ,›7 »U »UÌ ¡7Ì
ÏËJ$¢7üä7!ÑÑÉü é7õUÒÓÓ\84•8Ðп¸üÉ8 ,Ì8 õU õUÐ Ò8Ð
ÓËJ$Ó8ü¢9Uÿ•9 ˜9 Ÿ984™9t“9T©9 ‹Fž‹F×^ ¼9
Ôë}4´9 delimiterÁLÎ9žE,ä9ü½:|ÿ°: ³: º:84´:t®:”Ä: ‹F£Wž‹F×^ ä:
Õë}4Ü:ƒ
$ú:ýØLŠ;žE,¤;ü¨</ÿ< ž< ¥<84Ÿ<t™<,¯<˜ ˜‹F ×^ ½<
Öë}4µ< Ï<üÑ=CÿÄ= Ç= Î=84È=tÂ=lØ=š š‹F£W ×^ î=
×ë}4æ=ƒ
$€> Œ>þ>×<closure_kind>ÁØ<closure_signature>ÁØ<upvars>ÁØØ×ØÁLPP £WüÜ?CŒß?P£WP
Ù^,õ?ƒ
$‡@<ÁAÙÛÜÚôÜÚ’ÝÚÚÙÚÁL¹ÞÆÞüªC4ÿC  C §C84¡CtCT±Cœ œ‹F ×^ ÄC
Ûë}4¼C ÖCü¾DHÿ±D ´D »D84µDt¯D”ÅDžŸ ž‹F£W Ÿ×^ àD
Üë}4ØDƒ
$òD þDüÈE>ÿ»E ¾E ÅE84¿Et¹ElÏE ¡  ‹F ¡×^ åE
Ýë}4ÝE“ D÷Eü¼GRÿ¯G ²G ¹G84³Gt­G¬ÃG¢£ ¢‹F£W £×^ áG
Þë}4ÙGƒ
$óG“ DÿG¼”JT¡J ¬J œY  ²J ×J , ³J8¾
$´J& ¸J8°,¹J, ¿J8« <ÀJ& ÇJ8°,ÈJ, ÎJ8char1Á,ÏJ& ÔJ8¦ÕJ*ÙJ ÜJ ØM+ æJ çJ óJ8ÿèJ ëJ òJ84ìJ8ýJ8 K, „K8¾
$…K ‰K ¢K8ë}4ŠK& K K8“K8\—K ¤K íK8ë}4²K ¸K8§
4¹K ¿K âK8ÿM,ÀK'ÅK8Ô
ÇK ÊK áK, ËK8”ä,ÌK$ ÑK8<ÓK'ÚK8AloneÁ,ÜK% ãK+ ÷K øK „L8ÿùK üK ƒL84ýK8ŽL8 L, •L8« <L L ÂL 8ë}4žL& ¤L ¦L8§L8\«L$ ¶L8ƒ
$¸L& ¼L8Â$¾L ÄL ÒM8ÒL8ÖL8punctÁ,ÚL àL8ÿM,âL'çL8Ô
éL ìL ƒM, íL8”ä,îL$ óL8<õL'üL8ðæ,þL% „M8äè,M —M8set_spanÁD˜M  M ¥M8ƒ
$¡M% ¦M8ë}4´M ºM8§
4»M ÁM ÇM8äè,ÂM% ÈM% ÙM ßM ŽN, àM8¾
$áM& åM8°,æM, ìM8« <íM& ôM8°,õM, ûM8”ä,üM& N8¦N, …N8char2Á,†N& N8¦ŒN*N “N ÒR+ N žN ªN8ÿŸN ¢N ©N84£N8´N8 ¸N, »N8¾
$¼N ÀN ÙN8ë}4ÁN& ÇN ÉN8ÊN8\ÎN ÛN ãO
8ë}4éN ïN8§
4ðN öN ™O8ÿM,÷N'üN8Ô
þN O ˜O, O8”ä,ƒO$ ˆO8<ŠO'O8JointÁ,“O% šO8ë}4¨O ®O8§
4¯O µO ØO8ÿM,¶O'»O8Ô
½O ÀO ×O, ÁO8ïë,ÂO$ ÇO8<ÉO'ÐO8ðæ,ÒO% ÙO+ íO îO úO8ÿïO òO ùO84óO8„P8 ˆP, P8« <ŒP “P ¸P 8ë}4”P& šP œP8P8\¡P$ ¬P8ƒ
$®P& ²P8Â$´P ºP ÌR&8ÈP8ÌP8äè,ÐP ÖP8ÿM,ØP'ÝP8Ô
ßP âP ùP, ãP8”ä,äP$ éP8<ëP'òP8Ëî,ôP% úP8äè,ˆQ Q8øéDŽQ Q Q8ƒ
$—Q% œQ8ë}4ªQ °Q8§
4±Q ·Q ½Q8äè,¸Q% ¾Q8ÌQ8ÐQ8äè,ÔQ ÚQ8ÿM,ÜQ'áQ8Ô
ãQ æQ ýQ, çQ8ïë,èQ$ íQ8<ïQ'öQ8ðæ,øQ% þQ8äè,ŒR ‘R8øéDR šR ŸR8ƒ
$R%  R8ë}4®R ´R8§
4µR »R ÁR8äè,¼R% ÂR% ÓR ÙR S, ÚR8¾
$ÛR& ßR8°,àR, æR8« <çR& îR8°,ïR, õR8”ä,öR& ûR8¦üR, ÿR8ïë,€S& …S8¦†S, ‰S8char3Á,ŠS& S8¦S*”S —S ™Y+ ¡S ¢S ®S8ÿ£S ¦S ­S84§S8¸S8 ¼S, ¿S8¾
$ÀS ÄS ÝS8ë}4ÅS& ËS ÍS8ÎS8\ÒS ßS ¦U8ë}4íS óS8§
4ôS úS T8ÿM,ûS'€T8Ô
T …T œT, †T8”ä,‡T$ ŒT8<ŽT'•T8Ëî,—T% žT8ë}4¬T ²T8§
4³T ¹T ÜT8ÿM,ºT'¿T8Ô
ÁT ÄT ÛT, ÅT8ïë,ÆT$ ËT8<ÍT'ÔT8Ëî,ÖT% ÝT8ë}4ëT ñT8§
4òT øT U8ÿM,ùT'þT8Ô
€U ƒU šU, „U8„÷,…U$ ŠU8<ŒU'“U8ðæ,•U% œU+ °U ±U ½U8ÿ²U µU ¼U84¶U8ÇU8 ËU, ÎU8« <ÏU ÖU ûU 8ë}4×U& ÝU ßU8àU8\äU$ ïU8ƒ
$ñU& õU8Â$÷U ýU “Y98V8V8äè,“V ™V8ÿM,V' V8Ô
¢V ¥V ¼V, ¦V8”ä,§V$ ¬V8<®V'µV8Ëî,·V% ½V8äè,ËV ÐV8øéDÑV ÙV ÞV8ƒ
$ÚV% ßV8ë}4íV óV8§
4ôV úV €W8äè,ûV% W8W8“W8äè,—W W8ÿM,ŸW'¤W8Ô
¦W ©W ÀW, ªW8ïë,«W$ °W8<²W'¹W8Ëî,»W% ÁW8äè,ÏW ÔW8øéDÕW ÝW âW8ƒ
$ÞW% ãW8ë}4ñW ÷W8§
4øW þW „X8äè,ÿW% …X8“X8—X8äè,X ¡X8ÿM,£X'¨X8Ô
ªX ­X ÄX, ®X8„÷,¯X$ ´X8<¶X'½X8ðæ,¿X% ÅX8äè,ÓX ØX8øéDÙX áX æX8ƒ
$âX% çX8ë}4õX ûX8§
4üX ‚Y ˆY8äè,ƒY% ‰Y% šYüÁj0ÿ´j ·j ¾j84¸jt²j|Èj¤ ¤‹F×^ àj
àë}4Øjü¾kDÿ±k ´k »k84µkt¯k¼Åk¥ ¥‹F£W×^ åk
áë}4Ýkƒ
$÷küªm6ÿm  m §m84¡mtmD±m¦ ¦²rþF ¾m
âidÁºmƒ
$Ämü¹n1|¼n§ §£WþF Ðn
ãä†Ìnƒ
$Önüs.ååÉü ”s.ËJl—s¯VæüÄs"$Ës¨ ¨¯V²rä Ðsä
æËJ$Ñsüˆt?èèÉü tòˆlt¯VééüÎt4Ñt©ª« ©¯V ªü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59«uç Õtç
éËJ$ÖtÚaüµuJëëÉü ºuòˆl½uš]ËJTÍu¯Vìì$&ü†v4‰v¬­® ¬¯V ­ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59®uê vê
ìËJ$ŽvÚ±aüêvPîîÉü ïvòˆlòvž]ËJlw¯Vïï$&üÁw4Äw¯°± ¯¯V °ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59±uí Èwí
ïËJ$ÉwÚbbü¨xPññÉü ­xòˆl°x ]ËJlÀx¯Vòò$&üÿx4y²³´ ²¯V ³ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59´uð †yð
òËJ$‡yÚcüæyLôôÉü ëyòˆlîyœ]ËJ\þy¯Võõ$&ü¹z4¼zµ· µ¯V ü\ü\šþ\Ÿ ÚYÿ\­RÚY„ÑÚây59·uó Àzó
õËJ$ÁzÚÄcÔ  hü³ $hÔá -h| !ÿ“! ! !84—!t!<¨!ÿˆŒÔD QùúøëVL-ùûÂ$Jƒùý\Pþùþ|Aü< 35#%üª"<´ÿÿÜùüªDsÿ½•½•ÌÓ¸ ¸s£Wÿ Ýÿ
s¬ð£W‚ÄŒ4¹ ¹£W£W 
$—Ô¾áW„Äߺ ºáW£Wƒ éƒ
ü—(ëù œûùËJ‡ÄÆ» »ËJ£W Ð
ËJü—*ù‹F£W¾Éë}4¥ˆÛÜôܒ݈ÁL¼Þ£W×^l†ˆÛÜŠôÜŠ’ÝŠŠˆŠÁL²r£W²r×^4²ˆÛÜôܒ݈ÊL£W²rÆÞùÔD…QŒøëVL«ŒŽÂƒŒCì—1Œ¾"„ÖÜùœÖ¤î£WÌŠáWü«'ëù °ûùËJ¤²!<¿! Ç! Ž… Í! Ù!, Î!8Î ,Ï!& Ô!8ò$Õ!*Û! Þ! ‹…Ü< The whole point.Á¤è!<©…"<E Performs variable interpolation against the input and produces it asÁü‘"H< [`proc_macro2::TokenStream`].Áüâ"!<©Œ#<F Note: for returning tokens to the compiler in a procedural macro, useÁü˜#I<C `.into()` on the result to convert to [`proc_macro::TokenStream`].Áüê#F<©¹$<ÙÖDÅ$<©Ö$< # InterpolationÁœâ$<©þ$<A Variable interpolation is done with `#var` (similar to `$var` inÁüŠ%D<K `macro_rules!` macros). This grabs the `var` variable that is currently inÁü×%N<E scope and inserts it in that location in the output tokens. Any typeÁü®&H<L implementing the [`ToTokens`] trait can be interpolated. This includes mostÁüÿ&O<M R
contexts.Ál²8<©È8<M There is a [`From`]-conversion in both directions so returning the output ofÁüÔ8P<G `quote!` from a procedural macro usually looks like `tokens.into()` orÁü­9J<) `proc_macro::TokenStream::from(tokens)`.Áü€:,<©µ:<ÙÖDÁ:<©Ò:<±¡tÞ:<©õ:< ### Procedural macroÁÄ;<©¢;<L The structure of a basic procedural macro is as follows. Refer to the [Syn]Áü®;O<L crate for further useful guidance on using `quote!` as part of a proceduralÁü†<O< macro.ÁTÞ<<©ñ<<Ô¤üý<)<©¯=<òá<»=< # #[cfg(any())]ÁœË=< extern crate proc_macro;Áäç=< # extern crate proc_macro2;ÁüŒ><©´><¦¹œÀ>< use proc_macro::TokenStream;ÁüÜ> <³üü…?#< use quote::quote;Á¬±?<©Ï?<÷œüÛ?6< #[proc_macro_derive(HeapSize)]Áüš@"<ÙDÅ@<= pub fn derive_heap_size(input: TokenStream) -> TokenStream {ÁüÖ@@<I // Parse the input and figure out what implementation to generate...ÁüŸAL<7 # const IGNORE_TOKENS: &'static str = stringify! {ÁüôA:< let name = /* ... */;Áì·B< let expr = /* ... */;ÁìÝB< # };ÁdƒC< #ÁL˜C< # let name = 0;Á¼ªC< # let expr = 0;Á¼ÊC<©êC< let expanded = quote! {ÁüöC< // The generated impl.ÁüžD"<, impl heapsize::HeapSize for #name {ÁüÉD/<7 fn heap_size_of_children(&self) -> usize {ÁüE:< #exprÁÌÄE<”íŒæE<íl€F< };ÁTF<©©F<4 // Hand the output tokens back to the compiler.ÁüµF7< TokenStream::from(expanded)ÁüõF#<®þ,¡G<òá<¯G<©¿G<ãŸ|ËG<©ãG< ### Combining quoted fragmentsÁüïG"<©šH<K Usually you don't end up constructing an entire final `TokenStream` in oneÁü¦HN<L piece. Different parts may come from different helper functions. The tokensÁüýHO<C produced by `quote!` themselves implement `ToTokens` and so can beÁüÕIF<I interpolated into later `quote!` invocations to build up a final result.Áü¤JL<©ùJ<òá<…K<îæ¼•K<ç,µK<$ let type_definition = quote! {...};ÁüÃK'< let methods = quote! {...};ÁüóK<©L<âȩ̀L< #type_definitionÁÄÉL<
#methodsÁ„êL<Êî4ƒM<òá<M<©¢M<ãŸ|®M<©ÆM< ### Constructing identifiersÁüÒM <©ûM<K Suppose we have an identifier `ident` which came from somewhere in a macroÁü‡NN<G input and we need to modify it in some way for the macro output. Let'sÁüÞNJ<7 consider prepending the identifier with an underscore.Áü±O:<©ôO<L Simply interpolating the identifier next to an underscore will not have theÁü€PO<G behavior of concatenating them. The underscore and the identifier willÁüØPJ<@ continue to be two separate tokens as if you had written `_ x`.Áü«QC<©÷Q<òá<ƒR<( # use proc_macro2::{self as syn, Span};Áü“R+<îæ¼ÇR<ç,çR<7 # let ident = syn::Ident::new("i", Span::call_site());ÁüõR:<ç,¸S<
// incorrectÁ„ÆS< quote! {ÁdßS< let mut _#ident = 0;ÁäôS<®þ,™T< # ;Á<§T<òá<·T<©ÇT<K The solution is to build a new identifier token with the correct value. AsÁüÓTN<C this is such a common case, the [`format_ident!`] macro provides aÁüªUF<+ convenient utility for doing so correctly.ÁüùU.<©°V<òá<¼V<" # use proc_macro2::{Ident, Span};ÁüÌV%<$ # use quote::{format_ident, quote};ÁüúV'<ç,ªW<2 # let ident = Ident::new("i", Span::call_site());Áü¸W5<ç,öW<+ let varname = format_ident!("_{}", ident);Áü„X.<ûÍd»X< let mut #varname = 0;ÁìÐX<®þ,öX<ÂÎ<„Y<òá<”Y<©¤Y<G Alternatively, the APIs provided by Syn and proc-macro2 can be used toÁü°YJ<L directly build the identifier. This is rough
unused_mutÁTÿÅ8”Æ ˜Æ ¤Æ8™Æ, Æ8¬žÆ$ ¡Æ8 £Æ ¦Æ, ¨Æ8¬©Æ ¬Æ8˜|­Æ ¼Æ ½Æ% ¾Æ8ÈÆ, ÌÆ8…±DÍÆ ÖÆ, ØÆ8…±DÙÆ âÆ8 äÆ% åÆ% ìÆüÇ%¿ dóÆ|ñÆÿƒÇ †Ç Ç84‡ÇtÇ‚h ¶Ç ÜÈ ¼Ç ÇÇ, ½Ç8¬¾Ç& ÁÇ8°,ÂÇ*ÉÇ ÌÇ ÙÈ 8ÖÇ, ÚÇ8¬ÛÇ ßÇ8,áÇ, çÇ8¬èÇ ëÇ8ä
$ìÇ ðÇ ñÇ óÇ ÒÈ8Š$È …È ˆÈ8_xÁ†È*ŠÈ, È8,ŽÈ'“È8ÁL•È'žÈ8Å&L È ©È ¬È8Þ¶ªÈ$ ­È8Í$»È*ÀÈ8,ÃÈ$ ÈÈ% ÓÈ% ÚÈìÜâ¿ d¿â|½âÿÏâ Òâ Ùâ84ÓâtÍâ“h úâ Üå €ã šã, ã8ë}4‚ã& ˆã8°,‰ã, ã ã ˜ã, ‘ã8æ™’ã& •ã8¦–ã
™ã*œã Ÿã Ùå, ©ã8,ªã'¯ã8å#̱ã Êã Ëã Óå , Ìã8ë}4Íã àã õã  áã ãã åã çã éã ëã, íã îã óã, ïã8æ™ðã
ôã ƒä ˜ä  „ä †ä ˆä Šä Œä, Žä ä ”ä, ä8晑ä
•ä —ä ¦ä »ä  §ä ©ä «ä ­ä, ¯ä °ä µä, ±ä8晲ä
¶ä ¸ä ºä Éä àä  Êä Ìä Îä, Ðä Ñä Øä Òä ×ä, Óä8æ™Ôä
Ùä Ûä Ýä ßä îä ƒå  ïä ñä, óä ôä ùä, õä8æ™öä
úä üä þä €å ‚å ‘å ¦å  ’å, ”å •å šå, –å8æ™—å
›å å Ÿå ¡å £å ¥å ´å Éå , µå ¶å »å, ·å8晸å
¼å ¾å Àå Âå Äå Æå Èå% Úåüªæ%¿ dæ|‹æÿæ  æ §æ84¡æt›æ¤h Ðæ Ìé Öæ üæ , ׿8ë}4Øæ& Þæ8°,ßæ, åæ8ƒ
$ææ& êæ8°,ëæ, ñæ òæ úæ, óæ8æ™ôæ& ÷æ8¦øæ
ûæ*þæ ç Éé, ‹ç8,Œç'‘ç8…$ü“ç! ´ç µç Ãé , ¶ç8ë}4·ç, ¾ç8ƒ
$¿ç Ðç åç  Ñç Óç Õç ×ç Ùç Ûç, Ýç Þç ãç, ßç8æ™àç
äç óç ˆè  ôç öç øç úç üç, þç ÿç „è, €è8æ™è
…è ‡è –è «è  —è ™è ›è è, Ÿè  è ¥è, ¡è8晢è
¦è ¨è ªè ¹è Ðè  ºè ¼è ¾è, Àè Áè Èè Âè Çè, Ãè8æ™Äè
Éè Ëè Íè Ïè Þè óè  ßè áè, ãè äè éè, åè8æ™æè
êè ìè îè ðè òè é –é  ‚é, „é …é Šé, †é8晇é
‹é é é ‘é “é •é ¤é ¹é , ¥é ¦é «é, §é8晨é
¬é ®é °é ²é ´é ¶é ¸é% Êéüšê&¿ dýé|ûéÿê ê —ê84‘êt‹êµh Áê Èì Çê Ïë , Èê8ë}4Éê& Ïê8°,Ðê Þê éê, ßê àê çê, áê8b3Áâê& äê8¦åê
èê ëê öê, ìê íê ôê, îê8b2Áïê& ñê8¦òê
õê øê ƒë, ùê úê ë, ûê8Ÿžüê& þê8¦ÿê
‚ë ë šë, Žë ë ˜ë, ë8÷ž$‘ë& •ë8¦–ë
™ë ¤ë ¯ë, ¥ë ¦ë ­ë, §ë8a1Á¨ë& ªë8¦«ë
®ë ±ë ¼ë, ²ë ³ë ºë, ´ë8a2Áµë& ·ë8¦¸ë
»ë ¾ë Éë, ¿ë Àë Çë, Áë8a3ÁÂë& Äë8¦Åë
Èë*Ñë Ôë Åì, Þë ßë ¾ì, íë8,îë'óë8­$Äõë ì Žì ´ì, ì8ë}4ì, —ì8ï˘ì, ›ì8ÇÌœì, Ÿì8Ÿž ì, £ì8÷ž$¤ì, ©ì8ÍΪì, ­ì8¥Ï®ì, ±ì8ýϲì
¿ì% Æìü–í.¿ dùì|÷ìÿ‰í Œí “í84ít‡íÆh Åí æï Ëí ßî, Ìí8ë}4Íí& Óí8°,Ôí, Úí8ƒ
$Ûí& ßí8°,àí îí ùí, ïí ðí ÷í, ñí8ïËòí& ôí8¦õí
øí ûí †î, üí ýí „î, þí8ÇÌÿí& î8¦‚î
…î ˆî “î, ‰î Šî ‘î, ‹î8ŸžŒî& Žî8¦î
’î î ªî, žî Ÿî

 ½
8

ó
 „þ
äò
 Ž  ½ 8î <˜    7=repetition contains no interpolated value that is an iteratorÁü¢ ?$ á 8  ñ 7Cnone of the values interpolated inside this repetition are iterableÁüó Eüò
Ì„Ì ¸î¹¸¹ðô î ¸ðô%ðôºº) ã   s×^¸¸
ºsîbL³dÿÄ* Ç* Î*84È*tÂ*LÜ*½½Éü æ*æTû“1„¯°â`¼¾ËJæT³dLËJæT»»
¼ËJac,é*»»ËJ ´*6ÀÀÉü«ËËJ3æT½¿²X²X7ÂÂÉüï¥ËJ²XæTÃà ²X²XÚ ÚæTæTÁ º*Á
ÃËJ,º*ø
ýJ&ÿ
èJ
ëJ
òJ80
ìJp
æJD«YÛ Û‹F×^
K
Äë}0
ŠKø
ŽL5ÿ
ùK
üK
ƒL80
ýKp
÷K„´YÜ Ü‹F£W×^
¦L
Åë}0
žLƒ
¸Lø´N&ÿŸN¢N©N80£NpN\×YÝ Ý‹F×^ÉN
Æë}0ÁNø„P5ÿïOòOùO80óOpíOœãYÞ Þ‹F£W×^œP
Çë}0”Pƒ
®PøýJ&ÿèJëJòJ80ìJpæJDZß ß‹F×^’K
Èë}0ŠKøŽL5ÿùKüKƒL80ýKp÷K„–Zà à‹F£W×^¦L
Éë}0žLƒ
¸Lø´N&ÿŸN¢N©N80£NpNd¹Zá á‹F×^ÉN
Êë}0ÁNø„P5ÿïOòOùO80óOpíO¤ÆZâ â‹F£W×^œP
Ëë}0”Pƒ
®Pø´N&ÿŸN¢N©N80£NpN\ñZã ã‹F×^ÉN
Ìë}0ÁNø„P5ÿïOòOùO80óOpíOœýZä ä‹F£W×^œP
Íë}0”Pƒ
®PøýJ&ÿèJëJòJ80ìJpæJ<§[å å‹F×^’K
Îë}0ŠKøŽL5ÿùKüKƒL80ýKp÷K|¯[æ æ‹F£W×^¦L
Ïë}0žLƒ
¸LøýJ&ÿèJëJòJ80ìJpæJLÑ[ç ç‹F×^’K
Ðë}0ŠKøŽL5ÿùKüKƒL80ýKp÷KŒÛ[è è‹F£W×^¦L
Ñë}0žLƒ
¸LøýJ&ÿèJëJòJ80ìJpæJTÿ[é é‹F×^’K
Òë}0ŠKøŽL5ÿùKüKƒL80ýKp÷K”Š\ê ê‹F£W×^¦L
Óë}0žLƒ
¸Lø´N&ÿŸN¢N©N80£NpNl¯\ë ë‹F×^ÉN
Ôë}0ÁNø„P5ÿïOòOùO80óOpíO¬½\ì ì‹F£W×^œP
Õë}0”Pƒ
®PøýJ&ÿèJëJòJ80ìJpæJTé\í í‹F×^’K
Öë}0ŠKøŽL5ÿùKüKƒL80ýKp÷K”ô\î î‹F£W×^¦L
×ë}0žLƒ
¸Lø´N&ÿŸN¢N©N80£NpN\™]ï ï‹F×^ÉN
Øë}0ÁNø„P5ÿïOòOùO80óOpíOœ¥]ð ð‹F£W×^œP
Ùë}0”Pƒ
®PøýJ&ÿèJëJòJ80ìJpæJTÏ]ñ ñ‹F×^’K
Úë}0ŠKøŽL5ÿùKüKƒL80ýKp÷K”Ú]ò ò‹F£W×^¦L
Ûë}0žLƒ
¸LøýJ&ÿèJëJòJ80ìJpæJDÿ]ó ó‹F×^’K
Üë}0ŠKøŽL5ÿùKüKƒL80ýKp÷K„ˆ^ô ô‹F£W×^¦L
Ýë}0žLƒ
¸Lø´N&ÿŸN¢N©N80£NpN\«^õ õ‹F×^ÉN
Þë}0ÁNø„P5ÿïOòOùO80óOpíOœ·^
—‡ š‡ ›‡% ¦‡ ð‡ ÷‡, ñ‡8¦ò‡& ô‡8¦õ‡*ù‡ ü‡ €‰ ý‡ ÿˆ8‹ˆ8ˆ8_sÁ“ˆ –ˆ, ˜ˆ8,™ˆ'žˆ8Áˆ'©ˆ8\«ˆ'¶ˆ8Ô
¸ˆ »ˆ ¼ˆ% ½ˆ, ˈ8,̈'ш8ó$\Óˆ Þˆ ߈ æˆ, àˆ8¦áˆ8¬¼ äˆ8¬¼ ôˆ%  ȉ Õ‰+ ɉ, ˉ8¬̉& ω8°,Љ*׉ Ú‰ îŠ Û‰ íŠ8é‰8í‰8¬¼ ñ‰ ô‰, ö‰8,÷‰'ü‰8ÁLþ‰'‡Š8\‰Š'”Š8Ô
–Š ™Š šŠ% ›Š, ©Š8,ªŠ'¯Š8ÔD±Š'¹Š8ˆL»Š ÄŠ ÓŠ ÅŠ, ÆŠ8¬ÇŠ$ ÊŠ ÌŠ8ÍŠ8¬¼ ÑŠ% ÔŠ8¬¼ âŠ% ïŠ ùŠ ‰‹, úŠ8tt1ÁûŠ& þŠ8¦ÿŠ, ‚‹8tt2Áƒ‹& †‹8¦‡‹*‹‹ Ž‹ ½Œ  ¼Œ88¡‹8¬¼ ¥‹ ¨‹, ª‹8,«‹'°‹8ÁL²‹'»‹8\½‹'È‹8Ô
Ê‹ Í‹ ΋% Ï‹, Ý‹8,Þ‹'ã‹8ó$\å‹ ð‹ ñ‹ ù‹, ò‹8ÔÁ ó‹8¬¼ ÷‹, ‡Œ8,ˆŒ'Œ8ó$\Œ šŒ ›Œ £Œ, œŒ8ÿÁ Œ8¬¼ ¡Œ8¬¼ ±Œ% ¾Œ ùŒ , úŒ ûŒ , üŒ8¦ýŒ& ÿŒ8¦
ƒ*  –Ž Š •Ž8˜8œ8¬¼   £, ¥8'«8ÁL­'8\¸'Ã8Ô
Å È É% Ê, Ø8'Þ8¯#„à ð ñ ü8¬¼ ò, õ ö ú, ÷8¦ø
û8¬¼ ŠŽ% —ŽÔß­ø<éŽOËûÈ<Á¥ü©@<ïÙÖ<€©`<Œí©ø<­P‹ýø<†‘Læýø<Û‘L½þx<°’”ÿ<È’©ø<Ô’óž<ü’©8<ˆ“òáà<˜“äÿø<½“Š€(<å“çø<ó“6÷œÈ<²”Ñ€@<Ô”Ùø<å”#˜<‘•°<­•©ø<¹•$Úø<æ•G‰‚<¶–©ø<–Cè‚ø<Ž—'¶ƒø<¾—&èƒ0<í—Êî8<ü—òá<Œ˜©ø<˜˜M„ø<î˜Eš…ø<¼™Mê…ø<’šL†ø<çš1™‡<¡›©@<­ÙÖ<¾›©h<Ê›´—<à›©ø<ì›Müªø<œP§ˆø<8‚‰©@<èÙÖ©h<…ž£â<›ž©ø<§žNˆŠø<þžPáŠø<ן"¼‹< ©8<Ž òáø<ž ;„Œø<â +ÊŒ(<–¡ç<¤¡Ž(<¿¡çˆ<Í¡¸ø<ç¡"Óø<’¢€ŽX<º¢×ï8<΢êï(<Þ¢çð<ì¢ÔŽø<“£;üŽ8<×£êï(<ç£ç <õ£Þø<’¤(ü(<äçà<Ѥ½ø<ö¤/ãø<®¥+0<â¥Êî8<ñ¥òá<¦©ø<¦Nü‘ø<ä¦9Õ’<¦§©X<²§¦“ø<ƧQ»“Ø< ¨—”@<Ĩ¼”ø<Õ¨-Δø<‹©Z†•8<î©òá<þ©©ø<ŠªO†–ø<âªOà–ø<º«)º—¿ dÍ­|Ë­.i ú­ Ÿº „® ‘®, …®8ƒ
$†®& Š®8Ì$‹®*®*“® –® ³¯ —® ²¯8¥®8 ©®& ª®, ¬®8,­®'²®8ÁL´®'½®8Â$¿® Ä®, Æ®8,Ç®'Ì®8ÁLή'×®8ÌDÙ® á® ç®, â®8ƒ
$ã® è®8õ\é® ô® õ®% ö®, „¯8,…¯'Н8ÁLŒ¯'•¯8\—¯'¢¯8Ô
¤¯ §¯ ¨¯% ´¯ þ¯ ’° , ÿ¯8ƒ
$€°& „°8Ì$…°*‰°, Œ°8¦°& °8¦°*”° —° Œ² ˜° ‹²*8¦°8ª°8¬¼ ®° ±°, ³°8,´°'¹°8ÁL»°'İ8\ư'Ѱ8Ô
Ó° Ö° ×°% ذ8æ°8_spanÁ,ê°& ï°, ñ°8,ò°'÷°8ÁLù°'‚±8Â$„± ‰±, ‹±8,Œ±'‘±8ÁL“±'œ±8ÌDž± ¦± ¬±, §±8ƒ
$¨± ­±8õ\®± ¹± º±% »±, ɱ8,ʱ'ϱ8…%œÑ± ä± å± ò±, æ±8¦ç±8¬¼ ê±8ŽÙ ,í±8¬¼ €²% ² Ô² î²
, Õ²8ƒ
$Ö²& Ú²8Ì$Û²*ß²+ â², ä²8¬å²& è²8°,é²*ð² ó² æ´ ô² å´,8‚³8†³8¬¼ г ³, ³8,³'•³8ÁL—³' ³8\¢³'­³8Ô
¯³ ²³ ³³% ´³8³8 Ƴ& dz, ɳ8,ʳ'ϳ8ÁLѳ'Ú³8Â$ܳ á³, ã³8,ä³'é³8ÁLë³'ô³8ÌDö³ þ³ „´, ÿ³8ƒ
$€´ …´8õ\†´ ‘´ ’´% “´, ¡´8,¢´'§´8ÔD©´'±´8ˆL³´ ¼´ Ë´ ½´, ¾´8¬¿´$ ´ Ä´8Å´8¬¼ É´% Ì´8¬¼ Ú´% ç´ ñ´ ޵
, ò´8ƒ
$ó´& ÷´8Ì$ø´*ü´, ÿ´8ÔÁ €µ& ƒµ8¦„µ, ‡µ8ÿÁ ˆµ& ‹µ8¦Œµ*µ “µ Á· ”µ À·08¢µ8¦µ8¬¼ ªµ ­µ, ¯µ8,°µ'µµ8ÁL·µ'Àµ8\µ'͵8Ô
ϵ Òµ Óµ% Ôµ8âµ8ŽÙ ,æµ& ëµ, íµ8,îµ'óµ8ÁLõµ'þµ8Â$€¶ …¶, ‡¶8,ˆ¶'8ÁL'˜¶8ÌDš¶ ¢¶ ¨¶, £¶8ƒ
$¤¶ ©¶8õ\ª¶ µ¶ ¶¶% ·¶, Ŷ8,ƶ'˶8…%œÍ¶ à¶ á¶ ï¶, â¶8ÔÁ ã¶8¬¼ ç¶8ŽÙ ,ê¶, ý¶8,þ¶'ƒ·8…%œ…· ˜· ™· §·, š·8ÿÁ ›·8¬¼ Ÿ·8ŽÙ ,¢·8¬¼ µ·% · ý· •¸, þ·8ƒ
$ÿ·& ƒ¸8Ì$„¸*ˆ¸, ‹¸ Œ¸ “¸, ¸8¦ޏ& ¸8¦‘¸
”¸*—¸ š¸ ˜º ›¸ —º*8©¸8­¸8¬¼ ±¸ ´¸, ¶¸8,·¸'¼¸8ÁL¾¸'Ǹ8\ɸ'Ô¸8Ô
Ö¸ Ù¸ Ú¸% Û¸8é¸8ŽÙ ,í¸& ò¸, ô¸8,õ¸'ú¸8ÁLü¸'…¹8Â$‡¹ Œ¹, ޹8,¹'”¹8ÁL–¹'Ÿ¹8ÌD¡¹ ©¹ ¯¹, ª¹8ƒ
$«¹ °¹8õ\±¹ ¼¹ ½¹% ¾¹, ̹8,͹'Ò¹8Æ#ÄÔ¹ ì¹ í¹ þ¹8¬¼ î¹8ŽÙ ,ñ¹, ÷¹ ø¹ ü¹, ù¹8¦ú¹
ý¹8¬¼ Œº% ™ºt}.Mð.M0.Mº‚.M–ƒ.M,„.MÞ„.M¨….M´¨.M .MLÀ.M”©.M Æ.M.Míª.M .MLÀ.M ¼.Mš«.M.M °.MLº.M¸¬.MX­.M þ .MLˆ
.MŠ .M
®.M·®.M
.ML£
.MB¸.M ö .M.M ð.Mªº.M .M þ.M.M §.M.M Ë.Mç¼.M Ý.M½.M î.M.M ú.M¹¾.M š.M3¿.M  .M­¿.M .M.M ¦.M¡À.M °.MÁ.M º.M•Á.M Å .MÂ.M Ò!.M‰Â.M Ý".MÃ.M æ#.M.M ð$.M÷Ã.M ú%.M.M …'.MóÄ.M (.M.M ž).MñÅ.M ¨*.M.M ³+.MëÆ.M »,.M.M †..MéÇ.M /.M.M 0.MçÈ.M 1.M.M Ž2.MåÉ.M Œ3.M.M Œ4.MéÊ.M Ž5.M.M‹Ú.M ¬.M ®.Mˆå.M.M Ç/.Mîé.M.M.Míë.M.Mùì.M’í.M Ò<.Mî.M >.MÚï.M ÙC.M.M E.Môð.M F.M.M ‰H.Mj.MÝ.MW.M¯.MM.M8.M ßt.MLét.M9.M —v.ML¡v.M:.M Òw.MLÜw.M;.M y.MLšy.M< .M Êz.MLÔz.M«
.M .Mz .M .M°f.M.MHš.MÆf.M.M.MÖf.M&.M#.Mæf.M6.M3.Md.M.MHš.Md.M.M.M-d.M&.M#.M=d.M6.M3.MMd.MF.MC.M]d.MV.MS.MF].MÏ\.MZ\.MÞ[.Mi[.MíZ.MxZ.MüY.M‡Y.M Y.MX.MX.M¥W.M)W.M´V.M8V.MÃU.MGU.MÒT.MVT.MáS.MeS.MðR.MtR.MÿQ.MƒQ.MQ.MP.MP.M¡O.M,O.M°N.M;N.M¿M.MJM.MÎL.MYL.MÝK.MhK.MìJ.MwJ.MûI.M†I.M
I.M•H.MH.M¤G.M(G.M³F.M7F.MÂE.MFE.MÑD.MUD.MàC.MdC.MïB.MsB.MþA.MA.M
A.M@.M@.M ?.M+?.M¯>.M:>.M¾=.MI=.MÍ<.MX<.MÜ;.Mg;.Më:.Mv:.Mú9.M…9.M 9.M”8.M8.M£7.M'7.M²6.M66.MÁ5.ME5.MÐ4.MT4.Mß3.M%2.M©ÅÇÉäiëSpan::call_site()Áquote!Áhttps://serde.rs/Á quote_spanned!ÁÔ
syn::IndexÁÔ6githubÁ https://github.com/dtolnay/quoteÁproc_macro2::SpanÁƒ^https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rsÁ\https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=githubÁëœhttps://github.com/dtolnay/synÁÀú https://docs.rs/quoteÁÖú áú ÔQ£û ®û ]https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rustÁùû Üü œSynÁËý docs-rsÁôý Öú proc_macro::TokenStreamÁÀú   Î ¥
format_ident!Á£û -https://docs.rs/syn/2.0/syn/struct.Index.htmlÁ'https://github.com/dtolnay/prettypleaseÁ¯þ ùû œhttps://crates.io/crates/quoteÁ°ÿ ôý proc_macro2::TokenStreamÁÈÿ ¢ÿ  Î Ëý proc_macro2::Span::call_siteÁÿÿ synÁœ€
 prettypleaseÁ΀
¯þ Â crates-ioÁ
°ÿ ¿
Èÿ ¢ÿ  ø
Î ÿÿ  &”û üú ­
΀
Ÿ‚
œ€
Ô6¦Ñ¹û Ô‚

¿
þÂëø
Þû  áú üú ­‚
Ô”û Ÿ‚
Ô6®û ¹û Ô‚
ÂÞû Üü BëSpan::call_siteÁOctalÁLowerHexÁè std::fmt::BinaryÁproc_macro2::IdentÁÞû ƒformat!Áë¸ÿ„
è std::fmt::UpperHexÁ›…