Files
boc/aamos-ledger-rust/target/release/deps/libsqlx-a7deeb7b8ffeff0e.rlib
T

676 lines
196 KiB
Plaintext
Raw Normal View History

!<arch>
/ 0 0 0 0 66 `
_ZN4sqlx3any23install_default_drivers17h0ebac0379e4e4752E// 58 `
sqlx-a7deeb7b8ffeff0e.sqlx.5a1f494392cb9fdf-cgu.0.rcgu.o/
lib.rmeta/ 0 0 0 644 137168 `
ELF·P@@GNUÀrust
¯#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Á sqlx_macrosÁ%êXuôz[¾Ü$ðŽþ}-c638d6ce1b0a4d8dÁ sqlx_coreÁFmËùþ¡œóQS)ô£Î2-1b1200585598c8bbÁ futures_coreÁÈuI‹ýÜÆØU„ç. -82c1854fdd00bd52Á futures_utilÁ#@G8©k`«Täua-80a25493ef46f53eÁ futures_taskÁoŒ‰
oÿäð'¥
r£y{-154331b6da617b59Á futures_sinkÁ›ò4ò‚ r“Ï£†-fc6ef4d03213ea83Ápin_project_liteÁñZ4CÒ*í ÛÓ3µ-49b26e76e0aa8c28ÁslabÁwŸº±GÀ^3T¥ß5ân-efa9793286a0d7aeÁ
futures_ioÁûíùx­2ºñBn¬µ-b098d1ad72396678ÁìGüùšBv0§ ê€¸¶½›-6603d0c4455c7adbÁevent_listenerÁ{
N6üf×`·—©7sU-9d713ba3d446b139ÁparkingÁx>˜õ×¶EK~šë©7-df370c1818360cccÁeitherÁñÊ„òË †ÛÃIZ÷ʸ-aa4061bcd30e2c4fÁserdeÁÛ·Gć†f¯§ÉÊ-49e1c42cddc1d948Á serde_deriveÁÜå‹–Rð¯hÐk-e1e3a1348ef5e592Á
serde_coreÁaFØ «•ê@¿‰‰4z{Q-79fec35bc81d3561Ácrossbeam_queueÁü'Ê„lªeýÈACiH-ee8a879b0c85c118Ácrossbeam_utilsÁnôì¸E4Ù¸sG¤P»Î®-c398920c6e0f894bÁtracingÁØ™ÍNø1Ác„±JD-b3cfd8207a81f457Á tracing_coreÁ šøéDx’î$¬µ¢%@'-b79014aced18a9a7Á once_cellÁ‚£yçq$¨œ;²‹w’„yy-a62095f15482a987Átracing_attributesÁ#ÎÙn‚Œc{:Ní7'ï-6690d31878fa7022ÁlogÁ‚A
x̢
˜6¤YoOG-b3e5de0e530150fcÁurlÁ©fÙÈ+”ð56š Uˆ£-38be980fef541a25Áform_urlencodedÁ„WŸ9gBÿÒÿ;"0«²-0f720e85bb12b350Ápercent_encodingÁ~KžCÛÿW ‰˜Ó¸ÿÓ-a84b693aeeb3f7e9ÁidnaÁ­PC.ÞYŒÄ!6Œ¼~á-45fea8f431a2affeÁ idna_adapterÁñÀò;¶j¾Û÷ò!®*-d70c6c9bebeeda40Áicu_normalizerÁÝI×óo|SwÇ>úö-a-f4df284184003354Á icu_providerÁ劣A Ï/•ŠrªŽ-880d9a52d6528f30ÁzerotrieÁ‚‹îĘPê ÛÉÔ²çoÔ-221ed239a9eafbc4Á
displaydocÁ¡Û^Y
5"2hi=Ø\-2441535f17d144cfÁzerofromÁ%~(x¼îâÜëâ-07ba92d49b321987Ázerofrom_deriveÁ4ö¤˜#i}¹=_ècqŽ»-04750c2d0037dbcfÁyokeÁÒõÓ$9wà
9;n£´-fefcfebee5375fb3Ástable_deref_traitÁxÙmÇÛdš×0ã,«X,-fcd6645259b2a3feÁ yoke_deriveÁ.š8>².œ”Š=—ÇIˆ-6cc2b2ac601b2455ÁzerovecÁŽî’Ÿ#9þ§+«c[;Ø*-85e8403a559d7283Ázerovec_deriveÁã_÷ÌŒQv›†Iè¥C-2572ead1dd355649Á writeableÁœ:µêJ/<E€ƒOœ:…-dfe9c10641eb0e68Áicu_locale_coreÁ°êqmvÀ¶µ}|–¶¸òÚ-86dd2e80dcfc24c8ÁlitemapÁ² 0¥åWfŽ;O§FÇ%ÝÄ-3e127eb4fb3cac08ÁtinystrÁ|Þ³ŸûŸèpJn0eÝI-acc06815cf419043Áicu_collectionsÁ[“(OìLðÈý_KŒb¬¡-8d2aefd7c7c38d7fÁ
potential_utfÁà,j"»ûõÚÁM)‰ËÐ-e8dd0c57851e5ba3Á utf8_iterÁ0Rb(1g
å$а3D$¿-9f31832b65172f8aÁicu_normalizer_dataÁyñÒhb #îÈ'"AJhY-55f5bb240582a5c4ÁsmallvecÁ– /I >R–’ð…I&Û-552b75c6e3b95fd0Áicu_propertiesÁ†jŽ øV¹Á¢°ØvP-e63b25973ac5ad0bÁicu_properties_dataÁ)wéRÞÑaj#qXw-9a8acc7a2225f326Á
serde_jsonÁµ§Zý¸”ü1|ºhg¤<N-aa43fd4f14b69a43ÁzmijÁøõ0ÙdkÑ }ò-72378354a9752d86ÁitoaÁ¦
꣫#½\àíá–‘-0d06e745e7197785ÁuuidÁìeUŽô´ò„‰Í|ȵTb-203349ff4def3875Á getrandomÁš"ž'ÁÚ&uùp[ -f2d4a34fd304e410Á®·ª¦âÎ/½Jé><-14ebec7a05e03631Áoü¿p
¬? é³ìF&ö(-bc5856fc10fc8d1eÁchronoÁÄA9É%:
x¨mÜVØ[-4a8f5ac30dcfb8daÁ
num_traitsÁo¿VÙÖþ8À, ¿Óhªê-095af4b0064172d2Áiana_time_zoneÁ‰î¤Tb$™Ù•B¯É-47b393f5c81d8278Á
bigdecimalÁhŽÀ‰DÔ5Ôâÿ理®/-7a49315a4dd8af31Á
num_bigintÁ­U/EvíÉÔ`çgÂr-63a70c4236b5b859Á num_integerÁ¡Fp#½z®¿zð
hd-c5ef88a08533d3beÁlibmÁr+dáÝRËBë|€ ù-0b9015d7b6a79a36ÁhashlinkÁc®æy¡ýª¯duˆŸp#¢-310ded27630106feÁÐJÉmzd-Åàéó¨ùDH-89352da401991cdbÁallocator_api2Á"ÊßÎEâäöB΋Kz¥ã-588aa280e5fa4b8aÁ
equivalentÁ®²IQPÇæ£&@2lgb-70f03fe5f7490d6fÁfoldhashÁÞA’èöÀƒ=÷Âvª‘-0dfd347cc99d42a4ÁbytesÁ^?ßÓY;æiºŒw$„ñ-90c211e789d586ecÁtokioÁ”Í_˜©L¤Êêèi”¼-119d18b291bdf113Á parking_lotÁÄ:ñô[èµÃ8äÝ)Ìó-5c4eabfe37efab56Álock_apiÁÓw>•ÏË{gªoPÓÏ-e8c4ca1d87beaacfÁ
scopeguardÁû¥¶*M™Kóß´i™ºÉ-80f335d46863d1e6Áparking_lot_coreÁÆ?ô‘yš%J¿EsgwiØ-e912177d8ca86f30ÁmioÁTÒHÒ»ÄÄ|•#p™ì³-8b0c017a860cfe84Á tokio_macrosÁ×(2$è4Ú~.òÅ¿Ö-66203840deddff09Ásocket2ÁÉh±Âa#R¥v¦K²ƒÁÀ-1a24c1e6e366df20Ásignal_hook_registryÁL”›ÁrÎᬙPAïàŒi-ae15e63d7a1fe24eÁerrnoÁÃrT·p!µ‚Mr$N˜M'-3f64070a9803a254ÁrustlsÁÆÀ1‘ôû<ÙÏ/ -9b04a11d72f3940dÁrustls_pki_typesÁ=íúQTMLnWõý ©åè-33a7ee69da9774baÁzeroizeÁ&Š8À3(ÂDÔ¢NGi-4ab8bcbe1ae48c21ÁringÁrk|$¥7×ZCª Äe¶>­-37e6e6b20bddbe17Á untrustedÁ·+“ÃzkÔPŠHpýù>-af628b00353a9b58Á.i•I·u|Î×Ë}¶Y-59e5044e323bcbbcÁwebpkiÁ¹C!
º`¸˜vþz4
þÁ-73955628f4073928Á aws_lc_rsÁ›÷U}¢ÑØÚm76 -b3fd5a5442a65074Á
aws_lc_sysÁ«Áíà£è뽡-afe5028761e0f4d5ÁsubtleÁ⿃ëÏ©Kc3q¦ÉÝ-3fcf5155fc8abdf7Á¹
´‹¼èÿŠƒ0Åõu Ë°-bd50e5912e3632e0ÁdigestÁéñ±w}Õœ%Ïû2gƒþ!-f310b5aaaec6f600Á
crypto_commonÁQPÎÊu-ç7ƒ;©Igì‡<-bac5a36caa8b0e40Á
generic_arrayÁz笿ÁŽ}[ßk%Jx-c94f5a6f4f404454ÁtypenumÁ¦èµ¢ËódìîÝó¨-5bde0bfa09d7c34cÁ block_bufferÁ™\Õ`€˜ÓµÓM¼-ff0c8ccd0de5a212Ábase64Áéƒ3E#Š;jCÎ*-651c107ca5cfaf5aÁindexmapÁÁíµéàoŠãùÃ/5úøä-715dcca0fb565d70ÁÐßVcàcz.^sÌþ8ä&-dbb152f1a80d433cÁ thiserrorÁðå@ãRØ,Ó(ye}Õm5-6ca78e66c47fe176Áthiserror_implÁÑþïáùço-s'ÍZ\-6c5768096de60dd4Á webpki_rootsÁ³(˜¡ú{f¹i·ë<r œ-d779299fb4810893Á™/H¸Ó€ð­¬’‚PÆ-p-ff65ad67f2e19900Á
sqlx_postgresÁFÎêP0kW§…i=E€É-0524cbaf485f614cÁhkdfÁÉ=þhäyÒÓjÖéç/z-dbaea47ce220d5c1ÁhmacÁ°¦çÙ:qÓ7l9ϱÄP÷-b8263809a4508f61ÁrandÁÈëÂCúnùÍOÝн5:-54df58162d79ef69Á rand_coreÁÂÆzW/çVƒ¯—ÄuJ-4b5b064f6fa1b50aÁ rand_chachaÁ<€s¬Ø›Üsñ¤I ûÊ-ed5fc934fe45c913Á
ppv_lite86ÁÑ€YÅ…|)'ÕN€Á %)-2cae3d9db9661654ÁzerocopyÁ4ÀL2 €Õ®—MD÷i€Ìš-262a7af9995ba1b5Á
stringprepÁ ×§Ó é:LL³aÂ)-855f4655a6af3673Á unicode_bidiÁÔ†ìúŠÔS°»¥Ä÷¬J-b207bfbef3a10ee8Áunicode_normalizationÁÁXƒ¿pLøÂ.=8D-R¯-fa0933925a17635fÁtinyvecÁ=œ¾-#ìÛÚ—M7îì
b-9e17ab9bd2ce0794Átinyvec_macrosÁuÏl×AexÎê òÌ-97d84cc18916919bÁunicode_propertiesÁSŸ×:Õï¦@¢%tZ,<-973298f7c9c29a03Áfutures_channelÁu~,Tv¡|´ ÿÌ-1be9fe2ddc022c6dÁatoiÁÜ`‰bŠ“¾PG5|éÂ{©-b6642d5ee9597744Á byteorderÁ“»Ýâì%As¯TTö
Ùà-b2b33e4eebc377baÁmd5Á¼ßML½PÒë†Ã ÖD8-65505a2c168f09fdÁbitflagsÁÚ-Ýž®¸¬¾HŠöã´Þ-ec116a54fb05b2ccÁhomeÁ„w#çe­“¿€jQÙ`-af6f13d144a78cb9ÁwhoamiÁyÞwQvÚ?õ›ôý Â-9ecb9a074051e283ÁhexÁ½³fÁѼuP-b0fdaf662be3601cÁcrcÁÒØŒüUsS§Þµ13ý¥-eafdec7c979fd44fÁ crc_catalogÁ› `òù£´¼øp7ò¯õ-7548be4674f01e39ÁdotenvyÁÿ†Žÿ@ýÎÎÇð2[Ž-59c9abac460b6708ÁmysqlÁ,Ä
»Ó9ŒÎ MySqlÁ,Ë
»Ó9MySqlConnectionÁ|Ò
»Ó9>@
MySqlExecutorÁlã
»Ó9_a MySqlPoolÁLò
»Ó9|~MySqlTransactionÁ„ý
»Ó9 ¢sqliteÁ4â»_sqliteÁœçSqliteÁ4껞;SqliteConnectionÁ„ò»ž;@BSqliteExecutorÁt„»ž;bd
SqlitePoolÁT”»ž;SqliteTransactionÁŒ »ž;¥§À 
  
 !"#$%&'()*+,-./0123456789:;<=>?@ÄABCDEFºJJJJJJJJJJ J
J J J
JJJJ reexportsÁ\\Jinstall_default_driversÁ_ONCEÁ_ macrosÁbqueryÁbquery_uncheckedÁb
query_fileÁbquery_file_uncheckedÁbquery_asÁb
query_file_asÁbquery_as_uncheckedÁbquery_file_as_uncheckedÁb query_scalarÁbquery_file_scalarÁbquery_scalar_uncheckedÁbquery_file_scalar_uncheckedÁbmigrateÁty_matchÁpp same_typeÁr¥pWrapSameÁt
t¥t¦tˆtpz¥z¦zæ p WrapSameExtÁ~WrappedÁ~ wrap_sameÁp¥¦ÂCp¥¦ÂCp MatchBorrowÁ
¥¦ˆp¥¦æ pMatchBorrowExtÁMatchedÁ match_borrowÁp'aÁEp¨EEpœ¨EœEpŸ¨EŸEp¢¨E¢Ep ¥¨E¥Ep
¨¥¨Ep «¥«Ep ®¥®Ep
±¥±Ep´¥´Ep·¥·Epº¥ºEp½¥½EpÀ¥À¦ÀEp
conjure_valueÁÄ¥p
dupe_valueÁÆ¥
spec_errorÁÈÈÈÈÈÈSpecErrorWrapperÁÎ
ÎÎˆÈ SpecErrorÁÒÒ__sqlx_spec_errorÁÈÕÕÿH× ÈÙÙÿHÛ ÈÝÝÿHß ÈááÿHã ÈååÿHç È __spec_errorÁGtypesÁëëencodeÁîîîîHdecodeÁôôIž@øøøøø¥ þþþþþþþþþþ þ
r
r
}


¨
«
«
®
±
±
´
·
·
º
½
½
À
Æ
Ô
Õ
Õ
Õ
Õ
×
Ù
Ù
Ù
Û
Ý
Ý
ß
á
ã
ç
~“Ò~ttuèBxˆpyp ™¾X_ÀëØ×¥Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¦~ 8ttuèBxˆpyp ™¾X_ÀëØ×¥¦Š˜DˆpŽp 7NKCš²î‘Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¨EÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙúHúHßûHÁ‘4Ý­f‰úM÷Š˜DˆpŽp 7NKCš²î‘Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¨E
Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙªBªBö­BbufÁ÷<®B÷<9)
-ÜnL€SçEçEèEGlobalÁ ¿±‡§í#Š˜DˆpŽp 7NKCš²î‘°PÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¨EÃQŠ˜DˆpŽp 7NKCš²î‘´RÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¨EÉSŠ˜DˆpŽp 7NKCš²î‘õPÃQŠ˜DˆpŽp 7NKCš²î‘ùRÉSŠ˜DˆpŽp 7NKCš²î‘ 8àOàOŠ˜DˆpŽp 7NKCš²î‘ 8 8¥YŠ˜DˆpŽp 7NKCš²î‘àO´XŠ˜DˆpŽp 7NKCš²î‘YƒYŠ˜DˆpŽp 7NKCš²î‘Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ´XÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙàOŠ˜DˆpŽp 7NKCš²î‘Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙƒYÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙYŠ˜DˆpŽp 7NKCš²î‘µ[íZŠ˜DˆpŽp 7NKCš²î‘ˆ]À\ 8Š˜DˆpŽp 7NKCš²î‘àOæOÒ 8 8 8 8ÎÎϹHш rq·Î€—›û_Ò 8 8 8ÎÎϹHш rq·Î€—›Í`Ò 8 8ÎÎϹHш rq·Î€—›™aÒ 8ÎÎϹHш rq·Î€—›ßaÒÎÎϹHш rq·Î€—›Ÿbt…
œŸ¢¥¨«®±´·º½À
Õ
Ù
Ý
á
åÎ~ ÒgrüÚ&ý ÍNîícö_1Á_2ÁJ­
}üÞ OttuèBxˆpyp ™¾X_ÀëØ×ÍN˜O ˜O_argÁnùž"#  Õö“U…”•–™
 %–™
 ý–™
 €S
´™
 M § ïíe¼îËè¿*€S
ý¨” …·”e·” =·”
-¹” ¥ã†
  Þße ÿR­é(

 5 O 

”
~
 3
Æ” ² § ïíe¼îËè¿*‚È‚ÈArgumentÁ„È´ÀbökÏ®ÝWj´
Ç”ýГ äÈ
Ö”
ù@#
ÜW:" ¼ üç
Vý ’Ƕcƒýä˜W
â|E‡”ý¾(F
×|Ìý×…¨
à|Uî(


Žk
ÆäÈäÈ ArgumentsÁæÈtemplateÁ `çÈÀ `üöMõô]Td<ßeD¼f(¢f&´h¥œh¢œh œhž EÀg}é(
²@ñiŽkb
Ús€S±üñ
* ºŠ˜DˆpŽp 7NKCš²î‘ÍN˜O¡üÁ
`ÍN™m
ÍN Ì
eÒ
¿_uÁIùž"# ße | y ¢fs ½ ¼fC@<9 6
3 0   ßeÀg+
 ^ y 
9óg+
¦
 \œh) Ø ´hÀ½ äȸ¿Iù@#Èñih üÞY³¶c¬®â|ª§×|p¤à|Ÿ
ŽkŽk¬«kße
¼fv¢ft´hóœhðœhîœhì¹lÀgMaØñiŽkùïlôùý*#ù
àWße#,Äüç/ÍN NØs^ùý*#dØsnße#)Æü˜2ÍN ¸íc­Tý3ØsqŒ¨äØû_Ì_žBoxÁ¡ˆˆ¢ˆl }.xϾ Ìì‰TäcÌ_Þu¿×ü®¼vüÜA     Ì_ =Ãuðµû_!÷
ªû_0@DÞu ¸¹ØoÞu« ÃuÌ_ ©žìt¡ˆˆ¢ˆl }.xÏû_‰TÞû_ݰ[ôÖwÄxÞu Ô‰ö ÜÍ`Ôuž`Þuäcž`Þu©Ûüšöyü½A    ž`,­ :Õy|Í`"¯

˜6Í`1\‘ Õñ‹
…ú‹

 * 
ª˜ StringErrorÁˆ¾ ¦»âp´<@q£ ¢­Þu
ŠŒ

9AÜÚýµæ0WƒÃQÞu4ý¹‡Ø
mÒæWÞuŒ Õy&ž` ŠÃQ Í`šžìt¡ˆˆ¢ˆl }.xÏì{‰Tì{°p¨Ž{ž`4ž`:æ{Ôˆ~ÞuÜÞuÞuäüð× à™aÔuê`Þuäcê`ÞußüöŸÕü¤A   ê`,” 7„#('„™aù'„#(  
ù2æÇ$ ù2™"$
ŸX%
ý½š"%

§ ïíe¼îËè¿*äcù2šì$ Æ"$ $
Àc™a ™a  c cˆ¢cµ
 `£cÜR `àB¤GS
Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
äcŸÈŸÈ ÈErrorÁ O˜éBL¹2Û$  ±  c cˆ¢cµ
 `£cÜR `àB¤GS
ã‚Ð òÇ
 PhantomDataÁFu\»Ÿ äc 2¬ $ 

ù2»
ý$ ‚È 2· $ t
{  âh '«#§űù C €Sœh¼f¥Ñù ´hý›ùL äÈmóÓ2 EøÓ2 
 ÍÆ¥
 œhEî¥ 
 Þœhmî¥  Ž[
ÄÔ2 
 ¬#
rov uæ{Ÿ³ð ö ü ­Ô2 
   Ë,ógäcÃQ «k
ŽÔ2 ýóÓR2 û
¿TßeÃQË,óg§‰²‰
´2÷‰ý¤Ô 2ýÔD2
ú¥ µ×§ 
 o¨†¢fMƒ¨ 
ógý¸)$b
ýî#)^ ÿRý¶)&b

Û)b

ž¨ 
à)› ßeýî¦Á  Û¼ßeýë¥ð Þ %ͨ BÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙßeq ÃÞu«à
V]ýð!n$Èb™alù2°Ö$ý®W‡% ™aÙ2™$ý²™µ%¯™aäc12µ$ý†~û%ª™aEÌš%ýÅ÷ª«cœhœhýÖÐñ2É,ùð"=ýš¢Ç ·c ý«¥

ˆ ª€SEå§
ý¸#¬b ër€Sý¥§z
ý¬*ñF
š93î$F
ù4¬Þ[ÿÝù4“á4ýÞjKX
À€Su¥'b
ý»•MX
Ê€S}Ô'b
ý»µpN
Ä€SË
ýà"¹^·ÿR€SÍNý‰(ì ¸výŒ§
ý¹5G ÃQùÇ"qÿ ƒÃQÞu4‰û ö Þuó 9 ê` ñÃQùâ"U«kº ™aºâhœh½âhº ‡’ÑòÇôÇ PlaceholderÁõÇ»ÀböÇ formatterÁÀb÷Ç _lifetimeÁÀbøÇùÇCountÁúLjÀb©¡â] å.ÊD ±A ôƒï‹‚ 2´$ ™amŸX%¼fâ´h»£Œ æ‰ ´‰ œh%¯¥
œh
ße³
Àgk
¢f

œhí
ÿRÒ
ˆ~¨ ì{¦ °ŠÀ
ü‘ü‘À6
ù
ý‡k X€Sœhýå•!X€Sœhê`áê`烂ê Ú‰
Ïé3ˆ%Fæ{A
ˆ~ÞuI
ÞuÞuQ
üÙ HDäßaÔu°aÞuäc°aÞu§
ãüßÈÀ–ü A  °a 5£–Ž #ù „#(Ôÿ ýåü&`
­&ßaßeßeÐ)ÿ ù)„#( 
ù5æÇ$
ù5™"$     ±ù5šì$ Ã!$
~
Åcße ßeス5Û$ 
ôƒŒ
òÇ Õì„ 5¬ $ 
 ù5»
ý$ ‚È
5· $
ü
 âh )«#. 
 T €Sœh¼f
 ´h
 äÈ




 œh

 ßœh
¡
  
ìþ

 ¬#
tqx wæ{¡µò
ù





 Ë,óg§‰²‰ú
÷
îÚ‰e _
÷‰Ó Ï
Ë È Ï  5¹š¢fÆ Í [ógÄ Á  ÿR¾ » ¹ À ·  ße´  Û¼ße¯ ˆ
« ê£ŒÕ (Þu|ƒä.5ý«üb`«&ßaýé t$ÆbßeZù5°Ö${  ßeÙ5™$w ¯ßeäc15µ$r ªßen k «cœhœháf É,ùð"=a 
·ct

\   ß  ª€SX  U  ër€SQ  M šI F ÿÝA < À€S9 7 Ê€S3 1 Ä€Sø - ·ÿR€S) &  ¸v!    ÃQùÇ"qƒÃQÞu4›
ÞuÝ  £–å°aÚ ÃQùâ"U«ki ßeBßeq‡’DâhA¥’U±’>±;ôƒå˜$ ße¼fg ´h@ £Œ
æ‰
´‰
œh œh ße5
Àgí
¢fŒ
œho
̔S
ˆ~)ì{'_eÁôÀ•¤•¤À+g­&ßaßeße€Sœh€Sœh°ap°avݘÚ‰¢ã•Šæ{Ȉ~ÞuÐÞuÞuØüØ 3Ë èŸbÔuðaÞuäcðaÞu çüÞ
³ŧüŒ A ða
 2ª§ ã–
˜Õâ<œ  w!%ßeÀgµ‹‹
=ß™ ýó¤) ýð49

ýÿ‚M&
&×!
ãE‰TE•ƒð! !
UninitializedÁ"#ZeroedÁÕ8¤O|ÅŸƒC"‰T-¹ƒR"èØèØ éØ²‚êØŸ²‚ªë¥CHÈ]Àƒá  Š  ÷
ÞuK
R

ô–
D
U§œ

%±Á,õ±Á,
¢fuÉœ
 E€¸((RawVecÁ+innerÁ,_markerÁµ!iÇ÷åÖ_€S‰T-- RawVecInnerÁ/µ 0capÁ1¤/‰6< ”I‰TUniqueÁ žË«8Åá™-Ýñ€S¼fýÕ€$%   €Sýç7N 

ܜ
 

•Ë– œhýå›É

­
 ­Á”  úH
ü<lõ
ò
ù
 
ø$æ{"6N&ýù‚S&
r&І&HHTryReserveErrorÁ—Hÿ㤉n¸F’†(›%
pŸ†#%Þƒ&
«ó¬ý•…-'ý–…,'ý•è3)ý•è!)E¡¹+
+
ÆÆ‘ÆUsizeNoHighBitÁ’ƈ¢  ÞÌ3ëì8eÙ0 V, œh
³¹+ù1¹º#!-‡&œh
Çè)ýˆè@))ë'
Á…'ýÖ@G. 
Â…'
­†&FMýÖ4€ (€S‰T
"' úƒFu\»Ÿ€S
Õ5
ýè¤> ªB€S‰T z'œh
¥¥ =è›
 
­'œh+
 è1ƒßeÞu4… ý––e
¤ý†˜7³6Íý–<oö3Ö%à|Uç<ýäÿ:3€SUò<ýÖ…eº2€SEýŠÁ»2€S‰T¤†ýû“aÏ4ýÆ<7ÍíØ–
ý…™ÉÑ2€S‰TVýÕ™ù  ýø™Ö  ý£¤ ’L€S‰Tý„š! ýŠ4ÒÞE€S‰Tý€ÁU,
„t€SE©œ ýÖâÚ
ÒB€S‰TeËœ ýZIE€S‰T-¥äýê¶NZ‰T€S-ÍZýÌ·[\‰T€S}š·ýº-Ço¯€S€S5‰¸µ¯€S€S5Ý.o¯ª€S«ýò#Mo¬€S¸Ûª€SEª·ý‰™Z
€Sý²œ+ ýÇßN¨€Sýâš&Zoš96î$FkÿÝfaÀ€SuþâN_Ê€S}©ãNý•”Ï
ÕB€S‰Teùœ ýù²I ÄB€S‰TU”– ýË\`!G€S‰TU²³!ã"À€Su]"ý»¸"^‰TÅ]"ù0Æ V$§ÄUª¹$ý£‚âE‰T¼ ýÛƒž&&톆&&ý¤çª'i‰Tý›…'&ýº8;n)È‚5¯è))^‰Tåšè)+§Ä+ù1ø¹n!)íÕ·èG' ýþ„E&.š98î$F./ÿÝ /ÞuÜ  ª§ ðaÙ ÃQ ÉSú
Àg}â<ˆ~˜!
ì{!
œhÙ™ ó ¢f ›®h ¦¬ ó¬þ
Ì”•±Á,¼fÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
󬬰W &EÛƒ&[&W&¬°&³&œhd)œha)î±_+뤹 MŸ5€S³ªÇ€SœhÄ€Sœhç€SœhU¹—Õœh—Õœhða( ða. ÞuÞu0æ{#ˆ~Þu"#ÞuÞu*#ïlt ÉS
͉T
æÝé6ˆ%F
—Lé7ˆ%F¶©q ú°«ó¬
ø…
ó×é8ˆ%FÌ‚  tÍN˜O u,Îd7úƒFu\»ŸÍNeúƒFu\»Ÿ˜Ošäß  ÍN˜O!Š.™m9ôÂA¢ÃIPô‹ ΟbÏ(ða3Ÿb:AøJbpÈëîôþÀG<ǘ ·jLï¡
IntoArgumentsÁlúªColumnÁ4¥«  ColumnIndexÁ\Ȱ ConnectOptionsÁtõÜ
ConnectionÁT…½ databaseÁ$°ˆ

DatabaseÁD¶
DescribeÁDÞË ExecuteÁ<†÷
ExecutorÁDÊ
FromRowÁ<· îÆ
EpoolÁ$Ú¸PoolÁ$àí__query_with_resultÁœ¥ ˆ ž@,Õ  ž@c
query_withÁTÜ ì@D‡ Ùì@g
query_as_withÁl Þ
query_builderÁ$Äõ QueryBuilderÁdÊ __query_scalar_with_resultÁÔ¥ ª!ÆAdã Ÿ#ÆAkquery_scalar_withÁŒñ ¤$raw_sqlÁ<¢ È&RawSqlÁ4« Ä'RowÁÌ ù( StatementÁLï à ) TransactionÁ\
ù+TransactionManagerÁ”¨
ñ,TypeInfoÁDÛ
Ž-ó$ÿ
È.ó FValueÁ,  œ0ValueRefÁD§ ­1EitherÁ4Å 2errorÁ$ø ]4Å‚ ´5Í4… f6°B<¾ ³7°BopostgresÁD˜{9 PgConnectionÁd¢:
PgExecutorÁT°;PgPoolÁ4¼<
PgTransactionÁlÄ=PostgresÁDÓ>ôÍ>AnyÁ¡Ï%ANŸÎÐ%AN AnyExecutorÁ\¦ÜBQÄ\‰C
GtestingÁ<ŽåH
test_block_onÁl¾ ÎIª@|‘„dÀ@T¼’eÑ@¤Þ–fû@lðÚhA”ßßi¨A¼øäjÙAŒólñA´‡ùmŽBܦÿnšJdÁ é__rtÁ$ÑêEncodeÁ4صóð÷ÐóòDecodeÁ4Å!É÷õ¨Ñ÷öAnyPoolÁ<†Ú@]
AnyConnectionÁl°Ë%@«&øþü' þThe async SQL toolkit for Rust, built with â¤ï¸ by [the LaunchBadge team].
See our [README] to get started or [browse our example projects].
Have a question? [Check our FAQ] or [open a discussion].
### Runtime Support
SQLx supports both the [Tokio] and [async-std] runtimes.
You choose which runtime SQLx uses by default by enabling one of the following features:
* `runtime-async-std`
* `runtime-tokio`
The `runtime-actix` feature also exists but is an alias of `runtime-tokio`.
If more than one runtime feature is enabled, the Tokio runtime is used if a Tokio context exists on the current
thread, i.e. [`tokio::runtime::Handle::try_current()`] returns `Ok`; `async-std` is used otherwise.
Note that while SQLx no longer produces a compile error if zero or multiple runtime features are enabled,
which is useful for libraries building on top of it,
**the use of nearly any async function in the API will panic without at least one runtime feature enabled**.
The chief exception is the SQLite driver, which is runtime-agnostic, including its integration with the query macros.
However, [`SqlitePool`][crate::sqlite::SqlitePool] _does_ require runtime support for timeouts and spawning
internal management tasks.
### TLS Support
For securely communicating with SQL servers over an untrusted network connection such as the internet,
you can enable Transport Layer Security (TLS) by enabling one of the following features:
* `tls-native-tls`: Enables the [`native-tls`] backend which uses the OS-native TLS capabilities:
* SecureTransport on macOS.
* SChannel on Windows.
* OpenSSL on all other platforms.
* `tls-rustls`: Enables the [rustls] backend, a cross-platform TLS library.
* Only supports TLS revisions 1.2 and 1.3.
* If you get `HandshakeFailure` errors when using this feature, it likely means your database server does not support
these newer revisions. This might be resolved by enabling or switching to the `tls-native-tls` feature.
* rustls supports several providers of cryptographic primitives. The default
(enabled when you use the `tls-rustls` feature or `tls-rustls-ring`) is the
`ring` provider, which has fewer build-time dependencies but also has fewer
features. Alternatively, you can use `tls-rustls-aws-lc-rs` to use the
`aws-lc-rs` provider, which enables additional cipher suite support at the cost
of more onerous build requirements (depending on platform support).
If more than one TLS feature is enabled, the `tls-native-tls` feature takes precedent so that it is only necessary to enable
it to see if it resolves the `HandshakeFailure` error without disabling `tls-rustls`.
Consult the user manual for your database to find the TLS versions it supports.
If your connection configuration requires a TLS upgrade but TLS support was not enabled, the connection attempt
will return an error.
The legacy runtime+TLS combination feature flags are still supported, but for forward-compatibility, use of the separate
runtime and TLS feature flags is recommended.
[the LaunchBadge team]: https://www.launchbadge.com
[README]: https://www.github.com/launchbadge/sqlx/tree/main/README.md
[browse our example projects]: https://www.github.com/launchbadge/sqlx/tree/main/examples
[Check our FAQ]: https://www.github.com/launchbadge/sqlx/tree/main/FAQ.md
[open a discussion]: https://github.com/launchbadge/sqlx/discussions/new?category=q-a
[Tokio]: https://www.tokio.rs
[async-std]: https://www.async.rs
[`tokio::runtime::Handle::try_current()`]: https://docs.rs/tokio/latest/tokio/runtime/struct.Handle.html#method.try_current
[`native-tls`]: https://docs.rs/native-tls/latest/native_tls/
[rustls]: https://docs.rs/rustls/latest/rustls/
ÁøJbpÈëîôþÀˆG˜ ·jˆ¡çÄ{ª…Åu« œÅj° ¸Å\Ü
×ÅR½ òÅJˆ

‹ÆB
¤Æ:Ë ½Æ3÷
ÕÆ+Ê
îÆ$ îÆ5
E–Ç!¸«ÇíÀÇ
 ˆ ž@   ž@c‚È ì@ÿ Ùì@g»Èó ÞÙÈæõ÷ÈÚ ”ÉÀ ª!ÆA¿ Ÿ#ÆAÏkÝɯ ¤$ÿɨ È&—Ê¢Ä'®ÊŸù(ÂÊà )ÜÊù+øÊyñ,›ËqŽ-ópÈ.ó FÔËlœ0êËd­1ƒÌ^2šÌY]4Å‚X´5ÍWf6°BV³7°BfoïÌO{9‡ÍC:¤Í9;¿Í3<ÖÍ&=ôÍ>ôÍ/>ŸÎÏ%ANŸÎ0Ð%ANËÎÜBQÄC
G‹Ï åH£Ïü ÎIª@ûdÀ@ùeÑ@÷fû@õhAói¨AñjÙAïlñAímŽBënšJééáÐåê÷Ðßµóð÷Ðõóò¨ÑÚÉ÷õ¨Ñð÷öÙÑÔÚ@]ôÑÇË%@^¢¥¨ܳ ¤Ø~Ì’qôµ\¬ÝDG/2œš ìÉÿœðîñÛÞä¢Í¯¡¤üþ#ˆ„Â~\_œñUX03Ä© üð1æ¼ÉÜß³ ¥¨œ¼ ŠüÙ x´‚
cfFIôÅ
7´í
- üÿŒº ï„å à ÖÙËΔ³ Å$ª|knSV@CT†L“(+úýäøðŒ¼÷”ƒæä¯ÏüFC **SEE DOCUMENTATION BEFORE USE**. Runtime-generic database driver.Áø
©üG1©
The underlying database drivers are chosen at runtime from the list set via
[`install_drivers`][crate::any::install_drivers]. Any use of [`AnyConnection`] or [`AnyPool`]
without this will panic.
It is recommended to use [`install_default_drivers`][crate::any::install_default_drivers] to activate all currently compiled-in drivers.
[`AnyConnection`]: sqlx_core::any::AnyConnection
[`AnyPool`]: sqlx_core::any::AnyPool
Á»º¼Îî\_OnceÁ$‰ï8JKinstall_driversÁ|° LŸÎàÏ%NŸÎÐ%N AnyArgumentsÁdåÌOAnyConnectOptionsÁŒóß%PËÎ\†ÜQAnyPoolOptionsÁt“ÛRAnyQueryResultÁt£æ%SAnyRowÁ4³í%T AnyStatementÁd¿òUAnyTransactionManagerÁ¬ÍV̓V AnyTypeInfoÁ\ä‡&WAnyTypeInfoKindÁ|ñ&XAnyValueÁDÑ&Y AnyValueRefÁ\Œ×&ZAnyKindÁ<ÊÓ%[|~Ûü˜'Á¹qtehLO36"% ëíÁÃ¥§xz¼ºhÄÔÙÑÚ]ôÑË%^¼ö9ì ü¤ üÂKH Install all currently compiled-in drivers for [`AnyConnection`] to use.ÁŽúü’\Y May be called multiple times; only the first call will install drivers, subsequent callsÁÄï will have no effect.Áˆú ### PanicsÁü›OL If [`install_drivers`] has already been called *not* through this function.Áëúüï41 [`AnyConnection`]: sqlx_core::any::AnyConnectionÁ¼« äc
_ŒË Jï8ï8¯ð8¼«é8ãTPàVçaB
_<closure_kind>Áa<closure_signature>Áa<upvars>Áaa_aógäcäcäcT»‘@”úÔô4“””zü@= Statically checked SQL query with `println!()` style syntax.ÁAúüEeb This expands to an instance of [`query::Map`][crate::query::Map] that outputs an ad-hoc anonymousÁü«jg struct type, if the query has at least one output column that is not `Void`, or `()` (unit) otherwise:Áú”š ```rust,ignoreÁÄ­ # use sqlx::Connect;ÁüÆ?< # #[cfg(all(feature = "mysql", feature = "_rt-async-std"))]ÁĆ # #[async_std::main]ÁüŸ*' # async fn main() -> sqlx::Result<()>{ÁüÊSP # let db_url = dotenvy::var("DATABASE_URL").expect("DATABASE_URL must be set");Áü¤ZW # if !(db_url.starts_with("mysql") || db_url.starts_with("mariadb")) { return Ok(()) }ÁüÿC@ # let mut conn = sqlx::MySqlConnection::connect(db_url).await?;ÁüÃ,) // let mut conn = <impl sqlx::Executor>;ÁüðLI let account = sqlx::query!("select (1) as id, 'Herp Derpinson' as name")Áì½ .fetch_one(&mut conn)Á„Û
.await?;Áìúüð>; // anonymous struct has `#[derive(Debug)]` for convenienceÁä¯ println!("{account:?}");ÁüÌ1. println!("{}: {}", account.id, account.name);Áþúd # Ok(())Á< # }Á,—‰‘üIF # #[cfg(any(not(feature = "mysql"), not(feature = "_rt-async-std")))]Á”ç # fn main() {}Á ```Á úü† HE The output columns will be mapped to their corresponding Rust types.ÁüÏ 85 See the documentation for your database for details:Áˆ
úüŒ
(% * Postgres: [crate::postgres::types]Áüµ
" * MySQL: [crate::mysql::types]矯
SP * Note: due to wire protocol limitations, the query macros do not know whenÁü¬ WT a column should be decoded as `bool`. It will be inferred to be `i8` instead.Áü„ )& See the link above for details.Áü® $! * SQLite: [crate::sqlite::types]ÁÓ úü× \Y **The method you want to call on the result depends on how many rows you're expecting.**Á´
úü¸
ro | Number of Rows | Method to Call* | Returns | Notes |Áü«ro |----------------| ----------------------------|-----------------------------------------------------|-------|Áüž¢Ÿ | None† | `.execute(...).await` | `sqlx::Result<DB::QueryResult>` | For `INSERT`/`UPDATE`/`DELETE` without `RETURNING`. |ÁüÁ | Zero or One | `.fetch_optional(...).await`| `sqlx::Result<Option<{adhoc struct}>>` | Extra rows are ignored. |ÁüÆÂ¿ | Exactly One | `.fetch_one(...).await` | `sqlx::Result<{adhoc struct}>` | Errors if no rows were returned. Extra rows are ignored. Aggregate queries, use this. |Áü‰š | At Least One | `.fetch(...)` | `impl Stream<Item = sqlx::Result<{adhoc struct}>>` | Call `.try_next().await` to get each row result. |Áü§]Z | Multiple | `.fetch_all(...)` | `sqlx::Result<Vec<{adhoc struct}>>` | |Áúü‰[X \* All methods accept one of `&mut {connection type}`, `&mut Transaction` or `&Pool`. Áüåvs † Only callable if the query returns no columns; otherwise it's assumed the query *may* return at least one row.ÁœÜ ## RequirementsÁüð^[ * The `DATABASE_URL` environment variable must be set at build-time to point to a databaseÁüÏKH server with the schema that the query string will be checked against.Áü›b_ All variants of `query!()` use [dotenv]<sup>1</sup> so this can be in a `.env` file instead.Áþúü‚vs * Or, `.sqlx` must exist at the workspace root. See [Offline Mode](#offline-mode-requires-the-offline-feature)Á„ù
below.ÁŠúüŽ_\ * The query must be a string literal, or concatenation of string literals using `+` (usefulÁüîda for queries generated by macro), or else it cannot be introspected (and thus cannot be dynamicÁüÓ&# or the result of another macro).Áúúüþ_\ * The `QueryAs` instance will be bound to the same database type as `query!()` was compiledÁüÞ_\ against (e.g. you cannot build against a Postgres database and then run the query againstÁľ a MySQL database).Á×úüÛ[X * The schema of the database URL (e.g. `postgres://` or `mysql://`) will be used toÁü·&# determine the database type.ÁÞúüâ~ <sup>1</sup> The `dotenv` crate itself appears abandoned as of [December 2021](https://github.com/dotenv-rs/dotenv/issues/74)ÁüäKH so we now use the [dotenvy] crate instead. The file format is the same.Á° úü´ -* [dotenv]: https://crates.io/crates/dotenvÁüâ /, [dotenvy]: https://crates.io/crates/dotenvyÁ´’! ## Query ArgumentsÁü©!^[ Like `println!()` and the other formatting macros, you can add bind parameters to your SQLÁüˆ"MJ and this macro will typecheck passed arguments and error on missing ones:ÁÖ"ú”Ú"ÒŽÄí"íŽü†#?ÄÆ#×üß#*ùüŠ$S­,Þ$‰‘üä$Z˜‘ü¿%JG # let mut conn = sqlx::mysql::MySqlConnection::connect(db_url).await?;ÁüŠ&,É’ü·& let account = sqlx::query!(Áü×&63 // just pretend "accounts" is a real tableÁüŽ'_\ "select * from (select (1) as id, 'Herp Derpinson' as name) accounts where id = ?",Á„î'
1i32ÁLÿ'ì‰(Ô“„§(ú“¸(úä¼(ç”üÙ(1d)Ó•<˜)è•, )‰‘ü¦)I†–”ð)Ø–<ƒ*ó–*úü*KH B
$Ï’& Ó’8«<Ô’*Ý’ à’ ¨“ á’ §“, ë’8,ì’'ñ’8Ä\ó’'þ’8d€“ Œ“  ¡“8 source_fileÁ\Ž“ š“, œ“8õ
$% ©“ ¯“ Ë“, °“8õ
$±“& µ“8«<¶“$ ½“, ¿“ À“ É“, Á“8À$“& Æ“8¯Ç“
Ê“*Í“ Г ¬” Ñ“ «”, Û“8,Ü“'á“8Ä\ã“'î“8dð“ ü“ ý“ ¥”8ûª\þ“ Š”, Œ”8õ
$$ ‘”8À$“” ˜” š” ¤”, ›” œ” ¢”, 8À$ž”
£”üÑ–!ü²”_\ A variant of [`query_file!`][`crate::query_file!`] which does not check the input or outputÁü’•^[ types. This still does parse the query to ensure it's syntactically and semantically validÁìñ• for the current database.Á(|ãg ó– ü˜ ù– ‡—, ú–8õ
$û–& ÿ–8«<€—*‰— Œ— å—  ä—, ——8,˜—'8Ä\Ÿ—'ª—8d¬— ¸— ¹— Þ—8ûª\º— Æ—, È—8õ
$É—$ Í—8Æ›<Ï— ×—8 ,Ù—% æ— ì— ˆ˜, í—8õ
$î—& ò—8«<ó—$ ú—, ü— ý— †˜, þ—8À$ÿ—& ƒ˜8¯„˜
‡˜*Š˜ ˜ ú˜ Ž˜ ù˜, ˜˜8,™˜'ž˜8Ę'«˜8d­˜ ¹˜ º˜ ó˜ 8ûª\»˜ ǘ, ɘ8õ
$ʘ$ Θ8À$И Õ˜ ט á˜, ؘ Ù˜ ߘ, Ú˜8À$Û˜
à˜$ â˜8Æ›<ä˜ ì˜8 ,–Ïü€™_\ A variant of [`query!`][`crate::query!`] which takes a path to an explicitly defined structÁ¼à™ as the output type.Áø™úüü™ZW This lets you return the struct from a function or add your own trait implementations.ÁךúüÛšb_ **This macro does not use [`FromRow`][crate::FromRow]**; in fact, no trait implementations areÁü¾›?< required at all, though this may change in future versions.Áþ›úü‚œc` The macro maps rows using a struct literal where the names of columns in the query are expectedÁüæœ\Y to be the same as the fields of the struct (but the order does not need to be the same).ÁüÃc` The types of the columns are based on the query and not the corresponding fields of the struct,Áü§ž! so this is type-safe as well.ÁÉžúüÍž This enforces a few things:Áüíž0- * The query must output at least one column.ÁüžŸMJ * The column names of the query must match the field names of the struct.ÁüìŸb_ * The field types must be the Rust equivalent of their SQL counterparts; see the correspondingÁüÏ ,) module for your database for mappings:Áüü ,) * Postgres: [crate::postgres::types]Áü©¡&# * MySQL: [crate::mysql::types]ÁüСWT * Note: due to wire protocol limitations, the query macros do not know whenÁü¨¢[X a column should be decoded as `bool`. It will be inferred to be `i8` instead.Áü„£-* See the link above for details.Áü²£(% * SQLite: [crate::sqlite::types]ÁüÛ£_\ * If a column may be `NULL`, the corresponding field's type must be wrapped in `Option<_>`.Áü»¤>; * Neither the query nor the struct may have unused fields.Áú¤úüþ¤b_ The only modification to the `query!()` syntax is that the struct name is given before the SQLÁ\ᥠstring:Á”í¥ÒŽÄ€¦íŽü™¦?ÄÙ¦×üò¦*ùü§S­,ñ§‰‘ü÷§Z˜‘üÒ¨Cü‘¤–© #[derive(Debug)]Á¤«© struct Account {Á„À©
id: i32,Á¤Ñ© name: StringÁ,æ©ì©úüð©,É’üª" let account = sqlx::query_as!(Á¤Àª Account,ÁüÕª_×¶„µ«¿·LƫطìЫÔ“„î«ú“ÿ«ú䃬ç”ü ¬1Ò¬údÖ¬Ó•<ã¬è•,묉‘üñ¬I†–”»­Ø–<έó–Ö­úüÚ­NK **The method you want to call depends on how many rows you're expecting.**Á©®úü­®eb | Number of Rows | Method to Call* | Returns (`T` being the given struct) | Notes |Áü“¯eb |----------------| ----------------------------|----------------------------------------|-------|Áüù¯wt | Zero or One | `.fetch_optional(...).await`| `sqlx::Result<Option<T>>` | Extra rows are ignored. |Áüñ°µ² | Exactly One | `.fetch_one(...).await` | `sqlx::Result<T>` | Errors if no rows were returned. Extra rows are ignored. Aggregate queries, use this. |Áü§² | At Least One | `.fetch(...)` | `impl Stream<Item = sqlx::Result<T>>` | Call `.try_next().await` to get each row result. |Áü¸³PM | Multiple | `.fetch_all(...)` | `sqlx::Result<Vec<T>>` | |Á‰´úü´YV \* All methods accept one of `&mut {connection type}`, `&mut Transaction` or `&Pool`.Áüç´XU (`.execute()` is omitted as this macro requires at least one column to be returned.)ÁÀµúüĵ52 ### Column Type Override: Infer from Struct FieldÁüúµVS In addition to the column type overrides supported by [`query!`][`crate::query!`],ÁüѶ30 [`query_as!()`][`crate::query_as!`] supports anÁü…· additional override option:Á¥·úü©·_\ If you select a c
out_structÁT´Ï& ¾Ï8õ
$¿Ï$ ÃÏ, ÅÏ8ž@,ÆÏ& ËÏ8$ÌÏ*ÒÏ ÕÏ °Ð ×Ï ¯Ð, áÏ8,âÏ'çÏ8Ä\éÏ'ôÏ8döÏ ‚Ð ƒÐ ©Ð 8recordÁ4„Ð ‹Ð, Ð8ÝïTŽÐ$ ˜Ð8¬”4šÐ ¡Ð, £Ð8ž@,¤Ð% ±Ð ·Ð ãÐ
, ¸Ð8ÝïT¹Ð& ÃÐ8õ
$ÄÐ$ ÈÐ, ÊÐ8ž@,ËÐ& ÐÐ8$ÑÐ$ ÕÐ, ×Ð ØÐ áÐ, ÙÐ8À$ÚÐ& ÞÐ8¯ßÐ
âÐ*åÐ èÐ ×Ñ êÐ ÖÑ, ôÐ8,õÐ'úÐ8Ä\üÐ'‡Ñ8d‰Ñ •Ñ –Ñ ÐÑ
8°ñ4—Ñ žÑ,  Ñ8ÝïT¡Ñ$ «Ñ8¬”4­Ñ ´Ñ, ¶Ñ8ž@,·Ñ$ ¼Ñ8À$¾Ñ ÃÑ ÅÑ ÏÑ, ÆÑ ÇÑ ÍÑ, ÈÑ8À$ÉÑ
ÎÑÔãÚüÝÑif Combines the syntaxes of [`query_as!`][`crate::query_as!`] and [`query_file!`][`crate::query_file!`].ÁÇÒúüËÒ?< Enforces requirements of both macros; see them for details.Á‹ÓúÓÒŽÄ¢ÓíŽü»Ó?ÄûÓ×ü”Ô*ùü¿ÔS­,“Õ‰‘ü™ÕZ˜‘üôÕCü‘¤¸Ö¥Æ¤ÍÖÃÆ„âÖáÆ¤óÖûÆ,ˆ×™ÇŽ×úü’×,É’ü¿×[X let account = sqlx::query_file_as!(Account, "tests/test-query-account-by-id.sql", 1i32)Áì›ØÔ“„¹Øú“ÊØúäÎØç”üëØ1Ùúd¡ÙÓ•<®Ùè•,¶Ù‰‘ü¼ÙI†–”†ÚØ–<™Úó–(|¡Úóg þÚ ·Ý „Û ¤Û , …Û8ÝïT†Û& Û8õ
$‘Û$ •Û, —Û8õ
$˜Û& œÛ8«<Û*¦Û ©Û ˆÜ «Û ‡Ü, µÛ8,¶Û'»Û8Ä\½Û'ÈÛ8dÊÛ ÖÛ ×Û Ü 8°ñ4ØÛ ßÛ, áÛ8ÝïTâÛ$ ìÛ8ûª\îÛ úÛ, üÛ8õ
$ýÛ% ‰Ü Ü ½Ü
, Ü8ÝïT‘Ü& ›Ü8õ
$œÜ$  Ü, ¢Ü8õ
$£Ü& §Ü8«<¨Ü$ ¯Ü, ±Ü ²Ü »Ü, ³Ü8À$´Ü& ¸Ü8¯¹Ü
¼Ü*¿Ü ÂÜ µÝ ÄÜ ´Ý, ÎÜ8,ÏÜ'ÔÜ8Ä\ÖÜ'áÜ8dãÜ ïÜ ðÜ ®Ý
8°ñ4ñÜ øÜ, úÜ8ÝïTûÜ$ …Ý8ûª\‡Ý “Ý, •Ý8õ
$–Ý$ šÝ8À$œÝ ¡Ý £Ý ­Ý, ¤Ý ¥Ý «Ý, ¦Ý8À$§Ý
¬ÝüÒßü»Ýxu A variant of [`query_as!`][`crate::query_as!`] which does not check the input or output types. This still does parseÁü´Þ[î˜(|ßh òß Ââ øß –à , ùß8ÝïTúß& „à8õ
$…à$ ‰à, ‹à8ž@,Œà& ‘à8$’à*˜à ›à ‡á à †á, §à8,¨à'­à8Ä\¯à'ºà8d¼à Èà Éà €á
8°ñ4Êà Ñà, Óà8ÝïTÔà$ Þà8¬”4àà çà, éà8ž@,êà$ ïà8Æ›<ñà ùà8 ,ûà% ˆá á »á
, á8ÝïT‘á& ›á8õ
$œá$  á, ¢á8ž@,£á& ¨á8$©á$ ­á, ¯á °á ¹á, ±á8À$²á& ¶á8¯·á
ºá*½á Àá Àâ Âá ¿â, Ìá8,Íá'Òá8Ä\Ôá'ßá8dáá íá îá ¹â8°ñ4ïá öá, øá8ÝïTùá$ ƒâ8¬”4…â Œâ, Žâ8ž@,â$ ”â8À$–â ›â â §â, žâ Ÿâ ¥â,  â8À$¡â
¦â$ ¨â8Æ›<ªâ ²â8 ,´âüëä$üÆâqn A variant of [`query_file_as!`][`crate::query_file_as!`] which does not check the input or output types. ThisÁü¸ãRO still does parse the query to ensure it's syntactically and semantically validÁì‹ä°(|©äh å ìç –å ¶å , —å8ÝïT˜å& ¢å8õ
$£å$ §å, ©å8õ
$ªå& ®å8«<¯å*¸å »å «æ ½å ªæ, Çå8,Èå'Íå8Ä\Ïå'Úå8dÜå èå éå ¤æ
8°ñ4êå ñå, óå8ÝïTôå$ þå8ûª\€æ Œæ, Žæ8õ
$æ$ “æ8Æ›<•æ æ8 ,Ÿæ% ¬æ ³æ áæ
, ´æ8ÝïTµæ& ¿æ8õ
$Àæ$ Äæ, Ææ8õ
$Çæ& Ëæ8«<Ìæ$ Óæ, Õæ Öæ ßæ, ׿8À$Øæ& Üæ8¯Ýæ
àæ*ãæ ææ êç èæ éç, òæ8,óæ'øæ8Ä\úæ'…ç8d‡ç “ç ”ç ãç8°ñ4•ç œç, žç8ÝïTŸç$ ©ç8ûª\«ç ·ç, ¹ç8õ
$ºç$ ¾ç8À$Àç Åç Çç Ñç, Èç Éç Ïç, Êç8À$Ëç
Ðç$ Òç8Æ›<Ôç Üç8 ,ÞçÌ®ïüðçmj A variant of [`query!`][`crate::query!`] which expects a single column from the query and evaluates to anÁüÞè96 instance of [QueryScalar][crate::query::QueryScalar].Á˜éúüœé_\ The name of the column is not required to be a valid Rust identifier, however you can stillÁüüé_\ use the column type override syntax in which case the column name _does_ have to be a validÁüÜê]Z Rust identifier for the override to parse properly. If the override parse fails the errorÁüºë_\ is silently ignored (we just don't have a reliable way to tell the difference). **If you'reÁüšìb_ getting a different type than expected, please check to see if your override syntax is correctÁôýì before opening an issue.**Áœíúü ípm Wildcard overrides like in [`query_as!`][`crate::query_as!`] are also allowed, in which case the output typeÁä‘î is left up to inference.Á®îúü²î96 See [`query!`][`crate::query!`] for more information.Á(|ìîd»ï Èï ·ñ Îï Úï, Ïï8ž@,Ðï& Õï8$Öï*Üï ßï ­ð, éï8,êï'ïï8Ä\ñï'üï8dþï Šð ‹ð §ð8scalarÁ4Œð “ð8 •ð$ –ð8¬”4˜ð Ÿð, ¡ð8ž@,¢ð% ®ð ´ð Îð, µð8ž@,¶ð& »ð8$¼ð$ Àð, Âð Ãð Ìð, Äð8À$Åð& Éð8¯Êð
Íð*Ðð Óð µñ, Ýð8,Þð'ãð8Ä\åð'ðð8dòð þð ÿð ¯ñ 84€ñ ‡ñ8 ‰ñ$ Šñ8¬”4Œñ “ñ, •ñ8ž@,–ñ$ ›ñ8À$ñ ¢ñ ¤ñ ®ñ, ¥ñ ¦ñ ¬ñ, §ñ8À$¨ñ
­ñô€óü»ñWT A variant of [`query_scalar!`][`crate::query_scalar!`] which takes a file path likeÁü“ò*' [`query_file!`][`crate::query_file!`].Á(|¾ò#h Ÿó šõ ¥ó ³ó, ¦ó8õ
$§ó& «ó8«<¬ó*µó ¸ó Šô, Âó8,Ãó'Èó8Ä\Êó'Õó8d×ó ãó äó „ô84åó ìó8 îó$ ïó8ûª\ñó ýó, ÿó8õ
$€ô% ‹ô ‘ô ­ô, ’ô8õ
$“ô& —ô8«<˜ô$ Ÿô, ¡ô ¢ô «ô, £ô8À$¤ô& ¨ô8¯©ô
¬ô*¯ô ²ô ˜õ, ¼ô8,½ô'Âô8Ä\Äô'Ïô8dÑô Ýô Þô ’õ 84ßô æô8 èô$ éô8ûª\ëô ÷ô, ùô8õ
$úô$ þô8À$€õ …õ ‡õ ‘õ, ˆõ ‰õ õ, Šõ8À$‹õ
õüúø#üžõc` A variant of [`query_scalar!`][`crate::query_scalar!`] which does not typecheck bind parametersÁü‚ö,) and leaves the output type to inference.Áü¯öOL The query itself is still checked that it is syntactically and semanticallyÁüÿöc` valid for the database, that it only produces one column and that the number of bind parametersÁ|ã÷ is correct.Áó÷úü÷÷@= For this macro variant the name of the column is irrelevant.Á(|¸ø3h žù ¯û ¤ù °ù, ¥ù8ž@,¦ù& «ù8$¬ù*²ù µù ”ú, ¿ù8,Àù'Åù8Ä\Çù'Òù8dÔù àù áù Žú 84âù éù8 ëù$ ìù8¬”4îù õù, ÷ù8ž@,øù$ ýù8Æ›<ÿù ‡ú8 ,‰ú% •ú ›ú µú, œú8ž@,ú& ¢ú8$£ú$ §ú, ©ú ªú ³ú, «ú8À$¬ú& °ú8¯±ú
´ú*·ú ºú ­û, Äú8,Åú'Êú8Ä\Ìú'×ú8dÙú åú æú §û84çú îú8 ðú$ ñú8¬”4óú úú, üú8ž@,ýú$ ‚û8À$„û ‰û ‹û •û, Œû û “û, Žû8À$û
”û$ –û8Æ›<˜û  û8 ,¢ûü™ÿ(ü³ûb_ A variant of [`query_file_scalar!`][`crate::query_file_scalar!`] which does not typecheck bindÁü–ü74 parameters and leaves the output type to inference.ÁüÎüB? The query itself is still checked that it is syntactically andÁü‘ý`] semantically valid for the database, that it only produces one column and that the number ofÁüòý bind parameters is correct.Á’þúü–þ@þª(|×þCh Âÿ ß Èÿ Öÿ, Éÿ8õ
$Êÿ& Îÿ8«<Ïÿ*Øÿ Ûÿ ¾€, åÿ8,æÿ'ëÿ8Ä\íÿ'øÿ8dúÿ †€ ‡€ ¸€ 84ˆ€ 8 ‘€$ ’€8ûª\”€  €, ¢€8õ
$£€$ §€8Æ›<©€ ±€8 ,³€% ¿€ Å€ á€, Æ€8õ
$Ç€& Ë€8«<Ì€$ Ó€, Õ€ Ö€ ߀, ×€8À$Ø€& Ü€8¯Ý€
à€*ã€ æ€ Ý, ð€8,ñ€'ö€8Ä\ø€'ƒ8d…   ×84“ š8 œ$ 8ûª «, ­8õ
$ ²8À ¹ » Å, ¼ ½ Ã, ¾8À$¿
Ä$ Æ8Æ› Ð8 ¤š ü‹‚pm Embeds migrations into the binary by expanding to a static instance of [Migrator][crate::migrate::Migrator].Áü‚ú”€ƒÒŽü“ƒ# sqlx::migrate!("db/migrations")Áœ·ƒ .run(&pool)Á„˃ú“<܃ó–äƒú”èƒÒŽüûƒ  use sqlx::migrate::Migrator;Áœ„úü „OL static MIGRATOR: Migrator = sqlx::migrate!(); // defaults to "./migrations"Á<ð„ó–ø„úüü„_\ The directory must be relative to the project root (the directory containing `Cargo.toml`),ÁüÜ…^•£„»†ý£̆úüІro See [MigrationSource][crate::migrate::MigrationSource] for details on structure of the ./migrations directory.ÁÇúüLJ41 ## Triggering Recompilation on Migration ChangesÁüü‡da In some cases when making changes to embedded migrations, such as adding a new migration withoutÁüáˆc` changing any Rust source files, you might find that `cargo build` doesn't actually do anything,ÁüʼnYV or when you do `cargo run` your application isn't applying new migrations on startup.ÁŸŠúü£ŠXU This is because our ability to tell the compiler to watch external files for changesÁüüŠ\Y from a proc-macro is very limited. The compiler by default only re-runs proc macros whenÁüÙ‹c` one or more source files have changed, because normally it shouldn't have to otherwise. SQLx isÁü½Œda just weird in that external factors can change the output of proc macros, much to the chagrin ofÁü¢-* the compiler team and IDE plugin authors.ÁÐúüÔ\Y As of 0.5.6, we emit `include_str!()` with an absolute path for each migration, but thatÁü±ŽSP only works to get the compiler to watch _existing_ migration files for changes.Áúü‰a^ Our only options for telling it to watch the whole `migrations/` directory are either via theÁüë\Y user creating a Cargo build script in their project, or using an unstable API on nightlyÁìÈ governed by a `cfg`-flag.Áæúüê)& ##### Stable Rust: Cargo Build ScriptÁü”‘`] The only solution on stable Rust right now is to create a Cargo build script in your projectÁüõ‘:7 and have it print `cargo:rerun-if-changed=migrations`:Á°’út´’ `build.rs`ÁlÃ’
```no_runÁ|Ñ’ fn main() {Áüá’63 println!("cargo:rerun-if-changed=migrations");Á,˜“™Ç<ž“󖦓úüª“PM You can run `sqlx migrate build-script` to generate this file automatically.Áû“úüÿ“ª§ See: [The Cargo Book: 3.8 Build Scripts; Outputs of the Build Script](https://doc.rust-lang.org/stable/cargo/reference/build-scripts.html#outputs-of-the-build-script)Áª•úü®•! #### Nightly Rust: `cfg` FlagÁüЕZW The `migrate!()` macro also listens to `--cfg sqlx_macros_unstable`, which will enableÁü«–`] the `track_path` feature to directly tell the compiler to watch the `migrations/` directory:ÁŒ—ú
```sh,ignoreÁü¡—<9 $ env RUSTFLAGS='--cfg sqlx_macros_unstable' cargo buildÁ<Þ—ó–æ—úüê—a^ Note that this unfortunately will trigger a fully recompile of your dependency tree, at leastÁü̘YV for the first time you use it. It also, of course, requires using a nightly compiler.Á¦™úüª™EB You can also set it in `build.rustflags` in `.cargo/config.toml`:Á”ð™ ```toml,ignoreÁ\ƒš [build]Áüš.+ rustflags = ["--cfg=sqlx_macros_unstable"]Á<¾šó–ÆšúüÊšA> And then continue building and running your project normally.ÁŒ›úüXU If you're building on nightly anyways, it would be extremely helpful to help us testÁüé›)& this feature and find any bugs in it.Á“œúü—œb_ Subscribe to [the `track_path` tracking issue](https://github.com/rust-lang/rust/issues/73921)Áüúœ@= for discussion and the future stabilization of this feature.Á»úü¿a^ For brevity and because it involves the same commitment to unstable features in `proc_macro`,Áü¡žUR if you're using `--cfg procmacro2_semver_exempt` it will also enable this featureÁü÷žvs (see [`proc-macro2` docs / Unstable Features](https://docs.rs/proc-macro2/1.0.27/proc_macro2/#unstable-features)).Á»°BœôŸÜîŸ(|Š <§  ¯  Ê¡ µ   , ¶ 8dirÁ· & º 8«<» *Ä  Ç  û  È  ú , Ò 8,Ó 'Ø 8Ä\Ú 'å 8°B<ç  î  ï  ô , ð 8ŽÞñ % ü  ƒ¡ „¡*†¡ ‰¡ Ç¡ Š¡ Æ¡, ”¡8,•¡'š¡8Ä\œ¡'§¡8°B<©¡ °¡ ±¡ À¡7 ./migrationsÁt²¡% È¡„×»‘@”³Ô­rtu~‰ŠÄÆúƒ\pqúƒ p&üÚ#Š ŠÍN ÍNäc¥ss òÍìÍN ë
rÍN†cs1•c|1¹`D ¥v¦wwv¿ã Íì˜O Îd™¾X_ÀëØ×uxyô¢ÃÎd¹`lpô¢ÃÎdtt
uÍN˜O}z|pttôÂptt¢Ã̾ ¥{¦||{¿ã à §ä Æ Îd}äÞ å Œ Œ˜OÎdz ï z
}ÍN˜O¡d2ä±

~~ÍìŽk
~µçµçÍì‹k
çç

~~üç
#
Žkk~~
Žk5üÁ 1¥¦ƒƒ¿ã Æ §ä É –N„  Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÍNü– -8¥¦ÍìàO ÍìæO ž ¤Oˆ  àOaa ¥¦ŒŒ¿ã ö §ä ù ™m7NKCš²î‘ŠŽô¢Ùmaakpô¢Ùm
ŠÍN˜O{} pôÂ
p¢Ãäž
¥¦¿ã £
§ä ¦
™m’üÁ
%È
ŽÍN Ž˜Oøm Ö

ÍN˜O¿ˆ6¨m‘6ü¥µç,¿µçµçÍì¨r¸ïüÞ&Žk¨r
Žk»8ü»H¨EôO˜À<°Pü­J¨EššøQ›²´Rü¢L¨E¼Tž§œœ°Pü˜N¨E  ÑU¡ŸŸ´Rü‘8¨E££æV¤¢¢õPüë:¨E¦¦¯W§ð¥¥ùRüÈ08¥©©Ðê ÍøWªdÿ<„¨¨àOü”488¥¬¬ÍìY ÇX­««Yüä08¥¯¯Ðê éŸY°d< ®®àOü°488¥²²äô µèY³±±Yü€@8¥µµÐê ±Z¶´´µ[üäD88¥¸¸äô é„\¹<´··ˆ]üÌ@8˜¥»˜»Ðê Ñ×]¼d“<˜ººµ[ü°D88𥾾šäô µ ^¿<€½½ˆ]ü˜38¥Á¦ÂÂÁÐê àê  é^Ã<×ÀÀæOôçÍN¥ÅÅ¿ã ü
ÄÍN ü˜!œ œÍNÍN¥ÇÇ ±¿ã ª
ÆÍNýÿ9””»‘@”ðÔê4‹ÎÏÒŸÎì%ÈÉÅ‚,#¾ÈÊp,9¿cÈÌpÂcÈÌt<@ÄcÈÍlRD.DF"$¿a„–ÐÐÍìŸb §ðarq·Î€—›ÏÑŸbða¿aUŸbðaÎÎ
ÏŸbdfÎΟbì³ÒÓÒÓµçÍìßa ÇÒµç(µçÔÔ*,ü×pŒÚ Žk°ažìt¡ˆˆ¢ˆl }.xϾ Ìì‰TÒ õÒ
ÔŽkßaüË\8ž8Ÿ8 8¡Ö¡Ÿ žÖÍìû_ оû_,‰Ììû_$‘ û_$˜û_¸_×Ô×JLü®oŒ±¢ ¢¸_Ì_…Õ ÌÕ
×8888û_¨×þŠØ–‹Ø³‹ØØ×ÃuüÃE8£8¤8¥Ú£¥¤ÚÍìÍ` ÈÄcÍ`<€ÔÛ!#üoŒ’¦ ¦`ž`…Ù ­Ù
Û888Í`ÛþŠÜ–‹Ü³‹ÜÜÛÕyü­B8§8¨Þ¨Þ§Íì™a ²¿c™aà`ßÔß!
,ææÀþ °
ðaçÔçüÞ
o·
¬ ¬ðaða…å ü
å
çŸb
 çþŠè–‹è³‹èè窧̴ 4› (|¤ Sh Î  ¦ Ô  Ü , Õ 8° Ö & × 8 *Þ  á  £ â  ¢8#ì , ð 8 'ö 8ŽH '

  
8æHL…
$ Ž
8¹H
% ¡
8¬
8wrapperÁ
 ¸
8¹H„º
 Ê
 Í
, Ë
8° Ì
% Î
8Ø
8wrap_errÁ
 å
8׎
 î
8ÿHŒï
  % 8«  œ8׎<•% ¤ghlåüØ+( Conversions between Rust and SQL types.Áúüˆ_\ To see how each SQL type maps to a Rust type, see the corresponding `types` module for eachÁ
database:Áöúüú" * Postgres: [postgres::types]Áä * MySQL: [mysql::types]Áôº * SQLite: [sqlite::types]ÁÙúüÝ]Z Any external types that have had [`Type`] implemented for, are re-exported in this moduleÁü»^[ for convenience as downstream users need to use a compatible version of the external crateÁüš,) to take advantage of the implementation.ÁÇúÌË [`Type`]: types::TypeÁóÈìó í¸ììIìUuidÁ%Öì
BigDecimalÁUìJsonÁ%Ëéì±–êì JsonRawValueÁeÑì JsonValueÁMßF“ìTextÁ%ùíì–—îìŒÕüë=: Provides [`Encode`] for encoding values for the database.Á÷еð÷ÐòIsNullÁ4â®ñŒÆ<>œª¤Êht  üá>; Provides [`Decode`] for decoding values from the database.Á¨ÑÉõ¨Ñö̽ $œ—!4¤!¤·!°hl“"üÎ!DA Types and traits for the `query` family of functions and macros.Á,"MapÁÂ"öúQueryÁ,Ç"îûQueryAsÁ<ð"ü QueryScalarÁ\ž#Þý„¯"`bMOäÛ"<ü…#$&|Ú#ü®#+( Convenience re-export of common traits.Á<â#G<ÿ#˜ ÿ¸Åt›$Ü
×ÅT¾$½ ¨Ñ4Ý$É÷õ¨Ñ÷ö÷Ð4ø$µƒóð÷ЃóòÕÆD“%Ê
îÆ<°% îÆ
EçÄlÌ%ª®Êî%ù(ÂÊL†&à ˆ)ó$¤&È.ó Ftø#T¬”$EŒ·$6lÖ$'lñ$ú|Œ%Ìt©%¼¤Å%˜Tç%ˆ„ÿ%x\&isY2 úY2¼Y2² Y2ÿY2ðY2¼Y2ÀY2Y2ÛY2ßY2¯Y2Y2Y2Y2êY2îY2·Y2jY2ÃY2 äY2 åY2 æY2 çY2ÍY2 ÜY2 ÝY2 ÞY2¦
Y2 ÆY2 ÇY2Š Y2 ²Y2 Y2
Y2zrŒ;tokio::runtimeÁ=https://docs.rs/tokio/latest/tokio/runtime/struct.Handle.htmlÁcrate::sqlite::SqlitePoolÁ #ïÌbrowse our example projectsÁ:https://www.github.com/launchbadge/sqlx/tree/main/examplesÁ
Check our FAQÁtokio::runtime::HandleÁ ¡³¡'ïÌ types::TypeÁ ;https://www.github.com/launchbadge/sqlx/tree/main/README.mdÁž¢¾¢£ ¡›'ïÌ{±J
sqlite::typesÁÁ£READMEÁÖ£ž¢£' mysql::typesÁ¤https://www.launchbadge.comÁÚ¤Ö£Á£È±J%tokio::runtime::Handle::try_current()Ápostgres::typesÁü¤the LaunchBadge teamÁ“¥Ú¤Ó9¤https://www.async.rsÁÏ¥±Jë¨Ñý¥—¦“¥ü¤Ó9¨Ñ async-stdÁǦÏ¥ý¥{“¨ÑÉ—¦ó https://www.tokio.rsÁ¢§Ǧ<Ó9%https://docs.rs/rustls/latest/rustls/ÁóTokioÁê§¢§<-https://docs.rs/native-tls/latest/native_tls/Á™¨÷Ð@https://github.com/launchbadge/sqlx/discussions/new?category=q-aÁóÈȨê§<
native-tlsÁ㨙¨÷Ðopen a discussionÁ¦©Ȩ
crate::sqliteÁ†ªã¨÷е8https://www.github.com/launchbadge/sqlx/tree/main/FAQ.mdÁ§ª¦©Œ;õ¡ɪ†ª #ý¢òª§ªŒ;³¡õ¡ɪ #¾¢ý¢òª$ôÑøcrate::any::install_driversÁ Æ 
crate::anyÁJsqlx_core::any::AnyConnectionÁsqlx_core::anyÁÙÑsqlx_core::any::AnyPoolÁÚä? _#crate::any::install_default_driversÁôÑø£¬ÆÓ¬æ¬ä?ˆ­¿ÙÑ¥­ôÑÏ­ _ø£¬ÆÓ¬æ¬Ë%ä?ˆ­ÙÑ¥­Ï­$ôÑø£¬ ÆÓ¬J欈­ÙÑÚ¥­Úä?Ï­ôÑø£¬ÆÓ¬æ¬ä?ˆ­¿ÙÑ¥­ôÑË%Ï­ _ø£¬ÆÓ¬æ¬Ë%ä?ˆ­ÙÑ¥­Ï­¥crate::query_scalarÁkquery_file_scalar!Ácrate::query_file_scalarÁž@MigrationSourceÁcrate::sqlite::typesÁdotenvÁhttps://crates.io/crates/dotenvÁ crate::TypeÁ the README for sqlx-cliÁ!https://crates.io/crates/sqlx-cliÁž›
query_scalar!Á’± Ÿ¯±îÆè± crate::mysqlÁü±•² custom typesÁIJÙ²ž›crate::query::QueryScalarÁ¡³’±îÆcrate::mysql::typesÁгü± see belowÁí³IJÈ query_as!()Á´¡³îÆcrate::postgresÁÀ´г/https://docs.rs/proc-macro2/1.0.27/proc_macro2/Á>https://dev.mysql.com/doc/internals/en/com-query-response.htmlÁä´í³crate::FromRowÁ
ƒµ´Þcrate::postgres::typesÁ¥µÀ´$proc-macro2 docs / Unstable FeaturesÁŵ.the ColumnDefinition structure in COM_QUERY_OKÁùµä´query!Áȶƒµú crate::queryÁcõ¶¥µ{.https://github.com/rust-lang/rust/issues/73921Áœ·ŵbhttps://dev.mysql.com/doc/dev/mysql-server/8.0.12/group__group__cs__column__definition__flags.htmlÁË·¢9ùµcrate::query_file_asÁhЏȶ úª¸ õ¶{“crate::query::MapÁthe track_path tracking issueÁthe NOT_NULL flagÁ¹Ë·¢9иquery_file_as!Á‡ºЏœ·
query::MapÁÙºª¸øúChttps://doc.rust-lang.org/stable/cargo/reference/build-scripts.htmlÁ https://crates.io/crates/dotenvyÁ‘»¹ïºи¢9crate::query_fileÁe¾»‡ºã»Ùºö>The Cargo Book: 3.8 Build Scripts; Outputs of the Build ScriptÁˆ¼-https://github.com/dotenv-rs/dotenv/issues/74Áмﺑ» query_file!Á’½¾»crate::migrate::MigratorÁcrate::migrate::MigrationSourceÁã»ʽˆ¼
December 2021Á“¾мcrate::query_asÁg×¾’½MigratorÁɪó¾crate::migrateÁo¿ʽ Offline ModeÁÆ¿“¾ query_as!Áä¿ Ù×¾Ʊl‰Àɪž@ó¾±%¢À¿¡ ²ÆÀÆ¿õ²ãÀ俯±Ʊ‰Àž@ɪè±¢À³•² ²ÆÀÙ²õ²ãÀž›˜ ¡ª« ° ܽ
÷
Ê
 ùà ñŽÈœ­ÜµÉØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6ÜØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6ØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6ØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6only for type resolutionexplicit panicÀƒÿunprintable error: À%unprintable error: (unprintable type)%ÿÿŽÆ­ÆÂÆËÆÚÆ÷Æ£Çߟ˒CIZY<z¼·åùDÿVËJ©@¥T·AáÐ+™¸ÑQ 1úÏ¿I§ÔœªmnþN–ç—vlŒÌžLk€‚¥å_™ì½
:ršR0ávx7ã3 -ØÃ×…V+B¤„à ²ö«È¦²÷ò°¬Üv…2á>SãáOnšžh_k,›ô<˜€í¥Øz"JÆOÛ³æ‘жɷ¢CuÑw>²éA©BßÅ¥J<ä›Ù6½¥•!߯ÿ7Äà¤+šp-ht%˽£mfÂqzW9;.7ÔüR Ue&q?ÅÁÜúåÉŠ¨‰¨¨6êüô7Œ´GSg4£u€»­V,ýðdFóíëž$Ó”÷K/»vyØÍ> .ƒ 1¾Lìù+4e… LvPVnL톳ætômÿ¸„žß”ç-ã)t¤Ä¼öêÆ3&vöMËÛñÀóÉÍZò™ .Ò+ÿtömØ 7ÁÚ„ÄïùïûØ5¶‘ôⓦâLuóúeúeô"þâà”íFƽì×!ZXñM'cyÎàÄ1÷„w¾úÙº#ý½7àÔk·^éÒ~"ˆFOëˆH­ùî>RÕs&Ú¡p+C¾÷qO±â + ŽÂ¼â(_³(V€ìD
y%Œçñ-·i+SÀ¢ÿ4°«ÅEûk4PV¢'±çÌù6Ú>ÓreFã:c¹­€Aù2ňK6;—ÊÈ-Ù7ÊkñýÆD О€OÚº¹å`1ïj«dŒ¥À!?ÒÝ=æ» ©È¹Iļ,Ñm…Ai´ŒV­ÍVa´<ª¼GJ‰Yœ}°"e"êÓ+…)ùup¹˜uKEÜ–:…C~Õ-¢AjÍÜЂLU%€t²1ÿøý•dð}¡ñó/¦=Wø'S=Í®Kg93<~AÍ-HÄ´:“…~ÁzjɨEa”+Hr‰±©qAA! Db n<<þê[ZHXÈe¤ J½\€sI Ü ržý¤®?[p°ƒ•Ù¤Úr¾¹<‰7ƒÌž•‹ùûÂÚýë<Á
Ã4÷Çù2º”Z÷†çùgÞl¯‘ÜŽé®wÓ†/=§Ô‰ƒ›\©ÚªÓÖô'ŽMI?¦©¢ÌâTÁEWÝdªÁ9² 96Þeây¿Ÿ6?Š—&€†]¾›w×ÞØ×PwíMMÐ.ÎsØc¿ºüÞõ¦õ{ÉÏ0BˆØŒYuR2‚!ý¡ô1„ÞlvòÂóߦô^Þ—ÊTOd䜒F?éTÙA¢K¶¼2ØVyüñǤðœ{d"fxqxÁ+¢60±óš½%ƒ:¡
ÝØÎŸ¦¥µåíýÄ …º%³)¹b˜·¤ø†j‚‹<KF¨ m³ ˜ZÛƒ·ŠËWV…äÿFèa«µºØ¬à3s¡ñšnèŠÏÖƒ{H=Š„[&BËH'^ïÜÒ yÏ_óÈMŒ€Škäe!èžbõ2À9±ÔL·y¬ž,]”4I=ó°“‹ÝzÄ©ê¦<²möêE“܈«ú`ü_2ê±Ê»bô±0%ƒ‡jElˆz×êWQŽ2Zî”­HË´Ï4Rýž:®üç)ÎåÆ~1Þvf ^Å’`S¨½ÙRÿüMÙ"Ö%F ê9ÒŸX
­{KO¤Æýhù`„V:ô`êZg%ïfIÛ³Ï`1¿oëMÞX"Þ׃£ÍÉB0€6÷LóNÚò®Æt³zÅã¼áÓ~Åþ%Äeç)'CñE£çáÀÉÍJ‰yœš5î“jH‹Ý •½cÂ×nÚnñ‘’{¾¸Thõ÷йù+¾€:î䄊†KµobBu(9öEhü0Çè$k)¹Æ±ª˜ß£fÉtŒ)¬ï1X±¤¼øG?A‚ØÎä3]÷Ì%¦Ø¾ëˆîËoì"pëc@ÇJ@ÿoäùžèÂâêxí”3ûàO÷ºïÄÞ[øbÂs.³è¹“%–.ŽXR\ÿ’žn½ÜÙx×x)šøBª¢ýN`æ[¶,V¹•
gÁõZ
Ÿ6q­¬©Æ\J¹’{&D\¹Ñ>DÖ¬S\-e¦ÐsìA?s%ÿ±C¿ÆVkRÝŽ…mü•B"+þ<O‹ãtƒÕ‘«þ¥9áoËà$OÑ#0äÀíãúµfu5]r¼ÜªÁYã õ8îoÓиIq_eãá*„Â;ÿj€Ì¢
öPf™7Õ¿P%ŸGúŽ•tÀSÐO •C²øšò˜` Ì“ˆAþ†vZ#¡¶Õr L¼qü‰†£*ÿ)ð§$ÆÓíÌæ¢RmÏ]IF¼OqÌ:^ìŸánÂK=j\»/2GÓ3ÏþfÂA¿(5á<žcî¡Ï³¸Ø'ÈIÔÝ¡‘áJs\=ÇjÌi7F_í ÈE±‰tW1Aô? ^ÜWw׳Ä^›Îã«tÜžˆÇ:áŸz _Ûo§e×P7Zµí¼=ÈØ¨”Þ-,{¬Ýc;n zõ*ùKßÉ3µš¶Í…¸.•Iú.è<léŽQ·qIEé³2Ð'ÅD²ÇXÏ1‹ÒÃ嬣 ÷ѕ̛€ÚÎÔAxGœ|±ƒ£ò6p· [WÕn×éô6ÏcWâ’û³ºÓ Û•J¸Z„IpôvK¦š¼Ÿo¾ªpä¯]%¨± ÂÙÒû¼­Iè—A'¼þ„“<²Gurâ”Ê9؈ªUN;}W"FíŠÝ­"Êõx .Æú,Ãþí*ö19C¸ÙÍç‹ä€¦-H¬_>?¯‹]ü—7¶‚Ó‰0¾ƒ|HUZø)x‹Õ«µsÃb¬ñ€è”1¨2pFõ30<õJ”ág¡ö¯æ®Õü[ÖMü$ zø+¥Óºc¤z TÉA+A§@œ§Œ†˜þ‡•ªÈÙƒÞœÌìéÀ1Ÿ„ðBÁ‚tüÕ
Š i.PíÙÝ ÷Þúðáø•%h¿‘;»L˜†^[ß#ä“ü°Ã*í°gÜ®ÄeŽâcÒ?@¹[sÁÇjÇf
¢ÿ°ÒÖ‘¸ƒœÐq4ÀObŽ…\«¨6”ï0\øn¢\.ÏwT>(b¸Ò6¯î\Á"Q䍯„sýø±bª2ð78ëêz±»ÿÖŒÊ!ªIHžsk3z]@÷f377v3G7S3"7«?Y3(7±?


'  















'       +­w«€ó‚ï„Õ̻Զ÷Ûýº>ß
3Êç.£0ú0y1ö1?2V2Ù23Š3³3@4545°5ü56 6ó6[7†7á7&8k8°8õ8:9œ9:t:â:D;²;<<=4==>¦> ?B?]?ê?QA”BÅCÜDËEˆF´JLÅLWMNiÚ|à|ã|ê|î|ô|ú|}} }}}}#})}0}4}:}@}G}K}R}X}`}d}j}p}t}z}€}„}}}™}}£}©}­}³}¹}À}È}Ì}Ò}Ø}ß}æ}ê}ð}ö}ý}~~~~~~&~,~2~8~>~D~H~L~R~X~_~c~i~o~v~}~„~“‚›‚Ÿ‚¥‚«‚±‚·‚½‚Âɂςӂׂۂ߂ã‚邃ƒa…ã…àËŸÏ
ÛþúDÈ ŠÙÀvk0Ù0Þ0c1p1Þ12,292P2g2¤2±2¾233—3Ø34+4844ø455+5˜5Ü5é5ö56(6j6w6„6è6S7j7­7Ó7Ù7ò78878]8c8|8¢8¨8Á8ç8í89,929K9‡9”9­9ý9
:#:_:l:…:Í:Ú:ó:/;<;U;;ª;Ã;ÿ; <%<m<z<“<æ<ó<==d=q=Ù=æ=ˆ>>>•>™>>ô>/?<?S?Á?Î?„@(A5A­AüAkBxBêB9CœC©CDdD³DÀDEnE¢E¯EF_F H'H¿KÃKÊKXL\L`LdLlLsLêLðLøLÿLºM¾MÂMÆMÌMÓMeOlOsOzOO‡OO“O™OŸO¥O«O±O¸O¾OÅOËOÒOÙOàOçOîOõOüOP
PPPP&P,P2P9P@PGPNPTP[PbPiPoPvP}PƒPŠPPÝ|ç|ñ|÷|þ|}}}}&}-}7}=}D}N}U}]}g}m}w}}}‡}Ž}} }¦}°}¶}½}Å}Ï}Õ}Ü}ã}í}ó}ú}~ ~~~#~)~/~5~;~A~O~U~\~g~m~s~z~~§€˜‚¢‚¨‚®‚´‚º‚À‚Ƃ̂тՂق݂á‚ç‚؄ü…Ò̸Ա÷Øý·;Ú
0Ç}â.Ÿ0Ü0ã0e1u1á1!2.2=2T2¦2³2Â23†3œ3 4-4<4ú455055Þ5ë5ú56l6y6‰6ï6W7o7×7Ý78"8a8g8¦8¬8ë8ñ80969‰9˜9ÿ9:a:p:Ï:Þ:1;@;Ÿ;®;<<o<~<è<õ<==f=v=Û=>>>—>>¢>÷>1?@?Y?Ã?Ó?*A:AmB}BžC®CµDÅD¤E´E…F$H°JÇKL^LbLhLpLÁLîLôLüLSMÀMÄMÊMÑMNiOpOwO~O…OOO—OO£O©O®OµO»OÂOÈOÏOÖOÝOäOëOòOùOPPPPP#P)P/P6P=PDPKPQPXP_PfPlPsPzP€P‡PP“Pý„&…Ê…<1m1œ12)262I2`22®2»2323“3Æ34(454J4Í455$5[5Ê5æ5ó56 6R6t66Ê67e7š7Ç7ë7 808Q8u88º8Û8ÿ8 9D9s99¦9á9::K:i:~:¹:×:ì:;9;N;‰;§;¼;ë; <<Y<w<Œ<Ê<ð<ý<=R=n=À=ã=½> ?9?L??Ë?m@Ð@2A…AõA<BuBÇB2CmC¦C÷C]DŒD½DEfEŠE¬EûEWF÷„x…%1g1|12#202A2X2m2¨2µ2ô2 33¾3ß3"4/4A44ü4 5575Á5à5í5þ56.6n6{6½6ô6\77´7â7ù7'8>8l8ƒ8±8È8ö8
9;9R999´9::*:c:u:Œ:Ñ:ã:ú:3;E;\;¡;³;Ê;<<,<q<ƒ<š<ê<÷< ===h=§=Ý=¨>?3?C?^?Å?`@@,AxAÄABoBºBC@C CêC,DkD·DøD5EuE¦EîE&Fÿ„(…Î…N1¶12M2d2Ÿ23Ê34O4ï4)5m5Ñ5 6%6d6Ï6Ÿ7É7ð7858S8z8˜8¿8Ý89"9I9}9«9ó9!:U:ƒ:Ã:ñ:%;S;“;Á;õ;#<c<<Ü<=\=Ê=Ï>'?Q?r@AŠAúA]BÌB7CŽCüCbD¥D
EkE”EF\Fðû0z1ø1Ú2´355²5¡675=Ž=§>
?ë?RABÆCÝDÌEð„ü0Ñ1ú1Ü2µ3‹5´5£6ˆ76==ë>?í?WA™BÉCßDÍEÜ„ e…ç0ã1Æ2 356s7!=z=ù>×?>A±ABîB²CDÉD"E¸EF& 'o's(·)L*á**+s+Â+,c,¬,-R..ä.3/Š/Û/&0k0o1+282°2½2*47455è5õ5v6ƒ6“9 :k:Ù:;;©; <y<ò<ÿ<p=å=;?Í?4AwB¨C¿D®EF1°1>26Ã6
"&*.26:>BFJNRVZ^eimquy}ˆŒ˜œ ¤¨¬°´¸¼ÀÄÈØÜàþ
 & < M h w ¤ Â Õ í
!,!:!I!M!]!d!s!w!~!…!Œ!“!—!ž!¥!¬!¾!Ì!Ü!à!è!ð!ø!ü!" ""&"+"3";"C"K"O"W"_"g"|""Ÿ"£"­"µ"¹"Á"É"Í"Õ"Ý"á"é"ñ"õ"ý"# ####%#-#1#9#A#E#M#U#Y#a#i#m#u#}##‰##•##¥#©#±#¹#½#Å#Í#Õ#é#ñ#$
$$ $%$*$/$4$L$Q$Y$a$r$z$“$˜$ $¨$­$²$º$Â$Ç$Ì$Ô$Ü$á$æ$î$ö$û$%%%%)%-%9%>%C%P%U%Z%_%d%h%u%z%%ƒ%Š%%”%™%ž%£%ª%¯%´%¹%¾%Ã%È%Í%Ò%×%Ü%á%å%é%í%ò%÷%ü%&& &&&&&$&)&.&3&8&=&B&G&L&Q&V&[&`&e&j&o&t&y&~&ƒ&ˆ&È15á>¢2e3|34ó4h667M7Í78W8œ8á8&99÷9Y:Ç:);—;ù;g<à<»?AaBC©D˜EÖ̼Է÷Üý»?à
4Ëè.‰F b
bbbbbbbbb b"b$b™PV”WX56aÜ!aD b© b£2}3
@À¥Ò#panic_internalsÁÃÊW®Vߟ˒CIZ
!H¢\_§formatÁ¤ô"
hint_must_useÁliballoc_internalsÁߟ˒CIZoÈâ,N˜Êø "¡ÃÊÃÊW®Vߟ˒CIZκõ_Û„É 'KY2
fmt_internalsÁfmt_arguments_from_strÁߟ˒CIZŽú¤ܱ*$crate::const_format_argsÁùž"#õ‘– “̣̟œߟ˒CIZ4þPX Y2Y2¦ ߟ˒CIZ«XÁò™W¢„$crate::__export::format_argsÁù„#(Å‘ “̣̞œߟ˒CIZž…•´ ²0d÷ÊüÞ <¯ŽËžËߟ˒CIZ<»m)ëÂ… ÓüP'ÅÛð ©œߟ˒CIZÒ•_<v0ÕÌùž"##“̣̟œߟ˒CIZà|qAL˜Ê @ŒšÃÊÃÊW®Vߟ˒CIZ‹vè7øeA¬Ó´0 ©œߟ˒CIZØ\ßuzíêÑÍù„#(?“̣̞œߟ˒CIZAô÷=v ½?Y2“Ì£Ìߟ˒CIZ-ÖûãÐéÑ˜Êø"dÃÊÃÊW®Vߟ˒CIZãî&ÚáI¥ 
Á
•ûðߟ˒CIZ¶¨Ÿè ²»}Á
ü• "4ðߟ˒CIZ@CÃ*Á