Files
archy/core/target/debug/deps/liburl-9543367f2c346823.rmeta
T

806 lines
284 KiB
Plaintext
Raw Normal View History

2026-01-24 22:59:20 +00:00
rust
2l#rustc 1.93.0 (254b59607 2026-01-19)Á³VOÐêùÿ²?ÑL¼§Ì±-a7a40eb546f9e2b0Áõ…·fÊ ¦%g--c48c539199cbc88bÁá\ƒ¦è3$|]åŒ[IÚ tæ-14b12edc9f8cd90bÁë&Gf·Ã ¬ëñq:¤»b-bb76018b1173caf6Áà 9m Ù„«ÐÒþá•cB;-030c5b0bba47cc8fÁrustc_std_workspace_coreÁÛ¹þÓ7>H%¸ÚÉ­-4b81d37a5530864dÁüÃùs<Uß7VyóHr#QÏ-c66cc7807550ce25Á miniz_oxideÁõFÖˆÚ™ª‹"ÞXzLVª-62cbc7af83058505Áadler2Á—wÉD‘嵯|6¨%Œ
+-2f171dd2394b4b62Á hashbrownÁ,ïcV¼¨ø¢:Ê\'È߈-9571ba9e0f6c7a90Árustc_std_workspace_allocÁ%¥Èxµù·¼5Ä3Bœ-aac566ad65903fa4Á
std_detectÁMmáýZ^9õ Îà§e˜÷e-2edb296e590136d8Árustc_demangleÁ@¼§VÉNb˜æ¨fHÌ+V3-53b132e4a2fa6e26Ácfg_ifÁfÝv.Å"ÒÜuPp¹ˆ¶-f76b385d7d4d7f3eÁ addr2lineÁÕú-WiúQVÓ¬
µT§5-fe25100bd73e48e4ÁgimliÁ¹xLáÇí÷‘o±Ñ8£Å-265ba9e6e4f70b3fÁobjectÁÔ³ÝzÓÿ¶ò°öM›¼òü`-9ae0d1f8ea52a318ÁmemchrÁRÎ÷׎™te~QÓ¿ØC\Ò-0bff3c8e8f4e489eÁ  –©HtGNÏ·ˆ!á-d69228d077d46f36Áform_urlencodedÁV}L! jIz ŽG¡ÓC©-4c1f6fca6b620a27Ápercent_encodingÁ™b'¹¥¦°¯ûRêXû-a85f3c5e1556876dÁidnaÁÈÃé8i»´ »+©9²[-12fc1b7a8933529aÁ idna_adapterÁqóMP•‡þ‚‡äuzT-a448d8ab7871fd0eÁicu_normalizerÁùáõ±žÞþMi9ŸÊ‰üc-5d20d37e0b2447b7Á icu_providerÁ×ybv¼ÜîÛvp@\ø-8143c83cab886369ÁzerotrieÁ6«ý»Øé\ou÷^-f10a0af380abd751Á
displaydocÁßn1 nŸûŒÝ“õCùÁ-8a7302fc0e16b6baÁzerofromÁ9k,94äwâD~“ìF-e7a4aaab09db7e3aÁzerofrom_deriveÁb«íºê3
2026-01-24 22:59:20 +00:00
,³VˆX-03b1dd1f2d87713aÁyokeÁÌFȯÁrJ¬oahÌJi-17a2be691e559186Ástable_deref_traitÁ•Ú¨ûEmðYlØ?"e›§k-80e318edb62c0e9cÁ yoke_deriveÁbŽÆÚÒ
¨à‹x -5e7d4687001d5481ÁzerovecÁΜæßÌC&á+r-187d4334a3106b07Ázerovec_deriveÁÎ¥ìóJÏ?æE²ËÖªÜl-f6b5d17a820a0cf7Á writeableÁô,ä§ô¹kª V»Ä å-5a4fe1098e64be2fÁicu_locale_coreÁôæ>Å`-­«F±–QT̵-e924512d9672dc67ÁlitemapÁú…®©¦v>“Rîô}õŸ-6c0049c0b6db37f9ÁtinystrÁ<_"_4˜\QnhêLëÓ-76a3ce4936fcb599Áicu_collectionsÁê Må {ÊK4ý¶”95-1a381751c0cb5f54Á
potential_utfÁHžüÝå8§»3û˜§-eb006b8a7f73122fÁicu_normalizer_dataÁã}i³ž`·¶~ÿÝÚ‡ÈÆ-8d469db884598c22ÁsmallvecÁ,J^
¢¢ ü‚rçÅ-445f50e307365817Áicu_propertiesÁ“$‰í#òÝ_>mîœÜ1-1eb99510e65c73ccÁicu_properties_dataÁg$^²Ñ×qgq~\–Ä-1e7a51c60a295812Á utf8_iterÁÛž¤ÌoRÝ;=Œs‰¢-d669afc8201562eeÁserdeÁ,ú%<Ù%ž<ã%ŒÙ%netÁå-<Ã-,Í-|Ã-ŒÂ-4 DeserializeÁ\žŒé4 SerializeÁL'ž%#InternalComponentsÁ”Ü  expose_internalsÁ”¼ ä² Ìinternal_componentsÁœˆÔ”ìäâpath_to_file_url_segmentsÁÌ¥ŽÇ<—Žfile_url_segments_to_pathbufÁäø­Ç<ê­³á 
  
 !"#Á($%&'()*+,-´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Á4VVÍ4YÉYYÕ4
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Áûè ûû into_stringÁûcheck_invariantsÁŠŠû¤ûschemeÁû©û
has_authorityÁû authorityÁûcannot_be_a_baseÁûÞ1û2ûhas_hostÁûhost_strÁû´ûdomainÁûì2û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Á· ûø2ûset_port_internalÁº û®2ûset_host_internalÁ½ û set_ip_hostÁû2À ûî1 û
set_schemeÁÄ ûfrom_file_pathÁÆûûfrom_directory_pathÁÈûû to_file_pathÁûîËÌ9ûbyte_atÁÎÎ÷ÑÑÑÕÍ×ïÙÍÜÕ ÞÐ
ठ â¢ã å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Á¤É¤àA¦
¦ì¤óA©
©ì¤ŒB¬
“4
¯É¯È4²É²Í4µÉµ˜4¸É¸Ð4»É»¤ 4¾É¾¢ÀµjOriginÁÂOpaqueÁÃ
ÃìÂTupleÁÆ
ÆìÆíÆî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Á¬­
¬SpecialNotFileÁ¯
¬
NotSpecialÁ±
{{{µÈ{{¸Õ{ º˜{®¼õ¼charsÁ{!¿õ¿È{"ÂõÂÍ{|Å 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Á´ì2
path_startÁ query_startÁfragment_startÁÈ ParseOptionsÁù!‰4¨"ÈŠ UrlQueryÁŸŸÑOŸ¡9££ÍG
H
I
J
L
N
X
X
X
\
\
]
]
]
^
a
c
g
i
t
x
y
z



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


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




Š
Š









œ

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

ƒ
ƒ



ˆ
Š

Ž









˜

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

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



Œ

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






£
£
¥
¨
«
«
«

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






¥
¥
¥
³çþŽÐàAóAìŒB˜ì²±¡M0ï ¦á©dÞ©dà`©d£©d¬â©dž©d©dú©d¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" º½¾BorrowedÁ¿ìÀÁOwnedÁÂìr^!™¿Æ8Þ¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" Éà` g£ gàgÉ g g»b gå` gž g¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" ¬âÂÃÄÀDÅìÆÇÛDÈìÉíÊîĺ™úÑ ž½i½i£½i»b½iÞ½ià`½i£×רÌEÙìj ü¥¾ýSA…άâÒjžÒjÒj»bÒjÞÒjà`ÒjÏè
éêÒFëìèFíîþFïð–GñòµGóôÔGõö÷G÷øšHùúÇHûüíH q~@Ưvà¬â¿kž¿k¿k£¿ká¿kÞ¿kþ¿kà`¿kå`¿kú¿kˆˆErrorsÁ$=­,ŸcÊh¬âŠ ŒëIŽJœJ¼JÜJ€K˜¨KšÄKœßKžùK Ÿ ™L
[lJeR};žnn£nánÞnþnà`nå`nþ¬­®¯°M±²ªM“‹6óÔ3=ºá–pÞ–p¬â–pž–p–p£–pú–pÞ¼¼®¾€N{
\›õà`¨q³³ 8³É ÞK¼¼®¾€N{
\›8¬âÅÆÇ»NÈÉÑNÊËäNï­.žXWÏsžÉrÉr£ÉrþÉráÉrÞÉrÞKþþæ(){¢){ƒ¨"{6sñ* ü^Žõ8ÞK„*Ž¢){¨"{Úݤˆ¬õ8à`ÕÕ²O×ÑO¢ØÜO¢ÙõO¢Ú‡P¢¢
GaÿúNn ÕÕ²O×ÑO¢ØÜO¢ÙõO¢Ú‡P¢¢
GaÿúNn8¦˜ôS
ä!‡Tˆ™T­TŠ¿T´Œì2ßTŽñT„Uq²÷io㻘»˜¼˜ë ù¾w>°¡Q¦˜£vä˜ä˜é昌›ÌÛHÑSÉÞßàËPáâäPãäüPåæ—Qçè±QéêÌQëìæQíîýQïð“RñòªR óôÀR
õö×R ÷øíR ùú…S
ûüœSýþ·Sœ~õÞÊww€¦˜£vø˜ø˜ñú˜Ïg,÷QþŒ’x¦˜£vΘΘæИŒјÏ‰’ûÜžûñ'’xþ’xá’xÞ’xà`’xÞ£vþ¥Uù!‰4¨"Èø]>ëñÃáà{Þà{Ôv£v£v å`£vúÉHÉHÊHœÜ3ËÚ¢×€JÜ£và`£v££vž£v£vãvÉ£v£v»b£vñ£vçΘΘæИŒјÏ‰’ûÜžûñ'çä˜ä˜é昌›ÌÛHÑSɦ~çø˜ø˜ñú˜Ïg,÷QþŒ¦~à`ŸŸ‰V¡ÑO¢¡9ÓÔãM‡“J0ž ŸŸ‰V¡ÑO¢¡9ÓÔãM‡“J8Žè©Š³¬ÑÅÿÞšŽè¦Š´¬ÒÅÞŽ¯¤ÓÂâ׃觊µ¬¿¼ÓÅÞŽ²¤ÕÂä×誊¼ÛÕƒÞÙ£ŸŸŽµ¤ÎÂÚ×褊º¬ÏÅÛ¡ŽËÂÜ×ý衊·¬ÌÅ¢ŽY¤ÌÂÝ×þ袊¸¬ÍÅÜGŽè¡¬×ÉH¸¤Þ»¤à¾¤ÐÂß×âV¤æèœŠÕ˜èµ·
¹¼¼þ«ÕŒŸ½ÀÃÆÎÑåêΘíä˜ðø˜Ÿþ¥á1Þ 1à` T£ M¬â?ž 1ú>ÃÉ»bå`ϳÞK  ¦˜Ôvñç0üÕ;
 OOAsciiSetÁPmaskÁíÍÉCaQS
` ü¹Xï†ï†žñ†üÖ:ï†üÖ0ñ† ï†üÖ&ñ† ï†äÖñ†
Öñ†
ï†ï†
ï†
ž)ï†$ï†G O)ï†[
 |ß

~  ­ ÍéʼnÎ" ýóʼn< Prýʼns$> ¤¾ʼnÇ$‹` L‡¥> ï†Âñ†%ï†#ñ†,ï†"ñ†+ï†!ñ†*ï†!ñ†*ï†!ï†*-7)ï†üä1 Žï† , üÌJŽ ï†ï†jñ†üå0ï†üå&ñ† ï†äåñ†
åñ†
ï†ï†
ï†ÆŠï†ÝŽï†F Nï†[ |îʼn}# ¬ÌøʼnÍ? üʼn$†{ LOiŒʼnr$} 
Žé
ï†9ñ†Ðï†Îñ†×ï†Íñ†Öï†Íñ†Öï†Íï†Öãï†üüœ
ï† - üÕÄï†ï†lñ†üýï†üýŒñ† ï†üý}ñ† ï†üýnñ† ï†üý^ñ† ï†üýOñ† ï†üý@ñ† ï†üý1ñ† ï†üý"ñ† ýñ†
ï†ï†
ï†=Žï†Vï† IQŽï†^ʼn$‹/ L‡¯ÐʼnÐ: L–"¥ʼn#; Tv´ʼnw=
¨ 
ÊÃʼn Ë@ ü
 Òʼn
[ P ráʼns\ ¤ÆñʼnÇ] øʼn$„ ^  L€ Mh ʼnp$“ | 
L éï†:ñ†Ïï†Ìñ†Õï†Êñ†Óï†Éñ†Òï†Èñ†Ñï†Çñ†Ðï†Æñ†Ïï†Åñ†Îï†Äñ†Íï†Ãñ†Ìï†Ãï†ÌÿÙŽï†ÌÆ ï†+ Þ ü› Eï†ï†iñ†ÄÇ ï†ñ†
ï†ï†
dŽï†ï†FNŽï†[|Ì ʼn}/ ¬ÄÖ ʼnÍ% etBï†ñ†)ï†(ñ†1ï†(ï†1Æ>Žï†Ä› ï†+ ² üè
Lï†L ï†iñ†¼œ ï† ï†
ï†Rï†FNï†[t© ʼn},­ \  $òï†@ñ†Øï†Öï†Þ`êï†üû ;
ï†
, µ üâ Uï† ï†jñ†üü :ï†üü 0ñ† ï†üü &ñ† ï†äü ñ†
ü ñ†
ï† ï†
ï†Ù)ï†ïï†E M)ï†Y
 z ʼn
{$‰   L… ª Ê ʼnË$“ " L ú ʼn$ # L™ Mo£ ʼnp <  ¡»­ ʼnÄ > L­ _n; ï†ñ†"ï† ñ†)ï†ñ†(ï†ñ†'ï†ñ†'ï†ï†'ö4)٠ï†+ é ü¸ 3ï† ï†iñ†„Ú ï† ï†
ï†Rï†FNï†[tà ʼn} '  $òï†@ñ†Øï†Öï†Þ`êï†
Ž%©d0€¯€¯¹¯octetsÁ“OÉSU‡àfZjq$
Ž%©d0ޝޝº¯²¬“O\däµael

¤€h§( g3€h:A
¤€hª( g3œ­;B
¤€h­( g3›®;B
ÂÄ%½i0Òj7>
ÂÇ+½i6ê|=¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" ê|¤«²¼‹
ר%Òj07>(4j{¢µÌçó÷þŸ³Ä|Ö$«%á,Ë%¿Ad“&ޏ4²&é®)
SocketAddrÁTÓ'°° )
ToSocketAddrsÁlß'‰!
)Û+4ƒ( š |<(Å
Î!4”(ÁðLTœ(¬¹D¨( Æ(ºœ<Þ(±œò(å24‹)ÉHD“)×5g4°)¦¤<Ë)WriteÁ,ã)`æ,ú)ΘéL*ä˜ñ<Œ*ø˜Ð¡*ͦ*Á] ¢$«*‡b!memÁ±*Õ"utf8_percent_encodeÁœÍ* 1#ioÁó+ç$Ý$Ÿ,é,&Þ<¥,ä+'àB$.¤*ÌEd».×,²D4É.Â-ÀFTê.è/ÔI|ö.Š0²O|¦/Õ1»PDÏ/Þ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"]));
2026-01-24 22:59:20 +00:00
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*:
2026-01-24 22:59:20 +00:00
```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"] }
```
Á¡#  # Ì#8¹l¡# ¯#7https://docs.rs/url/2.5.7Áܱ#üš#4(4j{¢µÌçó÷þŸ³ÛÄÜÛáÚ¿AÙŽ¸Øé®)¯³Î°° )гÁ‰!
)Û+À š |¿Å
Î!¾ÁðL½¬¹¼ »ºœº±œ¹å2¸ÉH·×5g¦¤µÕµ°‹`æ¯Θé®ä˜ñ­ø˜Ð¬Í«Á] ¢ª‡b!â¶§Õ"ø¶ 1#·ç$Ýé,&Þä+'àB¤*ÌEŽ×,²DÂ-ÀFŒè/ÔIŠ0²OŠÕ1»PÞ2ϸyV3£¦©œŸ„ž%”¾%̆&”¦&tüÆ''[^=@üó'>25&) ÿ”·(ö´Ï(êTë(Þüû(!Ó֯ɤ¢)¾´¼)²„Ø)¡üî)&ˆz}Üš*pscfVYFIü»*%+<î+Ô“,”ã,»Í, Ð, à,8<Ñ, Ù,7,Û,¼Ë,ò,¸é®)¯³q°°)г_‰!)ShutdownÁEÕJ)AddrParseErrorÁuÇ
¤°)È2E§  ó )¹Eÿ €¯)ºE‰ ޝ)Ipv6MulticastScopeÁ•“ œ¯) SocketAddrV4Áeþ ǰ) SocketAddrV6ÁeŒ
Ú°) IntoIncomingÁeJ)IncomingÁEчJ) TcpListenerÁ]ÛÉ!) TcpStreamÁMèÆ!) UdpSocketÁMµ¯")D„-Œ.Úü«.%ÑÔÆÉüÚ.,Àõ¸ü/%¯Ä¿/¥üá/!ŒD…0$‰0]^acgiޤ¹€¯46)ºޝ47)º48œ±49ÉH4:­åßA4;Ðô4<Í$‰Á]4>œLÁ`4?percent_decodeÁt³ >4Aø¶œÃ 14BCONTROLSÁDØ )4CÀFT¾è4E4Füä (+”Š
´¢þ¬¾ñ|ÙäLî×äýʃ½¿ü A¥§˜‚ü®(wyhjü¥.8¦¦©dHüHüÚ)§¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" º½¾Ìe¿ìÀÁíeÂìr^!™¿Æ§©dGñG
H8´8¨¨¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" ôqJüÅ&üæ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>Á,øª ªê³í³î³Òï³ìð³ñ³ò³ìäs{©¶ݱ¿kK K
L¢),þßL<closure_kind>ÁM<closure_signature>ÁM<upvars>ÁMMLM¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" º½¾Ìe¿ìÀÁíeÂìr^!™¿ÆݱüÀ<üþ=: <https://url.spec.whatwg.org/#concept-opaque-host-parser>ÁdÇ« «¿ðK ÛK
N¢),Ô¼NÎðOæðOƒñOONO¦òÜÙQQ¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" º½¾Ìe¿ìÀÁíeÂìr^!™¿ÆRSUÞüûHL‰Áöê³í³î³Òï³ìð³ñ³ò³ìäs{©¶áõ¿kPP
R¢),“üï!O„ý!Áö¿÷PP
S¢),Ž"Ó$SÎðTæðTƒñTTSTüê0.Tø0áõݱPP
U$ƒ1üÜ2,ÉWW©â€h á2ñ€hTä2 gXæ`X!#ü333¬­® ¬ g ­Á`Á`œÃ`è Á]Ä`bufÁÁ]Ê­\É:•®ê³í³î³Òï³ìð³ñ³ò³ìäs{©¶ѼѼÒ¼ štÀ.V 3V
X€h$—3þ 3üý5DÉZ[[Z»ú ‚6©â¯i …6ž€h¯id´6 g\ \24/1üÈ6%Ë6¯° ¯ g °ÏhY Î6Y
\€h¯i$Ï6î ,Õ6üä8DTç84±²³ ±›® ²Á`Á`œÃ`è Á]Ä`ÖúÁ]Ê­\É:•³üû ø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 ê³í³î³Òï³ìð³ñ³ò³ìäs{©¶ø°ú°û°Ðü°ý°þ°ìHˈXêE>¦~ ÆJ
c¢),¿J”NcÎðdæðdƒñddcd¹…ÞNcÎðeæðeƒñeece¹…¡OcÎðfæðfƒñffcf¹…üËR7tÎR
0¤ù
¸˜´â  {¸˜ô¸  {¸˜¼í  ©â›q
ê³í³î³Òï³ìð³ñ³ò³ìäs{©¶›q¿kWYôŸ
Œ¬
 ¾
 ó Ä
 ì
, Å
 Æ
 ê

, Ç
8ÿ
& Ì
2026-01-24 22:59:20 +00:00
8Û
*Ô
, ×
8ÂI
& ã
8ï
$ é
 ë
*î
 ñ
 ñ<& Errors that can occur during parsing.Áüû
)<Ë­<= This may be extended in the future so exhaustive matching isÁü¹@< forbidden.Át+  š Ä84› ¡ Ã 8Û$ «8­$ ¯8u$ 8$¸$ ¼8+ Î Ï Þ8¹ 8è8 8ÀF ü », Š  °, 8ÿ
$ ¢ ±88ÍË'Î88
Ø8ÀF ç ë8 õ8Íø û š  ü8$ 8̓&  ˆ88œL :8 (œ8ÍŸ'¢8ý « á8
Ã8 É Ó, ß à À
8ÀF', 8ÿ
$‡*Œ8Í 8ÕL“ œ ©, 8ÂI$ ª Áüö*ìƒ ¡ Ñ § ¨*ª ­ Î7\tÁ ¼7\nÁ Ã7\rÁ% Ïüì%»Ö Ù é8 â7¼Ô¿kü¶(¿kšüšüå"Òm¿k
š íü«"¬¸ Î Ø  Ô ÿ, Õ Ö ý
, ×8ÿ
& Ü8Û*ä, ç8ÂI& ó8Ø $ ü þ*  Ö <; Non-fatal syntax violations that can occur during parsing.ÁüŽ><ËÕ<¹›üá@<ƒœ+ Á  ì8 É ë 8Û$ Ó8Õ$ ×8u$ Þ8$ ä8+ ö ÷ 8¹ 88 $”8ÔI|™ © Â, · ¸ ·< ```textÁ\Ê+ æ ç ú8¡è ì, î8ÂI< ```Á<Œ, ¤8ÿ
$ © ¸88ÔI â Ð  8ð8 ô8ÂI  ˆ ƒ8$„(Š :78œ š Æ 8
²8 ¸ ¸ , Î Ï ¥ 8ÔI'ø, ú8ÿ
*, ƒ 8ÂI\„ $  ¦ üð&%næ`üœ'3Ÿ'½¾¿ ½n ¾Á`Á`œÃ`è Á]Ä`ÖúÁ]Ê­\É:•¿üûœ £'œ
$¤'þ ª'|ù( ü) T–)À À–pž ¡)ž
Ÿ$¢)ìè)<ï)Á Á–pž ÷)ž
 $ø)üµ**¢¢à™ º*ñ›qT½*–p£ü£#%¬æ*$é*›q–p¡¡
2026-01-24 22:59:20 +00:00
£›qö î*ü¾,0dÅ,Â Âø°ú°û°Ðü°ý°þ°ìHˈXêE> Ú,
¤Ö64Ò,”Ñ.õ¦¦¨q§¨©ª«­¯°²Ö.üê.*\ñ. õ¨q¥¥
§õ¢),ý.üÞ/Ìå/Ãå±ø°ú°û°Ðü°ý°þ°ìHˈXêE> Ãn³Ã¨q¥ µ0¥
¨õoriginal_inputÁtˆ0vfnÁ©0ü“4ƒìš4Äå±ø°ú°û°Ðü°ý°þ°ìHˈXêE> ij³Ä¨q¥ î4¥
©õβtÁ4ä²â4ôØ8Dß8ŠŨq¥ è8¥
ªõ$é8ü¸93\¿9Æ Æ¨qû¥û¬¬ ×9¥©âÀ¶ Ë9³À¶<Î9
«õÀ¶$Ø9 Þ935ü±:<d¸:Ç Ç¨qÀ¶ø°ú°û°Ðü°ý°þ°ìHˈXêE>¨q¥û®® Ñ:¥ë¶ Å:ü¶<È:
­õÀ¶$Ò:£¶ Ø:+-ü§<-\ª<{È È¨qø°ú°û°Ðü°ý°þ°ìHˈXêE>¨q¥ ¶<¥
¯õ$·<üÀ=BtÃ={É É¨qÉ ¦~¨q¥É ±± ç=¥©âäº Ò=äºÎù„Õ=äºÎù$á=
°õäº$è=þ î=KMüñ@2Lô@{Ê Ê¨qø°ú°û°Ðü°ý°þ°ìHˈXêE>å±¥ þ@¥
²õ$ƒAŒ†D<D³³ªâü†DK³¼½¼½´´´üžD1d¡DËÌĽ ˼¼®¾€N{
\›Ì³ »D³
´Ľ$®D¢),´D¬ÓD´üïD0dòDÍΠͼ¼®¾€N{
\›Îµ ŒEµ
2026-01-24 22:59:20 +00:00
$ÿD¢),…E¬ÎE8ÏÏôq¸´¸üêE0díEÐÑôq м¼®¾€N{
\›Ñ· ‡F·
¸8$úE¢),€Fü²G*É ººƒrÎù$ÉGƒrÎùœºG©âƒr ·Gƒr»´»üãG0dæGÒÓƒr Ò¼¼®¾€N{
\›Ó¹ €H¹
»ƒr$óG¢),ùGÜÈH8ÔÔ¾ÀßKàKäKÀ¾LêH$ïH¼¼ü€I"$ƒIÕ ÕrĹ¼ ˆI¼
¾8$I$ÆI¾Îð¿æð¿ƒñ¿¿¾¿ üñI-LôIÖ Örø°ú°û°Ðü°ý°þ°ìHˈXêE>¼ þI¼
À8$ÿI¬×J4âJÂÂüµK1ÁÁÎ!Ãä!Äù!ʼn"ƨ"Ǽ"¡Åñ2˜e`Ø¡Åñ2˜e`ØÃÄÅÆÇéJÌóJl÷JÁÁê|ì’KD–KÁÁø°ú°û°Ðü°ý°þ°ìHˈXêE> £vù¼¹KÁÁø°ú°û°Ðü°ý°þ°ìHˈXêE>  Êʺ½¾Ìe¿ìÀÁíeÂìr^!™¿Æ
üìK5dðKÁÁø°ú°û°Ðü°ý°þ°ìHˈXêE> ³³¤§L<«LÁÁÉr|®M8××ÁÁÎ!Ãä!Äù!ʼn"ƨ"Ǽ"¡Åñ2˜e`ØÊÌÍÎÐÙÚÞâãåéêëíîðòõö÷øúûüŠüÄM+lÇM{Ø ØôÌnÈ ÕMÈ
É8$ÖMµ ÜMüÅNK„ÈN{Ù ÙôÌnü"Èü"ËË ÙNÈ©â¸Ï¬úN¸Ï„ÿN¸Ï$‹O
Ê8¸Ï$ÚNµ àNà$ôNQSüP0T—Pê|ôÌÈÈ
Ì8ä!l¢PüÏR;LÖRÚôÌ Úê³í³î³Òï³ìð³ñ³ò³ìäs{©¶£v¿kÈ ñRÈ
Í8$äR¢),êRü©ZQd°ZÏÛ Ûô̼¼®¾€N{
\›Ïê³í³î³Òï³ìð³ñ³ò³ìäs{©¶þÒȽZÈ
Î8$ÆZ¢),ÐZ"$üÉaDŒÌa{Üô̼¼®¾€N{
\›ÜÇÑÈõaÈ
Ð8$âa¢),èaüœbFœµb¼Êb„eÐÎðÔæðÔƒñÔÔÐÔ ¼¼®¾€N{
\4ÝeÐÎðÕæðÕƒñÕÕÐÕ £vø°ú°û°Ðü°ý°þ°ìHˈXêE>Å×ÄiÐÎðÖæðÖƒñÖÖÐÖËùðnÐÎð׿ð׃ñ××Ð×­Ö·Ö$ÔoÐÎðØæð؃ñØØÐØ€ÆüÚr•ŒÝr{Ýô̼¼®¾€N{
\›Ý–p¦~ÇÑÈ—sÈ
Ù8$ür¢),Šs scheme_typeÁ\¤s‡TTÅsüÑ{šTÔ{{Þßô̼¼®¾€N{
\›Þ–pø°ú°û°Ðü°ý°þ°ìHˈXêE> ߣvÇÑȇ|È
Ú8$ì{¢),ú{ÃÚ\”|
base_file_urlÁlµ|üú|!L}©ÚÎðÜæð܃ñÜÜÚÜ­Ö Ĺ°ÚÎðÝæð݃ñÝÝÚÝ­ÖÃÞü„Èt‡È{àáô̼¼®¾€N{
\›à–p á£vÇÑȾÈÈ
Þ8$£È¢),±ÈÃÚ\ËÈù!DìÈ€ÖÞÎðßæð߃ñßßÞßËù–×ÞÎðàæðàƒñààÞà­Ö·Ö$†ØÞÎðáæðáƒñááÞá€Æü¯ñ”²ñ{âô̼¼®¾€N{
\›â–p¦~ÇÑÈíñÈ
â8$Òñ¢),àñÃÚ\úñ‡TT›òü—ûtšû{äã ãô̼¼®¾€N{
\›ä–pê³í³î³Òï³ìð³ñ³ò³ìäs{©¶¦~âä¿kÈ©ûÈ
ã8$»û¢),ÍûÃÚ\çû/1ü›’Äœž’{æä äô̼¼®¾€N{
\›æ¦~–pê³í³î³Òï³ìð³ñ³ò³ìäs{©¶¦~©d¥°éæ¿kȲ’È
å8$Ä’¢),Ò’‡TTì’ÃÚ\…“8:åÎðçæðçƒñççå祰  ÁÁÎ!Ãä!Äù!ʼn"ƨ"Ǽ"¡Åñ2˜e`ؘ‹  ›ååüÄå¼¼®¾€N{
\›å–pê³í³î³Òï³ìð³ñ³ò³ìäs{©¶¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" º½¾Ìe¿ìÀÁíeÂìr^!™¿ÆåÁê¿kÈðÈ
é8¢),ãÃÚü§­Rlª­{æ¼¼®¾€N{
\›æê³í³î³Òï³ìð³ñ³ò³ìäs{©¶¤¦§àA¨ì©ªóA«ì¬­ŒB®ìžp¤R" º½¾Ìe¿ìÀÁíeÂìr^!™¿ÆæØí¿kÈÅ­È
ê8¢),¸­ü•±z|˜±{ìç çô̼¼®¾€N{
\›ìê³í³î³Òï³ìð³ñ³ò³ìäs{©¶©dõð¿kȨ±È
ë8$º±¢),ȱ%'ü´·RL»·è¼¼®¾€N{
\›èê³í³î³Òï³ìð³ñ³ò³ìäs{©¶º½¾Ìe¿ìÀÁíeÂìr^!™¿ÆèÝò¿kÈÒ·È
í8¢),Å·üŽÁ¿T•Áé¼¼®¾€N{
\›éÀ¶Érê³í³î³Òï³ìð³ñ³ò³ìäs{©¶¥°Šõ¿kÈûïï½ÁÈë¶  ÁÀ¶œ¹ÂÀ¶¥°\ÁÂ
î8À¶¢),°ÁÝdÊÁ¼"<ãÁY[üŒÊš„“Êñêë êôÌ–p ë¼¼®¾€N{
\›ñö÷ȤÊÈ
ð8$¶ÊÃÚ\Äʺ7DåÊ¢),‚Ë8:üÚ׳Tá×óìí ìôÌ–p í¼¼®¾€N{
\›óÂùÈì×È
ò8$þ×ÃÚ\ŒØº7D­ØßTTÊØ¢),éØACüØÙÄdÛÙ{îï îê| ïÉr–p „Ú
ôä!lõÙ start_strÁLÚ
remaining_lenÁlºÚ¼"<ÜÚÃÚ\úÚüýšLÌ€›{ð ðÈ ©›È
õ8ä!lš›ßTT¯›üÅŸFdÈŸ{ñ ñôÌ–pÈ ÕŸÈ
ö8$ÚŸÃÚ\àŸßTTùŸü¹¤BD¼¤{ò òôÌ–pÈ ŤÈ
÷8$ʤÃÚ\ФßTTé¤ü²©Tܹ©ùó óô̼¼®¾€N{
\›ù÷þÈÕ©È
ø8$Þ©¢),è©%'üÙ®¾¼Ü®{ô ôÌ–p¦~¦~¦~¦~©d¥°¦~¼¼®¾€N{
\›ôÇÑÈù°È
ú8$¯ÃÚ\¯‡TT°¯™Tdɯ­TT䯿TDý¯´$”°ì2$°°ßTTϰ remainingÁLè°üÄŸÄÇÅ{õö õôÌ–p¦~¼¼®¾€N{
\›öê³í³î³Òï³ìð³ñ³ò³ìäs{©¶dždž¿kÈ éÅÈ
û8$îÅÃÚ\üŇTTÆ¢),ºÆüãÍ\êÍý÷ ÷ôÌ–p¦~¼¼®¾€N{
\›ýø°ú°û°Ðü°ý°þ°ìHˈXêE>¥„ÈöÍÈ
ü8$ˆÎÃÚ\–·TT·Î¢),ÐÎ8:ä‡ÏlŽÏ{õÿƒ)ÿƒ)ƒ)üñÏ1þþæ(){¢){ƒ¨"{6sñ* ü^Žõƒ)6sñ* ü^ŽƒœÏ Ïœ²Ïl²Ï{þþ„ÓÏ,ÓÏ{þþ¨q²dñÏ{þþø°ú°û°Ðü°ý°þ°ìHˈXêE> ƒ)³³ƒ)ü·Ð+õ8øøÊs†ßKàK¼ÐLñÐ$öÐå±ü›Ñ($žÑù ùÊsø°ú°û°Ðü°ý°þ°ìHˈXêE>ÊsßK £Ñ
õ8$¨ÑËÞüÎðˆæðˆƒñˆˆüˆ  ÊÊÊÊçʪéüäTl’ä{úûôÌ ú£v¼¼®¾€N{
\›ûÇÑÈ ´äÈ
8$¤äù!Dªä¢),¾äüŸê2t¦êüý üô̼¼®¾€N{
\›ýÈ µêÈ
Š8$ºê¢),ÀêüÜê„ãê{õŒƒ)Œ›†ü¨ë1„*Ž¢){¨"{Úݤˆ¬õƒ)Úݤˆ¬Žôêøê„Šë,Šë{¨qŠd¨ë{ð‡üîë.õ8þþžt’ßKàKóëL«ì$°ìå±üÍì($Ðìÿ ÿžtø°ú°û°Ðü°ý°þ°ìHˈXêE>žtßK Õì
õ8$Úìü°ø:¤³ø{ ôÌ ¼¼®¾€N{
\›È ÈøÈ
8$ÉøŠ Ïø¢),ØøüßùR¤âù{ƒ ƒ³³ƒ ¼¼®¾€N{
\› üù
ä²÷ùŠ –ú¢),Ÿúüüþ%Œÿþ{
Š ‘ÿüŒ†(œ{
chÁ£†üž‡*¬¡‡{
˜­•·‡ü¸ˆ$\¿ˆ
­•ˈü‰‰+4ê³í³î³Òï³ìð³ñ³ò³ìäs{©¶¦~¿k
š» —‰ü¤Š<ü§Š"{  ÓŠ
segmentÁ<ÊŠü¥Œ5¼¬Œ  ÍŒ
œ‡˜<ÄŒüŽ9ü„Ž%{ˆ ˆ ­Ž
ö ªŽüê4üí {  
žö Žü­’Fü°’({Рм¼®¾€N{
\› à’
Ÿ¢),Ù’üé—o|ì—{Œ Œ Œ ­˜
 bufferÁ4¥˜˜,Ø ·˜Œ§0l«0ªÕÎ{¢¤Û+4õ š¢¥ðLTý¬¢¦ôS¢§ÉH¢¨œ¿›s¢©üß)qs`bTŽS¬žDL¹5ü€ 0  £vÕÕ²O×ÑO¢ØÜO¢ÙõO¢Ú‡P¢¢
GaÿúNn 
ªÑO ü™!8ŽŽÅu¬ ¬”Á Åu« É«
¬8ÄÀ8Åu®¯°±²ü¿$üßMJ Remove all segments in the path, leaving the minimal `url.path() == "/"`.Á±Ëü¹<9 Returns `&mut Self` so that method calls can be chained.ÁúËd Example:ÁË\ ```rustÁŒ« use url::Url;ÁÁËìÉ # #[cfg(feature = "std")]Áäë # use std::error::Error;ÁüŒ" # #[cfg(not(feature = "std"))]Áì³ # use core::error::Error;ÁÕËüÝ.+ # fn run() -> Result<(), Box<dyn Error>> {ÁüDA let mut url = Url::parse("https://github.com/servo/rust-url/")?;ÁüÙ:7 url.path_segments_mut().map_err(|_| "cannot be base")?Áü˜  .clear().push("logout");Áü½:7 assert_eq!(url.as_str(), "https://github.com/logout");Á # Ok(())Á< # }Á¬™ # run().unwrap();Á›¨ Åuê§­ Ì­
2026-01-24 22:59:20 +00:00
®8üÿ"+ü¿@= Remove the last segment of this URL’s path if it is empty,Áü„74 except if these was only one segment to begin with.ÁÀËüÈ;8 In other words, remove one path trailing slash, if any,ÁüˆVS unless it is also the initial slash (so this does nothing if `url.path() == "/")`.ÁãËüë<Œ¡¬ËÛ¡ÅËú¡ŒÝ¢óËìû±¢äÖ¢ü¾"û¢ì奣Ëü.Ö£üÂD¤ü‹:Ú¤¼Ê .push("pulls");ÁüæIF assert_eq!(url.as_str(), "https://github.com/servo/rust-url//pulls");Á´ Ëü¼ D¤ü…!:Ú¤üÄ!&# .pop_if_empty().push("pulls");Áüï!HE assert_eq!(url.as_str(), "https://github.com/servo/rust-url/pulls");Ád¼"ˆ¦<Í"œ¦¬Ù"«¦<ó"›¨d†# Åu€¯­ “#­
¯8$˜#ü‹'"ü­%1. Remove the last segment of this URL’s path.Áã%Ëüë%RO If the path only has one segment, make it empty such that `url.path() == "/"`.ÁÂ&ËüÊ&<Œ¡' Åu‘±­ '­
°8$'üÖ+2ü”*=: Append the given segment at the end of this URL’s path.ÁÖ*ËüÞ**' See the documentation for `.extend()`.Á+Ëü•+<Œ¡$Ý+ Åu ‹³­ â+­
2026-01-24 22:59:20 +00:00
±8$ç+‡˜<í+ü¼?uü¹,PM Append each segment from the given iterator at the end of this URL’s path.ÁŽ-Ëü–-HE Each segment is percent-encoded like in `Url::parse` or `Url::join`,Áüã-MJ except that `%` and `/` characters are also encoded (to `%25` and `%2F`).Áüµ.QN This is unlike `Url::parse` where `%` is left as-is in case some of the inputÁü‹/JG is already percent-encoded, and `/` denotes a path segment separator.)ÁÚ/Ëüâ/;8 Note that, in addition to slashes between new segments,Áü¢0KH this always adds a slash between the existing path and the new segmentsÁüò0+( *except* if the existing path is `"/"`.Áü¢1MJ If the previous last segment was empty (if the path had a trailing slash)Áüô1DA the path after `.extend()` will contain two consecutive slashes.Áü½274 If that is undesired, call `.pop_if_empty()` first.Áù2Ëü3UR To obtain a behavior similar to `Url::join`, call `.pop()` unconditionally first.ÁÛ3Ëüã3<Œ¡¤4Ëd¬4Û¡
new_searchÁTÄMô¹OüþN:7 Getter for <https://url.spec.whatwg.org/#dom-url-hash>Á$ÀOº º£v º ÊO
òÑOÅOü¿P.ü„P:7 Setter for <https://url.spec.whatwg.org/#dom-url-hash>ÁDÆP»¼ »£v ¼ ÔP
óÑOÏ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ô;à{Éà{õõ
2026-01-24 22:59:20 +00:00
÷$< ‡<üÏ=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à{ØËà{õõ
2026-01-24 22:59:20 +00:00
ù$žF ¤FüÌGAü‘G63 Parse an URL string with the configuration so far.Á,ÓG¾à{ ¾ÇÑõ æGõ
ú$ÙG¢),ßGDÅJ£vüýƒˆŠŽ˜šœ¡¢¤¥¦¨«­¯°²³´·¹º¼½¿ÀÂÄÆÈÊËÍüý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û