Files
boc/aamos-ledger-rust/target/debug/deps/liburl-eb4862146510db1c.rmeta
T

770 lines
285 KiB
Plaintext
Raw Normal View History

rust
Fs#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8Á¤²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Áform_urlencodedÁg
¥N`ù®”b§³‚ŽŠ-8b8228a5928ce2f9Ápercent_encodingÁ¼Ë¥"Iý¹é·Aµ†gãä-bde46fa019ba58c1ÁidnaÁ×—Ö½;Çí6öpU…·-5708750a07396acaÁ idna_adapterÁ¨Võý|ìÖà%\!2øB-f67616d3ed188abdÁicu_normalizerÁ‡/CE@îÁŽ<{9ÐháX-4bb868b749a66746Á icu_providerÁ±Õ¿¨ÞNXþNmÖ(/ÂèS-db5b46d656d85189ÁzerotrieÁá}"SŽUMö@0=$_²-05178122ec16f752Á
displaydocÁ©$-.ÿæ§ï=[œiF-53df79815c011341ÁzerofromÁ/ŽErÅÉŽV 7Í-92c585200eab8211Ázerofrom_deriveÁŸæþÇŽá2?M¥e (-abe85a41d9dcc735ÁyokeÁ?9›Š´;1ˆOøÀ-f8bf9e5b8bbb2034Ástable_deref_traitÁ½ÊTýö÷n˜TóQ-á†-771635b0451f799dÁ yoke_deriveÁ×ã„Ô„ýT·+CIƒ•sÙ-ad663b8de2c8c776ÁzerovecÁ 
åLì{'h‚ïhïD¯Ð-719747d224e025f1Ázerovec_deriveÁ£½+d“ð΃-m*¸]-09ac241eaa4a8700Á writeableÁ²é´‘¥1§%‚ý uÈ%-735c33932dd69842Áicu_locale_coreÁ*WéŽu>9gà ¦$hs-18874daa5c5c87adÁlitemapÁÎ xj+Þ*`²ÔtJ²-5054981e83d0528aÁtinystrÁ ²ãЕ 'xË´BXßñÖ-607f5ace9a59a465Áicu_collectionsÁŸÚõñ«œnD&èK˜vf—-7ebf91bcf11bab00Á
potential_utfÁ‘j&fX`ËW¯czw㈛-f50640784dd0cec0Á utf8_iterÁ‚×úÐ'œÌx G¤Ä^-6f20145e2e3e1c24Áicu_normalizer_dataÁÈÙãµ§ù»/ô#\“ï-4d42ceae66c85c80ÁsmallvecÁ[“S‰«2ûÓàÁ3™ËºS-fa382cf08413422fÁserdeÁFVæ¸Û•IÄÀzÍ-9c8ce3cf08540cc3Á serde_deriveÁ,w|êñ]ù¿¥­C£ð-975c43f96d83014eÁ
serde_coreÁ²€Ãb˜cÐòžÇÇ
-7a42419d8e43b208Áicu_propertiesÁѬU°É(W9PKÅQ{5øú-18d7694dd09bc684Áicu_properties_dataÁTˆ{Z3Ñnþ&H¶=_?3-8894fd72e4000317Áª,ú%»ªŒÙ%netÁå-»À|Ã-ŒÂ-4 DeserializeÁ\»ªŒé4 SerializeÁL»ªInternalComponentsÁ”Ü »expose_internalsÁä² Ìinternal_componentsÁœˆ»Åäâpath_to_file_url_segmentsÁÌ¥Žâ<—Žfile_url_segments_to_pathbufÁäø­â<ê­íÀ¤ 
  
 !"#Ê($%&'()*+,-hostÁ4444444444 4
4 4 4
44444G÷4Ito_ownedÁ4KparseÁL K parse_opaqueÁN 4P'aÁP parse_cowÁPparse_opaque_cowÁS P
into_ownedÁ4V¤V×4Y¤Y¥Y4
write_ipv6Á4longest_zero_sequenceÁ^ ^finish_sequenceÁ4ends_in_a_numberÁa 4parse_ipv4numberÁc c c 4parse_ipv4addrÁg 4parse_ipv6addrÁoriginÁjjjjjjjjjj
url_originÁju
new_opaqueÁvCOUNTERÁuis_tupleÁuascii_serializationÁuunicode_serializationÁparserÁ{{{{{{{{{{ {
{ { {
{{{{FRAGMENTÁ{PATHÁ{USERINFOÁ{ PATH_SEGMENTÁ{SPECIAL_PATH_SEGMENTÁ{QUERYÁ{
SPECIAL_QUERYÁ{ ParseResultÁ¥{simple_enum_errorÁ{ascii_tab_or_new_line_patternÁ{{÷{syntax_violation_enumÁ{œ×{ž
is_specialÁžis_fileÁ{¡¥¡÷{ default_portÁ{¥'iÁ¥ new_no_trimÁ¥new_trim_tab_and_newlinesÁ¥new_trim_c0_control_and_spaceÁ¥is_emptyÁ¥ starts_withÁ«¡¥ split_prefixÁ­¡¥ split_firstÁ¥count_matchingÁ°¥ next_utf8Á{PatternÁ³ç {µç {·ç {¹¹ç { ¼¼ó ¾ ¼ size_hintÁ{ParserÁÁåÁ
serializationÁÁbase_urlÁÁquery_encoding_overrideÁÁ violation_fnÁÁcontextÁ{
È
log_violationÁÈlog_violation_ifÁÊimpl FnOnce() -> boolÁÈ
for_setterÁÈ parse_urlÁÈ parse_schemeÁÎÙÈparse_with_schemeÁÐÐÐÐ Ð Ð Ð × Èparse_non_specialÁÈ
parse_fileÁÚÚ Ú Èparse_relativeÁÞ Þ à Èafter_double_slashÁÈparse_userinfoÁãÙÈparse_host_and_portÁåÙå å È
parse_hostÁÈ
get_file_hostÁÈparse_file_hostÁëÙÈ file_hostÁÈ
parse_portÁî¡Èparse_path_startÁðÙÈ
parse_pathÁòÙò push_pendingÁÈlast_slash_can_be_removedÁÈ shorten_pathÁÈpop_pathÁÈparse_cannot_be_a_base_pathÁøÙÈwith_query_and_fragmentÁÈparse_query_and_fragmentÁÈ parse_queryÁüÙü
QueryPartIterÁþÙþ'pÁþ
is_url_parserÁþinputÁþŠ#üÙó ü È
fragment_onlyÁÈparse_fragmentÁŠFragmentPartIterÁÙå)„*Š#ŠÙó Ècheck_url_code_pointÁ{»+{is_url_code_pointÁ{c0_control_or_spaceÁ{ascii_tab_or_new_lineÁ{ ascii_alphaÁ{to_u32Á{"is_normalized_windows_drive_letterÁ{is_windows_drive_letterÁ{%path_starts_with_windows_drive_letterÁ{ starts_with_windows_drive_letterÁ{(starts_with_windows_drive_letter_segmentÁ{fast_u16_to_strÁ  
path_segmentsÁ¢¢¢¢¢¢¢¢æ ¢«ã¢­clearÁ­ pop_if_emptyÁ­popÁ­pushÁ­extendÁ²š² slicingÁµµµµµµµµ½°½ÖµÀ°ÀֵðÃֵưÆÖµ count_digitsÁµÊÖquirksÁÌÌÌÌÌÌÌÌÌÌ Ì
Ì Ì Ìdomain_to_asciiÁÌdomain_to_unicodeÁÌhrefÁÌset_hrefÁ̈ÌprotocolÁÌ set_protocolÁÌusernameÁÌ set_usernameÁÌpasswordÁÌ set_passwordÁÌÅÌset_hostÁæ æ ÌhostnameÁÌ set_hostnameÁÌportÁÌset_portÁì ÌpathnameÁÌ set_pathnameÁÌsearchÁÌ
set_searchÁ̧Ìset_hashÁÌtrimÁõåõÛ"õencoding_overrideÁõsyntax_violation_callbackÁõºûºûparse_with_paramsÁýšýœý§û&strip_trailing_spaces_from_opaque_pathÁ ûjoinÁû
make_relativeÁextract_path_filenameÁûµ
åûas_strÁû into_stringÁûcheck_invariantsÁŠÓŠÔûˆûschemeÁûû
has_authorityÁû authorityÁûcannot_be_a_baseÁû¿2ûã2ûhas_hostÁûhost_strÁûÅûdomainÁûÍ3ûport_or_known_defaultÁš û socket_addrsÁœimpl Fn() -> Option<u16>Áœ io_resultÁž¥ž ûõ
û®.¢ ûqueryÁû query_pairsÁûfragmentÁ¦ ûmutateÁ¨¨£û set_fragmentÁ« û
take_fragmentÁ­ ûrestore_already_parsed_fragmentÁû set_queryÁ° ûquery_pairs_mutÁûtake_after_pathÁûset_pathÁ´ ûpath_segments_mutÁûrestore_after_pathÁ· ûÙ3ûset_port_internalÁº û3ûset_host_internalÁ½ û set_ip_hostÁûó2À ûÏ2 û
set_schemeÁÄ ûfrom_file_pathÁÆ¡ûfrom_directory_pathÁÈ¡û to_file_pathÁûžË£ûbyte_atÁÎÎþÑåÑErrorÁѪÕ××÷Ù×Ü Þ
àï
 â§ã åÉRangeArgÁçslice_ofÁèå
ê×?ëåí×?îåð×?ñåóóó!path_to_file_url_segments_windowsÁ÷÷÷÷÷÷ ·þþþþþ $file_url_segments_to_pathbuf_windowsÁ å
as_mut_stringÁfinishÁFinishedÁŒã4 HostInternalÁŽ©
ŽDomainÁ
ŽIpv4Á
ˆŽIpv6Á
ˆ444ƒ4 ×4
ŸÖ4 4 ¢4HostÁ¤¤¤ÇB¦
¦ˆ¤ÚB©
©ˆ¤óB¬
¬ˆ4
¯¤¯ƒ4²¤²×4µ¤µÖ4¸¤¸4»¤»ï
4¾¤¾§ÀùjOriginÁÂOpaqueÁÃ
ÈÂïÆ
ÆˆÆÆŠjjÌjÎÖjЧÑùjÓƒjÕ×j OpaqueOriginÁ×
׈jÚÖjj Ýj
ß§àùj âƒj ä×{ æ×{
ParseErrorÁè EmptyHostÁé
è IdnaErrorÁë
è InvalidPortÁí
èInvalidIpv4AddressÁï
èInvalidIpv6AddressÁñ
èInvalidDomainCharacterÁó
èRelativeUrlWithoutBaseÁõ
è RelativeUrlWithCannotBeABaseBaseÁ÷
èSetHostOnCannotBeABaseUrlÁù
èOverflowÁû
{ {
þ{Ö{{ƒƒ{{×{ˆ descriptionÁ{SyntaxViolationÁŠ BackslashÁ
ŠC0SpaceIgnoredÁ
ŠEmbeddedCredentialsÁ
ŠExpectedDoubleSlashÁ
ŠExpectedFileDoubleSlashÁ
ŠFileWithHostAndWindowsDriveÁ
ŠNonUrlCodePointÁ
ŠNullInFragmentÁ
Š
PercentDecodeÁ
ŠTabOrNewlineIgnoredÁ
ŠUnencodedAtSignÁŸ
{{¢{¤Ö{{§ƒ{{ª×{
SchemeTypeÁ¬FileÁ­
¬SpecialNotFileÁ¯
¬
NotSpecialÁ±
{{{µƒ{{¸{ ºÖ{¼Ù¼charsÁ{!¿Ù¿ƒ{"ÂÙÂ×{kÅ UrlParserÁÆ
ÅSetterÁÈ
ÅPathSegmentSetterÁÊ
{#{$Í{%ÏÖ{&{'{(Óƒ¢PathSegmentsMutÁÕåÕurlÁÕafter_first_slashÁÕ
after_pathÁÕold_after_path_positionÁ¢ÛåÛ×µPositionÁÞ BeforeSchemeÁß
Þ AfterSchemeÁá
ÞBeforeUsernameÁã
Þ
AfterUsernameÁå
ÞBeforePasswordÁç
Þ
AfterPasswordÁé
Þ
BeforeHostÁë
Þ AfterHostÁí
Þ
BeforePortÁï
Þ AfterPortÁñ
Þ
BeforePathÁó
Þ AfterPathÁõ
Þ BeforeQueryÁ÷
Þ
AfterQueryÁù
ÞBeforeFragmentÁû
Þ
AfterFragmentÁý
µµµƒµƒ×UrlÁÆ"
scheme_endÁ username_endÁ
host_startÁhost_endÁÅÍ3
path_startÁ query_startÁfragment_startÁƒ ParseOptionsÁåÛ"ê4Š#åå僊 UrlQueryÁŸåŸ·PŸ†:£å£×G
H
I
J
L
N
X
X
X
\
\
]
]
]
^
a
c
g
i
t
x
y
z



Ÿ
 
¤
¨
©
ª
«
­
¯
°
²
´
´


·
¸
¸
»
»
¼
¾
À
È
É
Ê
Í
Î
Ð
Ù
Ú
Ú
Þ
Þ
â
ã
å
é
ê
ë
í
î
ð
ð
ò
ò
ô
ô
õ
ö
÷
ø
ú
û
û
ü




Š
Š









œ

ž
Ÿ
Ÿ
 
ª
«
¬
­
®
¯
°
±
±
²
¿
Â
Å
È
Ë
Ú
Û
Ü
Ý
Ý
Þ
ß
à
à
á
â
â
ã
ä
ä
å
æ
æ
é
ê
ê
ë
ì
ì
î
ï
ï
ð
ñ
ñ
ò
ó
ó
ô
ú
ü
ý

ƒ
ƒ



ˆ
Š

Ž









˜

š
œ
ž
¡
¢
¤
¥
¦
¨
¨
¨
«
«
­
¯
°
°
²
³
´
´

·
·
·
¹
º
º
¼
¼
½
½
½
¿
À
À
À
Â
Â
Â
Ä
Ä
Ä
Ê
Ë
Í
Ð
Ö
Ö
Ö
Ú
Ú
Ú
Ý
Ý
ß
ß
á
á
ã
ã
æ
è
ë
î
ñ
ó
ó
÷
÷
þ
þ



Œ

œ
ž
ž
ž
 
£
£
±
´
´
´
·
º
º
½
½
À
À
Í
Í
Ï
Ñ
Ñ
Ô
Ö
Ö
Ö
Û
Þ
Þ
à
à
ã
å
å
å
ç
ç
ç
ÿ
ÿ






£
£
¥
¨
«
«
«

¹
¹
»
Á
Ä
Ä
Ä
Î
Î
Ð
Ô
Ý
Ý
Ý






¥
¥
¥
³çŠ Ž©ÇBÚBˆóB˜ˆbt¯1Ê×½?ÛeØe¿ceeÐìeµßeeée¤¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24f뻾¿BorrowedÁÀˆÁÂOwnedÁÈ¢ÓÛ?'°UF8ؤ¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24f뤿cŠhŠhºŠhíߊhŠhšeŠhÄcŠhµßŠh¤¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24fë¥ÐìÂÃħEňÆÇïȈÉÊŠ{ãçôÉɵ߫j«j«jše«jØ«j¿c«j×ר®FÙˆj ò¢9­V) }ÐìÂkµßÂkÂkšeÂkØÂk¿cÂk¾è
éê´GëìÊGíîàGïðøGñò—Hóô¶HõöÙH÷øüHùú©IûüÏI Õ5o1w
ðyÐì±lµß±l±l±lÛ±lرlŠ ±l¿c±lÄc±lé±lˆˆErrorsÁŽD›.«²ÐìŠ ŒÍJŽãJþJžK¾KâK˜ŠLš¦LœÁLžÛL Ÿ ûL
N£ë"Ç&9µßönönönÛönØönŠ ön¿cönÄcönŠ ¬­®äM¯°õM±²N8Gå/h«xÛqØqÐìqµßqqqéq¥Ø¼¼¾æN{v¾Hؤ.Ù¿c¡r³³ 8³ùM¼¼¾æN{v¾Hؤ.8ÐìÅÆÇ¡OÈÉ·OÊËÊOÑæ NºEµßÄsÄsÄsŠ ÄsÛÄsØÄsùMþþÈ)ï){„*{ƒŠ#{¯ß@ð#Ù8ùMæ*Ž„*{Š#{ðëoª]ÓÙ8¿cÕÕ˜P×·P¢ØÂP¢ÙÛP¢ÚíP¢ûüê&i³`åŒ"ÕÕ˜P×·P¢ØÂP¢ÙÛP¢ÚíP¢ûüê&i³`8Ù¢ÚT
Æ"íTˆÿT“UŠ¥UÅŒÍ3ÅUŽ×UêU1Áˆ8©ëî¢î¢ï¢½ +¢ L;VÙ¢¤w—£—£»™£¹< =áï_åÞßà±QáâÊQãäâQåæýQçè—Réê²RëìÌRíîãRïðùRñòS óô¦S
õö½S ÷øÓS ùúëS
ûü‚TýþT ÍDÎØ£+Ù¢¤w«£«£Ã­£þôÉûT™gö–yÙ¢¤w££¹ƒ£¹„£þ-'ºˆÉ¬gyŠ –yÛ–yØ–y¿c–yؤwŠ ‹VÛ"ê4Š#Ñá{šÿ¥!¶åÛç|Øç|ïy¤wð¤w åÄc¤wéúHúHßûHÁ‘4Ý­f‰úM÷¤w¿c¤w¤wµß¤w¤wº¤wíߤw¤wše¤wà¤w磣¹ƒ£¹„£þ-'ºˆÉ¬gç—£—£»™£¹< =áï_å²ç«£«£Ã­£þôÉûT™gö²¿cŸŸïV¡·P¢†:¥Æz˼}Iå0¬€Œ"ŸŸïV¡·P¢†:¥Æz˼}I8Žè©Š³¬ÑÅÿÞšŽè¦Š´¬ÒÅÞŽ¯¤ÓÂâ׃觊µ¬¿¼ÓÅÞŽ²¤ÕÂä×誊¼ÛÕƒÞÙ£ŸŸŽµ¤ÎÂÚ×褊º¬ÏÅÛ¡ŽËÂÜ×ý衊·¬ÌÅ¢ŽY¤ÌÂÝ×þ袊¸¬ÍÅÜGŽè¡¬×úH¸¤Þ»¤à¾¤ÐÂß×âV¤æèœŠÕ˜èµ·
¹¼¼þ«ÕŒŸ½ÀÃÆÎÑåê£í—£ð«£ŸŠ ¥Û1Ø 1¿c T MÐì?µß 1é>ºíßšeÄc¾³ùM Œ"Ù¢ïyðàç0üÕ;
 OOAsciiSetÁPmaskÁè,øÝ¯_EÛT
a ü¹X‚ˆ‚ˆŸ„ˆüÖ:‚ˆüÖ0„ˆ ‚ˆüÖ&„ˆ ‚ˆäÖ„ˆ
‚ˆ”Ö„ˆ
‚ˆ‚ˆ
‚ˆž)‚ˆ%‚ˆG O)‚ˆ[
 |ß

~  ­ ÍéÙŠÎ" ýóÙŠ< PrýÙŠs$> ¤¾ÙŠÇ$‹` L‡¦> ‚ˆÃ„ˆ%‚ˆ#„ˆ,‚ˆ"„ˆ+‚ˆ!„ˆ*‚ˆ!„ˆ*‚ˆ!‚ˆ*.7)‚ˆüä1 Ž‚ˆ , üÌJŽ ‚ˆ‚ˆj„ˆüå0‚ˆüå&„ˆ ‚ˆä儈
‚ˆ”儈
‚ˆ‚ˆ
‚ˆÆŠ‚ˆÝŽ‚ˆF N‚ˆ[ |îÙŠ}# ¬ÌøÙŠÍ? üÙŠ$†{ LOiŒÙŠr$} 
Žé
‚ˆ9„ˆÐ‚ˆÎ„ˆ×‚ˆÍ„ˆÖ‚ˆÍ„ˆÖ‚ˆÍ‚ˆÖよüüœ
‚ˆ - üÕÄ‚ˆ‚ˆl„ˆüý‚ˆüýŒ„ˆ ‚ˆüý}„ˆ ‚ˆüýn„ˆ ‚ˆüý^„ˆ ‚ˆüýO„ˆ ‚ˆüý@„ˆ ‚ˆüý1„ˆ ‚ˆüý"„ˆ ‚ˆœý„ˆ
‚ˆ‚ˆ
‚ˆ=Ž‚ˆV‚ˆ IQŽ‚ˆ^ÙŠ$‹/ L‡¯ÐÙŠÐ: L–"¥ÙŠ#; Tv´ÙŠw=
¨ 
ÊÃÙŠ Ë@ ü
 ÒÙŠ
[ P ráÙŠs\ ¤ÆñÙŠÇ] øÙŠ$„ ^  L€ Mh ÙŠp$“ | 
L 邈:„ˆÏ‚ˆÌ„ˆÕ‚ˆÊ„ˆÓ‚ˆÉ„ˆÒ‚ˆÈ„ˆÑ‚ˆÇ„ˆÐ‚ˆÆ„ˆÏ‚ˆÅ„ˆÎ‚ˆÄ„ˆÍ‚ˆÃ„ˆÌ‚ˆÃ‚ˆÌÿÙŽ‚ˆÌÆ ‚ˆ+ Þ ü› E‚ˆ‚ˆi„ˆÄÇ ‚ˆ„ˆ
‚ˆ‚ˆ
‚ˆŸdŽ‚ˆ‚ˆFNŽ‚ˆ[|Ì ÙŠ}/ ¬ÄÖ ÙŠÍ% etB‚ˆ„ˆ)‚ˆ(„ˆ1‚ˆ(‚ˆ1Æ>Ž‚ˆÄ› ‚ˆ+ ² üè
L‚ˆL ‚ˆi„ˆ¼œ ‚ˆ ‚ˆ
‚ˆR‚ˆ¤‚ˆFN‚ˆ[t© ÙŠ},­ \  $ò‚ˆ@„ˆØ‚ˆÖ‚ˆÞ`ꂈüû ;
‚ˆ
, µ üâ U‚ˆ ‚ˆj„ˆüü :‚ˆüü 0„ˆ ‚ˆüü &„ˆ ‚ˆäü „ˆ
‚ˆ”ü „ˆ
‚ˆ ‚ˆ
‚ˆÙ)‚ˆï‚ˆE M)‚ˆY
 z ÙŠ
{$‰   L… ª Ê ÙŠË$“ " L ú ÙŠ$ # L™ Mo£ ÙŠp <  ¡»­ ÙŠÄ > L­ _n; ‚ˆ„ˆ"‚ˆ „ˆ)‚ˆ„ˆ(‚ˆ„ˆ'‚ˆ„ˆ'‚ˆ‚ˆ'ö4)‚ˆŒÙ ‚ˆ+ é ü¸ 3‚ˆ ‚ˆi„ˆ„Ú ‚ˆ ‚ˆ
‚ˆR‚ˆ¤‚ˆFN‚ˆ[tà ÙŠ} '  $ò‚ˆ@„ˆØ‚ˆÖ‚ˆÞ`ꂈ Ž%e0¾º¾ºIpv4AddrÁ¿ºoctetsÁ¯Q5N`hzØÊsz$ Ž%e0̺̺Ipv6AddrÁͺέ¯QÉ¢}ÝÏÆÚnu
 ¤ëh§(Šh3ëh:A ¤ëhª(Šh3°®;B ¤ëh­(Šh3¸¯;B ÂÄ%«j0Âk7> ÂÇ+«j6ò}=¤¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24fëò}¥¬³¼‹ ר%Âk07>(4j{¢µÌçó÷þŸíÄ|Ö$À«%¤,Ë%¦Bd“&ŽIpAddrÁ4²&¦º)
SocketAddrÁTÓ'“¼ )
ToSocketAddrsÁlß'É"
)½,4ƒ( š k<(Å
°"4”(ÁÒMTœ(¬D¨( oÆ(»ToOwnedÁ<Þ(²Éò(™3ß4)úHToStringÁD“)—6Y4°) í<Ë)ðWriteÁ,ã)êb¹,ú)£»L*—£Ã<Œ*«£¡*צ* ` §$«*æd!í±*ë"utf8_percent_encodeÁœÍ* 1#ioÁó+¦$PathÁ$Ÿ,…0&PathBufÁ<¥,€/'ÇC$.¤*®Fd».×,™E4É.Â-¢GTê.è/¶J|ö.Š0˜P|¦/Õ1¡QDÏ/Þ2EncodingOverrideÁ„ò/V3üà·Çüà­ ¨
rust-url is an implementation of the [URL Standard](http://url.spec.whatwg.org/)
for the [Rust](http://rust-lang.org/) programming language.
# URL parsing and data structures
First, URL parsing may fail for various reasons and therefore returns a `Result`.
```
use url::{Url, ParseError};
assert!(Url::parse("http://[:::1]") == Err(ParseError::InvalidIpv6Address))
```
Let’s parse a valid URL and look at its components.
```
use url::{Url, Host, Position};
# use url::ParseError;
# fn run() -> Result<(), ParseError> {
let issue_list_url = Url::parse(
"https://github.com/rust-lang/rust/issues?labels=E-easy&state=open"
)?;
assert!(issue_list_url.scheme() == "https");
assert!(issue_list_url.username() == "");
assert!(issue_list_url.password() == None);
assert!(issue_list_url.host_str() == Some("github.com"));
assert!(issue_list_url.host() == Some(Host::Domain("github.com")));
assert!(issue_list_url.port() == None);
assert!(issue_list_url.path() == "/rust-lang/rust/issues");
assert!(issue_list_url.path_segments().map(|c| c.collect::<Vec<_>>()) ==
Some(vec!["rust-lang", "rust", "issues"]));
assert!(issue_list_url.query() == Some("labels=E-easy&state=open"));
assert!(&issue_list_url[Position::BeforePath..] == "/rust-lang/rust/issues?labels=E-easy&state=open");
assert!(issue_list_url.fragment() == None);
assert!(!issue_list_url.cannot_be_a_base());
# Ok(())
# }
# run().unwrap();
```
Some URLs are said to be *cannot-be-a-base*:
they don’t have a username, password, host, or port,
and their "path" is an arbitrary string rather than slash-separated segments:
```
use url::Url;
# use url::ParseError;
# fn run() -> Result<(), ParseError> {
let data_url = Url::parse("data:text/plain,Hello?World#")?;
assert!(data_url.cannot_be_a_base());
assert!(data_url.scheme() == "data");
assert!(data_url.path() == "text/plain,Hello");
assert!(data_url.path_segments().is_none());
assert!(data_url.query() == Some("World"));
assert!(data_url.fragment() == Some(""));
# Ok(())
# }
# run().unwrap();
```
## Default Features
Versions `<= 2.5.2` of the crate have no default features. Versions `> 2.5.2` have the default feature 'std'.
If you are upgrading across this boundary and you have specified `default-features = false`, then
you will need to add the 'std' feature or the 'alloc' feature to your dependency.
The 'std' feature has the same behavior as the previous versions. The 'alloc' feature
provides no_std support.
## Serde
Enable the `serde` feature to include `Deserialize` and `Serialize` implementations for `url::Url`.
# Base URL
Many contexts allow URL *references* that can be relative to a *base URL*:
```html
<link rel="stylesheet" href="../main.css">
```
Since parsed URLs are absolute, giving a base is required for parsing relative URLs:
```
use url::{Url, ParseError};
assert!(Url::parse("../main.css") == Err(ParseError::RelativeUrlWithoutBase))
```
Use the `join` method on an `Url` to use it as a base URL:
```
use url::Url;
# use url::ParseError;
# fn run() -> Result<(), ParseError> {
let this_document = Url::parse("http://servo.github.io/rust-url/url/index.html")?;
let css_url = this_document.join("../main.css")?;
assert_eq!(css_url.as_str(), "http://servo.github.io/rust-url/main.css");
# Ok(())
# }
# run().unwrap();
```
# Feature: `serde`
If you enable the `serde` feature, [`Url`](struct.Url.html) will implement
[`serde::Serialize`](https://docs.rs/serde/1/serde/trait.Serialize.html) and
[`serde::Deserialize`](https://docs.rs/serde/1/serde/trait.Deserialize.html).
See [serde documentation](https://serde.rs) for more information.
```toml
url = { version = "2", features = ["serde"] }
```
# Feature: `debugger_visualizer`
If you enable the `debugger_visualizer` feature, the `url` crate will include
a [natvis file](https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects)
for [Visual Studio](https://www.visualstudio.com/) that allows you to view
[`Url`](struct.Url.html) objects in the debugger.
This feature requires Rust 1.71 or later.
```toml
url = { version = "2", features = ["debugger_visualizer"] }
```
Áhttps://docs.rs/url/2.5.7Ál¡#(4j{¢µÌçó÷þŸíßÄàÀߤަBÝŽ¿´×¦º)Ü´Í“¼ )ý´ÀÉ"
)½,¿ š k¾Å
°"½ÁÒM¼¬» oº»‘¶³²É²™3ß±úHѶ©—6Y¨ í§ð‘·¢êb¹¡£» —£ÃŸ«£ž× ` §œæd!íë"±¸ˆ 1#Ö¸¦$븅0&‚¹{€/'ÇCz¤*®Fy×,™ExÂ-¢Gwè/¶JvŠ0˜PuÕ1¡QtÞ2“ºdV3«®±¤§„ž%ž”¾%̆&ˆ”¦&vTÆ'\_>Aló'25&) ÿ”·(ö´Ï(ãTë(×lû(Ëι¤¢)®´¼)¢„Ø)Lî)ˆwzil$š*_bRUEH8;ü»*%<î+L“,ìï”ã,»À|Ñ,¼Ë,ò,¿´Y¦º)Ü´J“¼)ý´8É")ShutdownÁEÕ¶M)AddrParseErrorÁuÇ
‡¼)©3E§  ³")¼­Eÿ ¾º)Ä®E‰ ̺)Ipv6MulticastScopeÁ•“ Ùº) SocketAddrV4Áeþ ª¼) SocketAddrV6ÁeŒ
½¼) IntoIncomingÁe±M)IncomingÁEÑ«M) TcpListenerÁ]ÛŠ#) TcpStreamÁMè‡#) UdpSocketÁMµð#)D„-Œ.žl«.ŒlÚ.wzü/%qÄ¿/güá/!ND…0$‰0]^acgiޤ¼­¾º46)Ä®̺47)o»48‘¶²49ßúH4:öåªB4;ô4<×$‰ `4>ˆL c4?percent_decodeÁt³ >4A±¸œÃ 14BCONTROLSÁDØ )4C¢GT¾è4Eú4FTä),”Š ´¢þ¬¾ñ|ÙäLî×Lýʃ½¿„ ¤¦tvegü¥.8¦¦eHëHüÚ)§¤¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24f뻾¿µfÀˆÁÂÖfÈ¢ÓÛ?'°UF§eGñG
H8Å8¨¨¤¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24fëîrJüÅ&üæZW Return a copy of `self` that owns an allocated `String` but does not borrow an `&Url`.ÁDÌ© ©Í탳I ÕI
J8ŒÌƒ³LNüñ5üäLI Parse a host: either an IPv6 address in [] square brackets, or a domain.Áµúü½/, <https://url.spec.whatwg.org/#host-parsing>Á,øª ªÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ƒ³±lK K
L„*,þßL<closure_kind>ÁM<closure_signature>ÁM<upvars>ÁMMLM¤¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24f뻾¿µfÀˆÁÂÖfÈ¢ÓÛ?'°UFƒ³üÀ<üþ=: <https://url.spec.whatwg.org/#concept-opaque-host-parser>ÁdÇ« «ÏñK ÛK
N„*,Ô¼NßñO÷ñO”òOONO·óÜÙåQQ¤¦§ÇB¨ˆ©ªÚB«ˆ¬­óB®ˆ24f뻾¿µfÀˆÁÂÖfÈ¢ÓÛ?'°UFåRSUÞüûHL‰Ø÷Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
÷ö±lPP
Rå„*,“üï!O„ý!Ø÷ØøPP
Så„*,Ž"Ó$SßñT÷ñT”òTTSTüê0.Tø0÷öƒ³PP
Uå$ƒ1üÜ2,¤WWÍìëh á2àëhTä2ŠhXÅcX!#ü333¬­® ¬Šh ­ c cˆ¢cµ
 `£cbufÁ `àB¤GS
®Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈÇ> O˜éBLV 3V
Xëh$—3± 3üý5D¤Z¥[[Z×û ‚6Íìj …6µßëhjd´6Šh\·ß\4613üÈ6%Ë6¯° ¯Šh °¼iY Î6Y
\ëhj$Ï6¹
,Õ6üä8DTç84±²³ ±¸¯ ² c cˆ¢cµ
 `£cóû `àB¤GS
³šý ø8
]addrÁ$ò8± ƒ9ü§>=¬ª>4´ ´ È>
^piecesÁ4À> Ï>ä¾?|Ë? Ú? ëA ä? ï?, å?8þæ?& é?8$ë?*ñ? ô? äA8@8¹,…@@7ˆ Ž@ @ ÚA
8¢@8lengthÁ4¦@ ­@, ¯@8þ°@ ´@8¹,¶@% »@8Í@8ê‚4Ð@ ×@8longest_lengthÁtÙ@ è@ ÌA8longestÁ<þ@ †A8¹,ˆA% A8ʃt£A ²A8ê‚4´A% ºA% åAüçE(„êE4µ µ ‚F
a„*,ûEËHaßñb÷ñb”òbbab ü§J?„ªJ4 Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ² ÆJ
c„*,¿J”Ncßñd÷ñd”òddcdà†ÞNcßñe÷ñe”òeeceà†¡Ocßñf÷ñf”òffcfà†üËR7tÎR4· ·Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
°®±l äR
g„*,ÝRžYgßñh÷ñh”òhhgh ²üª[7t­[4¸ ¸Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¸¯±l Ã[
i„*,¼[T04“0tרÂÇC$ì¤jkÁd… ¤jlÚTžjm‘¶²jnformatÁ4ÊjoßúHjp AtomicUsizeÁ\†„Äjr®D“¼ÀjsŒß­Üö T—“´§…lÃr¬Öe”ñMO=?üŸ&¹ ¹¤w«j 
t·P±«jvxyzÜ¡üß=: Creates a new opaque origin that is only equal to itself.ÁT¨«juu
vÜÇj¤]¤]V¦]Á‚]üß3ø¤”&Ãô½üÐ>; Return whether this origin is a (scheme, host, port) tupleÁü“%" (as opposed to an opaque origin).ÁDĺ º«ju Íu
xüå+ü’NK <https://html.spec.whatwg.org/multipage/#ascii-serialisation-of-an-origin>Áœì» »«jò}u u
y$üØ-üƒPM <https://html.spec.whatwg.org/multipage/#unicode-serialisation-of-an-origin>Á¬ß¼ ¼«jò}u õu
zT04Ÿ0ޤ³Á˜šœžŸ Å¬èмoó»{|ß4‹úH{}× `{ˆ c{‘·êb{ÉÆ¯v{ÇC$Þ¤{¦BdäŽ{ÚTþ{“º„˜V{percent_encodeÁtÁ /{±¸œÑ 1{ŠŒ‡O{õè ){Œ”ä%¬üL—
òôLÀæ\ÐØÚÈÊT÷¼ü‡!®„®ƒsuce̹D¿{ „ˆ¬Ì{€šüÕ$€šü› (€šüè
0¤ù
€š´â  {€šô¸  {€š¼í  ¥Íì”r
Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
”r±lWYôŸ
Œ¬
 ¾
 ó Ä
 ì
, Å
 Æ
 ê

, Ç
8Ð
& Ì
8¼
*Ô
, ×
8¤J
& ã
8
$ é
 ë
*î
 ñ
 ñ<& Errors that can occur during parsing.Áüû
)<ú­<= This may be extended in the future so exhaustive matching isÁü¹@< forbidden.Át+  š Ä8º4› ¡ Ã 8²$ «8}­$ ¯8d$ 8n$¸$ ¼8p+ Î Ï Þ8
8è8 8¢G ü », Š  °, 8Ð $ ¢ ±88×Ë'Î8t8
Ø8¢G ç ë8 õ8×ø û š  ü8$ 8׃&  ˆ88ˆL :8 (œ8ן'¢8Í « á8
Ã8 É Ó, ß à À
8¢G', 8Ð $‡*Œ8× 8ñL“ œ ©, 8¤J$ ª Áüö*ìƒ ¡ Ñ § ¨*ª ­ Î7\tÁ ¼7\nÁ Ã7\rÁ% Ïüì%»À¼Ô±lü¶(±lšëšüå"Æn±l
š íü«"¬¸ Î Ø  Ô ÿ, Õ Ö ý
, ×8Ð & Ü8¼*ä, ç8¤J& ó8«$ ü þ*  Ö <; Non-fatal syntax violations that can occur during parsing.ÁüŽ><úÕ<üá@<Ë+ Á  ì8º É ë 8²$ Ó8}Õ$ ×8d$ Þ8n$ ä8p+ ö ÷ 8
88 $”8¶J|™ © Â, · ¸ ·< ```textÁ\Ê+ æ ç ú8Óè ì, î8¤J< ```Á<Œ, ¤8Ð $ © ¸88¶J â Ð  8ð8 ô8¤J  ˆ ƒ8$„(Š :78É š Æ 8
²8 ¸ ¸ , Î Ï ¥ 8¶J'ø, ú8Ð *, ƒ 8¤J\„ $  ¦ üð&%önÅcüœ'3Ÿ'½¾¿ ½ön ¾ c cˆ¢cµ
 `£cóû `àB¤GS
¿šýœ £'œ
$¤'± ª'|ù( ü) T)À Àqž ¡)ž
Ÿ$¢)ìè)<ï)Á Áqž ÷)ž
 $ø)üµ**¥¢¢¨› º*à”rT½*ë£#%¬æ*$é*”rq¡¡
£”r¾ î*ü¾,0dÅ, ÂÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Ú,
¤»74Ò,”Ñ.Ù¦¦¡r§¨©ª«­¯°²Ö.üê.*\ñ. Ù¡r¥¥
§Ù„*,ý.üÞ/Ìå/˳ۼݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Ã"ön˜"¸´Ã¡r¥ µ0¥
¨Ùoriginal_inputÁtˆ0vfnÁ©0ü“4ƒìš4Ä‹³Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Ä"¸´˜"¸´Ä¡r¥ î4¥
©Ùö³tÁ4Œ´â4ôØ8Dß8Å Å¡r¥ è8¥
ªÙ$é8ü¸93\¿9Æ Æ¡r¡¥¡¬¬ ×9¥Íìì· Ë9³ì·<Î9
«Ùì·$Ø9» Þ924ü±:<d¸:Ç Ç¡rì·Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¡r¥¡®® Ñ:¥—¸ Å:¨¸<È:
­Ùì·$Ò:» Ø:*,ü§<-\ª<{È È¡rÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¡r¥ ¶<¥
¯Ù$·<üÀ=BtÃ={É É¡r²¡r¥±± ç=¥Í쓼 Ò="“¼éú„Õ=“¼éú˜"$á=
°Ù“¼$è=± î=KMüñ@2Lô@{Ê Ê¡rÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ‹³¥ þ@¥
²Ù$ƒAŒ†D<D³³Îìü†DK³í¾í¾´´´üžD1d¡DËÌõ¾ ˼¼¾æN{v¾Hؤ.̳ »D³
´õ¾$®D„*,´D¬ÓD´üïD0dòDÍΠͼ¼¾æN{v¾Hؤ.ε ŒEµ
$ÿD„*,…E¬ÎE8ÏÏîr¸´¸üêE0díEÐÑîr м¼¾æN{v¾Hؤ.Ñ· ‡F·
¸8$úE„*,€Fü²G*ººýréú˜"$ÉG“"ýréúœºGÍìýr ·Gýr»´»üãG0dæGÒÓýr Ò¼¼¾æN{v¾Hؤ.Ó¹ €H¹
»ýr$óG„*,ùGÜÈH8ÔÔŠs½¾ÀúMûMÿMÀ¾LêH$ïH¼¼ü€I"$ƒIÕ ÕŠsñº¼ ˆI¼
¾8$I$ÆI¾ßñ¿÷ñ¿”ò¿¿¾¿ üñI-LôIÖ ÖŠsÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¼ þI¼
À8$ÿI¬×J4âJåÂÂååüµK1ÁÁ°"ÃÆ"ÄÛ"Åë"ÆŠ#Çž#/׋Øß§Îå/׋Øß§ÎÃÄÅÆÇéJÌóJl÷JÁÁò}ì’KD–KÁÁÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ å¤wü¼¹KÁÁÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ å" ˜"‹Ì»¾¿µfÀˆÁÂÖfÈ¢ÓÛ?'°UF
åüìK5dðKÁÁÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ å"¸´˜"¸´å¤§L<«LÁÁÄs|®M8××ÁÁ°"ÃÆ"ÄÛ"Åë"ÆŠ#Çž#/׋Øß§ÎÊÌÍÎÐÙÚÞâãåéêëíîðòõö÷øúûüŠüÄM+lÇM{Ø Ø·ÎönÈ ÕMÈ
É8$ÖMÁ ÜMüÅNK„ÈN{Ù Ù·ÎönÞ#ÈÞ#ËË ÙNÈÍìýЬúN–"ýЄÿNýИ"$O
Ê8ýÐ$ÚNÁ àN$ôNPRüP0T—Pò}·ÎÈÈ
Ì8Æ"l¢PüÏR;LÖRÚ·Î ÚÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¤w±lÈ ñRÈ
Í8$äR„*,êRü©ZQd°ZÏÛ Û·Î¼¼¾æN{v¾Hؤ.ÏÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÅÔȽZÈ
Î8$ÆZ„*,ÐZ"$üÉaDŒÌa{ܷμ¼¾æN{v¾Hؤ.ÜÓÈõaÈ
Ð8$âa„*,èa´œbœµb¼Êb„eÐßñÔ÷ñÔ”òÔÔÐÔ ¼¼¾æN{v¾Hؤ.4ÝeÐßñÕ÷ñÕ”òÕÕÐÕ ¤wÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ‘ÙÄiÐßñÖ÷ñÖ”òÖÖÐÖæúðnÐßñ×÷ñ×”ò××Ð×÷ר$ÔoÐßñØ÷ñØ”òØØÐØ»ÇüÚr•ŒÝr{ݷμ¼¾æN{v¾Hؤ.ÝÓÈ—sÈ
Ù8$ür„*,Šs scheme_typeÁ\¤síTTÅsüÑ{šTÔ{{Þ߷μ¼¾æN{v¾Hؤ.ÞqÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡z٠ߤwÓȇ|È
Ú8$ì{„*,ú{•Ü\”|
base_file_urlÁlµ|üú|!L}©ÚßñÜ÷ñÜ”òÜÜÚÜ÷× ñº°ÚßñÝ÷ñÝ”òÝÝÚÝ÷×™àü„Èt‡È{àá·Î¼¼¾æN{v¾Hؤ.àq á¤wÓȾÈÈ
Þ8$£È„*,±È•Ü\ËÈÛ"DìÈ€ÖÞßñß÷ñß”òßßÞßæú–×Þßñà÷ñà”òààÞà÷ר$†ØÞßñá÷ñá”òááÞá»Çü¯ñ”²ñ{â·Î¼¼¾æN{v¾Hؤ.âÓÈíñÈ
â8$Òñ„*,àñ•Ü\úñíTT›òü—ûtšû{äã ã·Î¼¼¾æN{v¾Hؤ.äqÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
²Áæ±lÈ©ûÈ
ã8$»û„*,Íû•Ü\çû/1ü›’Äœž’{æä ä·Î¼¼¾æN{v¾Hؤ.æ²qÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
²eɱÊè±lȲ’È
å8$Ä’„*,Ò’íTTì’•Ü\…“8:åßñç÷ñç”òççåçɱ  ÁÁ°"ÃÆ"ÄÛ"Åë"ÆŠ#Çž#/׋Øß§ÎÆŒ  ›ååüÄå¼¼¾æN{v¾Hؤ.åqÖ¿Ù¿Ú¿«Û¿ˆ
new_searchÁTÄMô¹OüþN:7 Getter for <https://url.spec.whatwg.org/#dom-url-hash>Á$ÀOº º¤w º ÊO
ò·PÅOü¿P.ü„P:7 Setter for <https://url.spec.whatwg.org/#dom-url-hash>ÁDÆP»¼ »¤w ¼ ÔP
ó·PÏPnew_hashÁDÞPÄêS$íS̽ ½æø õS
ô¾ òS̹:åööç|÷øùú¾:üí;7¼Ù: Change the base URLÁõ:úüý:UR See the notes of [`Url::join`] for more details about how this base is consideredÁŒ×; when parsing.ÁDô;ç|ÏÊç|õõ
÷å$<æ ‡<üÏ=EüÜ<52 Override the character encoding of query strings.Áü–=41 This is a legacy concept only relevant for HTML.ÁŒÖ=ç|²Ëç|õõ
øå$ì=æ ò=üùE\üÕ>KH Call the provided function or closure for a non-fatal `SyntaxViolation`Áü¥?KH when it occurs during parsing. Note that since the provided function isÁüõ?NK `Fn`, the caller might need to utilize _interior mutability_, such as withÁüÈ@+( a `RefCell`, to collect the violations.Áø@út€A ## ExampleÁ<“A¹©ÜŸA use std::cell::RefCell;Áü¿A$! use url::{Url, SyntaxViolation};ÁÔèA # use url::ParseError;Áü‡B/, # fn run() -> Result<(), url::ParseError> {Áü»B.+ let violations = RefCell::new(Vec::new());ÁäîB let url = Url::options()ÁüCNK .syntax_violation_callback(Some(&|v| violations.borrow_mut().push(v)))ÁüâC)& .parse("https:////example.com")?;ÁüD52 assert_eq!(url.as_str(), "https://example.com/");ÁüÊD'$ assert_eq!(violations.into_inner(),ÁüöD;8 vec!(SyntaxViolation::ExpectedDoubleSlash));Ád¶EÀ¨<ÇEÕ¨¬ÓEå¨<íE¹©Ì€Fç|šÍç|õõ
ùå$žFæ ¤FüÌGAü‘G63 Parse an URL string with the configuration so far.Á,ÓG¾ç| ¾Óõ æGõ
úå$ÙG„*,ßGDÅJ¤wüýƒˆŠŽ˜šœ¡¢¤¥¦¨«­¯°²³´·¹º¼½¿ÀÂÄÆÈÊËÍüýN<üÔJ(% Parse an absolute URL from a string.ÁKút‰K # ExamplesÁœKú\¤K¥¤Œ´K¹¤ÔÊKÎÿéKúüñK*' # fn run() -> Result<(), ParseError> {Áü L1. let url = Url::parse("https://example.net")?;ÁdÖLÀ¨<çLÕ¨¬óLå¨<M¹©™Múd¡M # ErrorsÁ²MúüºMHE If the function can not parse an absolute URL from the given string,Áü‡N.+ a [`ParseError`] variant will be returned.ÁºNúüÂN(% [`ParseError`]: enum.ParseError.htmlÁ,„O¿ ¿Óû ‘Oû
ü„*,ŠOü¹VÌüìOKH Parse an absolute URL from a string and add params to its query string.Á¼PúüÄP$! Existing params are not removed.ÁíPútõP܇ˆQú\Q¥¤Œ Q¹¤Ô¶QÎÿÕQúüÝQ*³ˆüŒRJG let url = Url::parse_with_params("https://example.net?dont=clobberme",ÁüÛRQN &[("lang", "rust"), ("browser", "servo")])?;Áü±S\Y assert_eq!("https://example.net/?dont=clobberme&lang=rust&browser=servo", url.as_str());ÁdTÀ¨<£TÕ¨¬¯Tå¨<ÉT¹©ÕTúdÝTá‰îTúüöTHƒŠüÃU.ÕŠöUúüþU(™‹ŒÀVÀ ÀšÓûšþœÿ§þÿ âVûÍìÛ’ ÒVÍìœ ÕVÍì§ ØVÇLÛ’d©W Û’ÈL¿“Ò“tÈWà¿“TãWàÒ“TúW
ýÛ’¿“Ò“„*,ÛVù$èVŸ¡ü›Z4üžZ&Á Á¤wû ÅZû
$ÊZ«]
```no_runÁü’Ï?< let url = url::Url::parse("https://example.net/").unwrap();ÁüÖÏ30 let addrs = url.socket_addrs(|| None).unwrap();ÁüŽÐ)& std::net::TcpStream::connect(&*addrs)Á<¼Ð # ;Á<Èй©ÔÐú<Üй©üèÐ<9 /// With application-specific known default port numbersÁü©ÑRO fn socket_addrs(url: url::Url) -> std::io::Result<Vec<std::net::SocketAddr>> {Áü€Ò0- url.socket_addrs(|| match url.scheme() {ÁüµÒ/, "socks5" | "socks5h" => Some(1080),Á´éÒ _ => None,ÁT„Ó })Á,“Ó<Ó¹©»À|¯Ó¼©Óú$ØÓâ<æÓúredoxÁœ÷ÓúwasiÁ””ÔúhermitÁ¤°ÔüÎÓ|üÅÓdØÔ× ×¤w“9Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ªBªBö­Bóû÷<®B÷<9)
-ÜnL“¼”¼•¼V4Á–¼ˆ—¼˜¼V6Á™¼ˆ cÌ£•çEçEèEGlobalÁ ¿±‡§í#ßßÇ>à ¬
ÑøÿËO Ÿû“9 îÔûÍìټĒÕ"Ù¼œ—ÕÙ¼˜"ɱ\ŸÕ
œÙ¼$ïÔdefault_port_numberÁœýÔ]_ü¸Ù?L»ÙØÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ”r ØÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
”ræ¾¥ŸŸ áÙ¨› ÅÙ
ž”roptÁÈÙú<ØÙ"$•Úžßñ ÷ñ ”ò  ž ”ræ¾ÐéÔÿäü¦ÞDA Return the path for this URL, as a percent-encoded ASCII string.ÁüïÞYV For cannot-be-a-base URLs, this is an arbitrary string that doesn’t start with '/'.ÁüÍß0- For other URLs, this starts with a '/' slashÁü‚à52 and continues with slash-separated path segments.Á¼àútÄà܇×àú\ß।üïà use url::{Url, ParseError};Á“áúü›á*³ˆüÊáEB let url = Url::parse("https://example.com/api/versions?page=2")?;Áü”â,) assert_eq!(url.path(), "/api/versions");ÁÅâúüÍâ1½ÿüƒã  assert_eq!(url.path(), "/");Á¨ãúü°ãFC let url = Url::parse("https://example.com/countries/việt nam")?;Áüûã<9 assert_eq!(url.path(), "/countries/vi%E1%BB%87t%20nam");Ád¼äÀ¨<ÍäÕ¨¬Ùäå¨<ó乩$†åÙ Ù¤w Ùû ‹åû
¡$Œåü»ô;üÊç(% Unless this URL is cannot-be-a-base,Áü÷ç<9 return an iterator of '/' slash-separated path segments,Áü¸è+( each as a percent-encoded ASCII string.Áèèúüðè,) Return `None` for cannot-be-a-base URLs.Á¡éúü©éMJ When `Some` is returned, the iterator always contains at least one stringÁÌûé (which may be empty).Á™êút¡ê܇´êú<¼ê¹©ŒÈ깤Þêúìæêߤäˆë…¥ü©ë"«¥ìÐëÖ¥òëúüúë.‰¦ü­ì96 let url = Url::parse("https://example.com/foo/bar")?;ÁüëìQN let mut path_segments = url.path_segments().ok_or_else(|| "cannot be base")?;ÁüÁí2/ assert_eq!(path_segments.next(), Some("foo"));Áüøí2/ assert_eq!(path_segments.next(), Some("bar"));Áü¯î+( assert_eq!(path_segments.next(), None);Áßîúüçî1½ÿüïQäÎüóï/, assert_eq!(path_segments.next(), Some(""));Áü§ð+ºÐ×ðúüßð85 let url = Url::parse("data:text/plain,HelloWorld")?;Áüœñ+( assert!(url.path_segments().is_none());ÁÌñúüÔñFÎÇüŸòQäÎüõò85 assert_eq!(path_segments.next(), Some("countries"));Áü²óA> assert_eq!(path_segments.next(), Some("vi%E1%BB%87t%20nam"));ÁdøóÀ¨<‰ôÕ¨¬•ôå¨<¯ô¹©lÂôÚ Ú¤wÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙüÏüÏýÏ
SerializerÁ-ê.start_positionÁ/encodingÁñH9W¾Úèô矟ïV¡·P¢†:¥Æz˼}Içû ô¼û
²$ù¼ü€Â'|ƒÂè è¤wò}û “Âû
³$˜ÂüãÏ*ìñÄ Change this URL’s path.Á“Åút›Å܇®Åú\¶Å¥¤ŒÆÅ¹¤ÔÜÅÎÿûÅúüƒÆ*³ˆü²Æ52 let mut url = Url::parse("https://example.com")?;ÁüìÆ! url.set_path("api/comments");Áü’ÇA> assert_eq!(url.as_str(), "https://example.com/api/comments");ÁüØÇ,) assert_eq!(url.path(), "/api/comments");Á‰Èúü‘È96 let mut url = Url::parse("https://example.com/api")?;ÁüÏÈ$! url.set_path("data/report.csv");ÁüøÈDA assert_eq!(url.as_str(), "https://example.com/data/report.csv");ÁüÁÉ/, assert_eq!(url.path(), "/data/report.csv");ÁõÉúüýÉWT // `set_path` percent-encodes the given string if it's not already percent-encoded.ÁüÙÊ5È”ü“Ë&# url.set_path("api/some comments");Áü¾ËHE assert_eq!(url.as_str(), "https://example.com/api/some%20comments");Áü‹Ì30 assert_eq!(url.path(), "/api/some%20comments");ÁÃÌúüËÌ\Y // `set_path` will not double percent-encode the string if it's already percent-encoded.Áü¬Í5È”üæÍ(% url.set_path("api/some%20comments");Áü“ÎHï™üàÎ3š˜Ïúd ÏÀ¨<±ÏÕ¨¬½Ïå¨<×Ϲ©DêÏéê é¤w êû óÏû
´$øÏõ
$‚ÐDÓÒ´ßñµ÷ñµ”òµµ´µûÈ  ÔéïÉüÙFüØ×KH Return an object with methods to manipulate this URL’s path segments.Á¨Øúü°Ø52 Return `Err(())` if this URL is cannot-be-a-base.ÁŒ—Ùë ë¤wÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÕÕ˜P×·P¢ØÂP¢ÙÛP¢ÚíP¢ûüê&i³`ëû ©Ùû
$®ÙüáÚP”äÚíî í¤w² îû ÷Úû