Files
boc/aamos-ledger-rust/target/debug/deps/libsocket2-5807aa83f90bc173.rmeta
T

671 lines
291 KiB
Plaintext
Raw Normal View History

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ÁÚ+z˜ÖËó>zj–„÷-8f89ea8b6e77f2aaÁSOCKADDR_IN6_0ÁtåâtestsÁ,‰h$þgN
FromRawSocketÁl¹â<”N
IntoRawSocketÁlÈâ "‡ AsRawSocketÁ\ÈâAsSocketÁDÕâ§â.
NonZeroU32ÁTØ»£Ÿ NonZeroUsizeÁd® »£ŸRawFdÁ,± »£Ÿ UnixDatagramÁd¼
ȣ|
Ÿ UnixListenerÁdÊ
ȣ#
UnixStreamÁTØ
»£B SOCK_DCCPÁL컣ŸSOCK_RAWÁDÞ»£|ŸSOCK_SEQPACKETÁtµ»£Ÿ IPPROTO_DCCPÁdÓ»£|Ÿ IPPROTO_SCTPÁd„»£ŸIPPROTO_UDPLITEÁ|Ô»£ŸIPPROTO_DIVERTÁt°»£ŸIPV6_RECVHOPLIMITÁŒû »£Ÿ
IP_HDRINCLÁTÎ$»£|ñ#Ÿ SO_LINGERÁL,úiosÁŒì*úvisionosÁ´ƒ+úmacosÁœŸ+útvosÁ”¸+úwatchosÁ¬Ð+üæ*ŸIPV6_ADD_MEMBERSHIPÁœÚ9 ú dragonflyÁ¼ñ6úfreebsdÁ¬Ž7úhaikuÁœ©7úillumosÁ¬Â7úÉ
ŒÝ7úØ
´ô7úì
œ8únetbsdÁ¤©8úopenbsdÁ¬Ã8úsolarisÁ¬Þ8úý
”ù8ú¬‘9üë6¾ŸIPV6_DROP_MEMBERSHIPÁ¤ƒ: úÆÞúÛÕúîÎúÿÅúÉ
ÃúØ
Áúì
¿ú·úÈ®úÛ¥úý
£ú¡Ÿ¡Ÿ TCP_KEEPCNTÁ\î=»£|«:Ÿ
TCP_KEEPINTVLÁlû=»£$KEEPALIVE_TIMEÁt@úÉ
Œà>úØ
´÷>úì
œ“?úntoÁŒ¬?úý
”Ã?ú¬Û?üÚ>™Ÿ MAX_BUF_LENÁ\¼LúÉ
ŒKúØ
´´Kúì
œÐKúý
”éKú¬LúcygwinÁ¤œLü—KœŸTCP_CA_NAME_MAXÁ|‰N»£|¿MŸIovLenÁ4ÕUúlinuxÁœ«PîmuslÁœÙPîohosÁœúPîuclibcÁ¬ŸQû32ÁܶQüžQ4üËP‘ü¡PÁúaixÁŒèQúƼÿQúÛ¬œRúfuchsiaÁ¬·RúîœÒRúhurdÁ”ëRúÿ¬ƒSúÉ
ŒžSúØ
´µSúì
œÑSú¤êSúªŒ„TúȬ›TúÛ¬¶Túý
”ÑTú¬éTúespidfÁ¤„UúvitaÁ”žUú«¤¶Uü˜PµŸ
socketpairÁTËí»£|êìŸ
\“…»£|Ó„Ÿ
\ò†»£|½†Ÿset_nonblockingÁ|îŠúĔˊŸkeepalive_timeÁtª¸»£|œ¶Ÿ original_dstÁd¡ã»£|³âŸoriginal_dst_ipv6ÁŒé軣|—èŸ
CcidEndpointsÁlñ®»£|ä­À 

impl_debugÁ÷sockaddrÁ 
  
*æ *try_initÁ,,¥, STORAGE_SIZEÁ, *ú1¡*
set_lengthÁ*familyÁ*domainÁ**as_ptrÁ*
as_storageÁ*is_ipv4Á*is_ipv6Á*is_unixÁ* as_socketÁ*as_socket_ipv4Á*as_socket_ipv6Á*as_bytesÁ@÷B÷D÷F×HK§LsocketÁNNNNNNNNNN N
N N N
NNNNNNNNNNNNNNNNNNN N!N"NSocketÁrinnerÁNInnerÁNufrom_rawÁuas_rawÁuinto_rawÁuæ unew_rawÁz ubindÁuconnectÁuconnect_timeoutÁulistenÁuacceptÁu
accept_rawÁ u
local_addrÁu peer_addrÁu!u try_cloneÁuºushutdownÁurecvÁurecv_out_of_bandÁurecv_with_flagsÁu
recv_vectoredÁurecv_vectored_with_flagsÁupeekÁu recv_fromÁurecv_from_with_flagsÁurecv_from_vectoredÁurecv_from_vectored_with_flagsÁu peek_fromÁu peek_senderÁurecvmsgÁusendÁusend_with_flagsÁu
send_vectoredÁusend_vectored_with_flagsÁusend_out_of_bandÁusend_toÁusend_to_with_flagsÁusend_to_vectoredÁusend_to_vectored_with_flagsÁusendmsgÁNset_common_typeÁNset_common_flagsÁN¢ broadcastÁ£ ¢
set_broadcastÁ¢
take_errorÁ¢ keepaliveÁ§ ¢
set_keepaliveÁ¢lingerÁ¢
set_lingerÁ¢out_of_band_inlineÁ¬ ¢set_out_of_band_inlineÁ¢passcredÁ¯ ¢ set_passcredÁ¢recv_buffer_sizeÁ² ¢set_recv_buffer_sizeÁ¢ read_timeoutÁ¢set_read_timeoutÁ¢
reuse_addressÁ· ¢set_reuse_addressÁ¢send_buffer_sizeÁº ¢set_send_buffer_sizeÁ¢
write_timeoutÁ¢set_write_timeoutÁN from_lingerÁN into_lingerÁNÁjoin_multicast_v4ÁÁleave_multicast_v4ÁÁjoin_multicast_v4_nÁÁleave_multicast_v4_nÁÁ join_ssm_v4ÁÁ leave_ssm_v4ÁÁmulticast_if_v4ÁÁset_multicast_if_v4ÁÁmulticast_loop_v4ÁÊ Áset_multicast_loop_v4ÁÁmulticast_ttl_v4ÁÍ Áset_multicast_ttl_v4ÁÁttlÁÐ Áset_ttlÁÁset_tosÁÁtosÁÔ Á set_recv_tosÁÁrecv_tosÁ× NÙjoin_multicast_v6ÁÙleave_multicast_v6ÁÙmulticast_hops_v6ÁÜ Ùset_multicast_hops_v6ÁÙmulticast_if_v6Áß Ùset_multicast_if_v6ÁÙmulticast_loop_v6Áâ Ùset_multicast_loop_v6ÁÙunicast_hops_v6Áå Ùset_unicast_hops_v6ÁÙonly_v6Áè Ù set_only_v6ÁÙrecv_tclass_v6Áë Ùset_recv_tclass_v6ÁNîset_tcp_keepaliveÁînodelayÁð î set_nodelayÁNóreadÁó
read_vectoredÁõ N÷'aÁ÷Þ/÷ê/ú NüwriteÁüwrite_vectoredÁüflushÁNˆ0«0¸0Î0N ×sockrefÁSockRefÁ'sÁ¡ _lifetimeÁÕ1å´Õ1¤÷×sysÁŸŸŸŸŸŸŸŸŸŸ Ÿ
Ÿ Ÿ Ÿ
ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ Ÿ!Ÿ"Ÿ#Ÿ$Ÿ%Ÿ&Ÿ'Ÿ(Ÿ)Ÿ*Ÿ+Ÿ,Ÿ-Ÿ.Ÿ/Ÿ0Ÿ1Ÿ2Ÿ3Ÿ4Ÿ5Ÿ6Ÿ7Ÿ8Ÿ9Ÿ:Ÿ;Ÿ<Ÿ=Ÿ>Ÿ?Ÿ@ŸAŸBŸCŸDŸEŸFŸGŸHŸIŸJŸKŸLŸMŸNŸOŸPŸQŸRŸSŸTŸUŸVŸWŸXŸYŸZŸ[Ÿ\Ÿ]Ÿ^Ÿ_Ÿ`ŸaŸbŸcŸdŸeŸfŸgŸhŸiŸjŸXŸkŸsyscallÁŸÖŸèŸŸ_cloexecÁŸis_end_of_recordÁis_out_of_bandÁŸ×ŸMaybeUninitSliceÁ˜ˆ0˜Á˜ç1Ÿœˆ0Ÿžˆ0Ÿ ˆ0 æ  as_sliceÁ  as_mut_sliceÁŸoffset_of_pathÁŸ
unix_sockaddrÁŸlŸset_msghdr_nameÁŸset_msghdr_iovÁŸset_msghdr_controlÁŸset_msghdr_flagsÁŸ msghdr_flagsÁŸmsghdr_control_lenÁŸ®
is_unnamedÁ¯ ®as_sockaddr_unÁ± ®path_lenÁ®
path_bytesÁ®as_unixÁ® as_pathnameÁ · ®as_abstract_namespaceÁ¹ º ŸºŸsocket_from_rawÁŸ
socket_as_rawÁŸsocket_into_rawÁŸ¡Ÿ§Á Ÿ²Ã Ÿ poll_connectÁŸÖÆ ŸãÈ Ÿ getsocknameÁÊ Ê Ÿ getpeernameÁÍ Í Ÿ­ ŸºŸÄ Ò ŸÓ Ô ŸÉ!Ö × ŸÁ"Ù Ÿ‹!Ÿô!Ü ŸÓ"Þ Ÿá"à Ÿ#ŸÌ#ã Ÿó#Ÿ¬$æ Ÿ timeout_optÁŸ from_timevalÁŸset_timeout_optÁŸ into_timevalÁŸš/Ÿ into_secsÁŸ fcntl_getÁŸ fcntl_addÁï Ÿ fcntl_removeÁñ Ÿ
getsockoptÁó¥ó Ÿ
setsockoptÁö¥ö Ÿ
to_in_addrÁŸ from_in_addrÁŸ to_in6_addrÁŸ
from_in6_addrÁŸto_mreqnÁŸþ_accept4Áÿ þ _set_cloexecÁŸ as_fdÁŸ
 as_raw_fdÁŸ ÷Ÿ ˆ into_raw_fdÁŸ
Š÷ŸŒ from_raw_fdÁ  
IPV4ÁIPV6ÁUNIXÁ for_addressÁ˜÷š÷œSTREAMÁœDGRAMÁŸ÷¡÷£ICMPV4Á£ICMPV6Á£TCPÁ£UDPÁ£MPTCPÁ©÷«÷ ­ is_truncatedÁå7¯
¯ˆ0¯ˆ
³ˆ0³× ˆ0æ  ¹ˆ0¹å¹´
½ˆ0½Àæ À with_timeÁÀ
with_intervalÁMsgHdrÁÄ'addrÁÄ'bufsÁÄ'controlÁÄÇÄ
_lifetimesÁÊóEÊ€FÊFÊæ Ê with_addrÁÊ with_buffersÁÊ with_controlÁÊ
with_flagsÁÓ'nameÁÓ€FÓFÓ× MsgHdrMutÁØóEØ€FØFØÇØ¥FÞóEÞ€FÞFÞæ ÞÛFÞìFÞ€GÞflagsÁÞ control_lenÁèªGè€FèFè× man_linksÁSockAddrÁîstorageÁîñƒNInterfaceIndexOrAddressÁóIndexÁô
ôˆóAddressÁ÷
÷ˆN
ú×N ü÷N þ÷N
÷N÷N÷N÷Ÿˆ×ŸŠ×ŸŒ×DomainÁŽ
ŽˆƒÖ˜óš
šˆŸƒ¡Ö¤ProtocolÁ¦
¦ˆ !«ƒ"­Ö#$° RecvFlagsÁ²
²ˆ%&'·ƒ(¹Ö)*¼ TcpKeepaliveÁ¾timeÁ¾intervalÁ¾retriesÁ+Â×,ă3
4
5
6
7
9
:
;
<
=
>
?
G
G
G
I
I
L
L
w
|
|
}
}
~
~



ƒ




ˆ


Š
Š


Œ
Œ
Œ



Ž
Ž






















˜
˜
˜



š
š



œ
œ
œ




ž
ž
ž
ž
Ÿ
Ÿ
Ÿ
Ÿ
Ÿ
£
¥
¦
§
©
ª
«
¬
®
¯
±
²
´
µ

·
¹
º
¼
½
¾
Â
Â
Â
Ã
Ã
Ã
Ä
Ä
Ä
Å
Å
Å
Æ
Æ
Æ
Æ
Ç
Ç
Ç
Ç
È
É
É
Ê
Ì
Í
Ï
Ð
Ò
Ó
Ô
Ö
×
Ú
Ú
Û
Û
Ü
Þ
ß
á
â
ä
å
ç
è
ê
ë
í
ï
ï
ð
ò
ô
ô
õ
õ
õ
ù
ù
ú
ú
ú
ý
ý
þ
þ
þ
ÿ


ƒ
ƒ
ƒ




˜

ž
ž
ž



£
¤
¥
¦
¨
¨
©
ª
«
¬
­
¯
±
³
³
´
´
µ

¹
¾
Á
Ã
Å
Ô
Ö
Û
Û
Ü
Ü
Þ
Þ
Þ
Þ
à
â
â
ã
ã
å
å
å
æ
æ
æ
æ
ì
ù
û
ý
ý
ÿ

ƒ

µ
µ
µ
¼
¿
Ð
×
×
×
ä
æ
ç
ì
ì
ì
ò
û
û
û













 
¢
¥
¥
¬
®
±
±
¸
º
½
½
Ã
Ã
Ã
Å
Øîî–Iï¦Ið—ÞhùX[oéþZ“¼”¼•¼V4Á–¼ˆ—¼˜¼V6Á™¼ˆ cÌ£•éþZª¼ª¼ SocketAddrV4Á«¼ipÁÑS¬¼portÁÑSµÃѨbF(ÆéþZ½¼½¼ SocketAddrV6Á¾¼¿[ÑS¿¼Î[ÑSÀ¼flowinfoÁÑSÁ¼scope_idÁÑS¸dÛÔ#¹G[¿cþZµßþZþZþZšeþZ¿cóôõçIöˆ÷øJùˆÍakËL‘â¥à rrºsÇNÇ fe-&=gà  ˆ0í^Ÿ!í^Ÿ!ž_¿cí^éí^‡#‡#ˆ# TcpStreamÁ‰#ˆô" ¤‰?ßøéí^Š#Š## TcpListenerÁŒ#ˆô" N À];óÉéí^ð#ð#ñ# UdpSocketÁò#ˆà# ¬ãøàFð™éÐ_í^é•`í^éÜ`í^é!Æ1¡ç1vIÎ_œ??Õ1éÅa Õ1¤¿cÆ1¡ç1vIÎ_œ??8¿cŽŽ—Kˆ &}Ã×4/*8¿cššóœˆ ^_ÏÍZê&¿c¦¦§¥L¨ˆ ¾Bªî|L¿c²²³ñL´ˆ V²ïðTÅóxÌ옘å7šÁŸç1Ÿ-VÃóü`x¨ˆ0 Êd,í^«+í^éö+ö+OwnedFdÁ÷+fdÁä+Þí¼>XG¸,í^¯+í^éí^¯e­+í^Š ébÛébØébébÐìébµßébébéébéÕfébŠ ¡cÛ¡cØ¡c¡cÐì¡cµß¡c¡cé¡cÕféÕf¡cŠ ÙcÛÙcØÙcÙcÐìÙcµßÙcÙcéÙcÕféÕfÙcŠ ‘dÛ‘dØ‘d‘dÐì‘dµß‘d‘d¿c¯¯°å7²ˆ ·…"Åfˆ0é!ãhö!ãh¿c¾¾¾M¿ÒMÀÞMÁîM)è¶$šØBTصi¿cÄÄåEÈÇÉ¥FÄ0 “Ó' ªG€FF¿cØØÎGÜÇÝ¥F1yÇ ,½SªG€FFñîŽŸš«¦·²Ä¾@îBîDîür€r‚‡#„Š#†ð#™ö+ŠŽšŸš¡©¦«FîúórˆŽŠšŒ¦²³¯Â¾ÓÄèØH¤š°¦¼²JîŽ¡š­¦¹²Kîó
ür€
¹¯œ˜ž˜r„r‘Žš©¦µ²Žžšª¦²Ž£š¯¦»²½¯ØÜé*¿c qµßR"še"à Ÿ! é! Ìì ,«+¯+­+Š ÛÐìö!Èôsockaddr_storageÁ ss_familyÁ __ss_pad2Áà 
__ss_alignÁÃ ™x–¸ ü
Ùøo˜ p(Ò î×ò-þZ8 þZBøo
 øoœq| œqoyópF
Ùœq®ÓÌ¿ î ×Þ+üæxþZøoœqøoœq{¦I#'Q
\Õ#
&.üã#)üã#'
óøo !d¤$
/œq$º$
&<¿$¤¿$TÇ$
öøo+dÇ$DÕ$
 
üº$$  '²
™" øo œqÑPY Ý$
üã$õ 
 0±v¥Õf–w–wþZ‹r ÑÛÑÛ MaybeUninitÁÓÛuninitÁÝÔÛ»ÝÍõƒ«%9øo 
üº$Ÿß$
Ú[wßßErrorÁà ¬
ÑøÿËO Ÿ¦w0±v–wÕfŸw°w~  üß$úß'ü¾¡Q b  Þ',UüÑ#Žü–$ÉÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¦w«xÌç±v¶wsœq<š$Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
–w«xÛ±vi·vë¹v7 ¶wS½v! œq,áx¨‹r°´w¸ÓginitÁÖ¦IMÞÅ/œqËt<ÄuÆ«vˆ¢xv±v7±vÊì„!
Ü„!
Àøo*ü„!*œq ­!üä K/œqm+…% ‹r œ…%dŒ%/œqùž"#ù®ž"#
¶cÜš% 
5ù@#á#
ÜWW$<ü&
´w
¬ü&\„'
÷øo 9l„'£'r
üÏ%æ î
Ä' \Ã'  Ø' ×''05üÄ%”¦wè$áxT–wä$Šœq¯1äÈäÈ ArgumentsÁæÈtemplateÁ `çÈÀ `üöMõô]TdÂþZ$È%øoQ¶wxœq8wrú´w‹r
resÁ¼ž$r¦I<Ù#´waddrÁ|Ur/œqˆcÀ.‚€îwh _ref__lenÁ
_ref__storageÁ$÷)l÷)4ü)
â¡…0…0PathÁ†0Çß-bªŸðcÂ^_Dü)üÝ)(ÌÝ)
¦x! Š*‹*üý(Ž1Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
þZ«x¤˜)´„$Œ) º„6 ´„Rõ
$¥®„a´„è´„î´ö,øo-4üÂ,P\à,çq,Ö, ,ü÷-´÷-øo%Õf •.üð-' Ž ..5üÁ-\éb4ß-çq,Õ-Õf:D…/œq“/6üÖ.=œqLñ.çq,ç. ,ü‰N øoüÿ/"

$0
ÛøoÍŽ sa_familyÁsa_dataÁ”ý³jb…#—40  0§07üÇ/` ÈŠ|å/çq,Û/ øoÍ8d”1øo¦18üØ0Nøo„ù0þZ$ð0 ,´³2øo´Í2<Í2Õfü³20 â2é29ü…2d$¤2çq,š2x9~Õf´ÿ3øo¼™4D™4Õfüÿ31 ¯4¶4:üÑ3e$ð3çq,æ3x9~Õf|ÒgD×g
?$ÒgT×gÜÒg$âg
e
I,çg\âgôgLü”g`Çgçq,²g ,¹gt §*º*XäÑŒ¯ìëñë lñë

Dôë
4Tôë ýëäì çìèì ü·è±üèë¡c$Ýè¡cÐè¡c®¡c¬´´ÌUû÷$‹ùJ¾º¾ºIpv4AddrÁ¿ºoctetsÁ¯Q5N`hzØÊ Ššj v
 ¿c¼Á
‡dÒ ×
²äÏÌøçIœq
š0<Æ”7=à”KQo_Ï€øûy Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ Èµw O˜éBL
 ž^  c cˆ¢cµ
 `£cbufÁ `àB¤GS
\d‹rštÆ” ‹r  Ü“jšœÆ”{ ¦˜»±É__self_0Á÷î—ÂõØÆ”Ùà”
›˜Æ”,à”œðÊtðÊ Õf! ‚ËÕf@!$ŽË Û¼­Ö­ÖDurationÁ®ÖsecsÁâ}¯ÖnanosÁâ}Zµ–²ªüíÊr˜ü­Ë+´ÁË|ÁË Õf! ÖËB
Iœ­Ë
€~Ug ×Ëü¨Ë1 Û¼¦š ØË­ ÞËáË¿ü©Ê¸Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¦š„ÖÊ» » Ô%¼ l_onoffÁ½ l_lingerÁËõ;/4¾Ê3Õf2¦šywÕfvÔ%5ßD¯Ìt©Ì$üÄÍH »  çÍÕf €ÎÕf9DÇÌ Û¦š¼Í ÍDÍ 
%<™Í
Œ~2L™Í ¡ÍbÕfp ¦ÍüÔÌ^ »  ÷ÌÕf ±Í •ÎÀüã˲üÂÌp§\—ÌלDøËtÂ̦š8Õf!Õf)" ¦š%durationÁL…¡},
Ž,•b<*ÔŠL™
¬+ÎNÎN
BorrowedFdÁÐNÉdä+ÑN_phantomÁä+§]òÞ^\™ ¼Õf ¼œ
®+í^$€Ö® 
àWš$üæ5Œæ
¼í^üø"'üÈ Z PhantomDataÁFu\»Ÿ í^МüØøüÏ Æ1¡ç1vIÎ_œ?? •bÕf £6£?HÃÛÃÛ ManuallyDropÁÅÛ»¬µÜÀ,%*í^cí^O¡ÉdøâÄû¢ž¤÷ȤÔô¤±¬¼Gd¼G­ÍŠ~ü¡G1ŽŠ~,´G%<­Íܾt4¾tÕf
”Çtü Õf Øtü¹t! š Ùtàtü„t\¡c$ªt¡c$¡tÕfÕf:ü Õf´§†4§† Õf! l°†àÕf ¼†ܧ† Á†ÕfȆüñ…W$˜†‘d$Õf Õfž<àÕf´øˆ4øˆ Õf! lÚÕf Üøˆ ’‰Õf™‰üĈU$鈑d$àˆÕf Õfž<ÚÕfŠ~¤Š®|Š® ! ®D%¬¢®„¢® ! ¶®D%$® Û¼¦šü‡®ØRº  à®|æ® ´æ® û®$НÌ‘¯ „’¯
 
! 
œq ©¯
ü‘¯   $­¯èœq#   $èœqE œq °¯ ÄÀ¯ ί
 
$Ó¯ 1
8lÀ¯
ÿ}
E6 [ ׯ 
ô»¯ Û¼¦š د Þ¯ ©á¯éü¾­£üÜ®ƒü†¯Yל„ð­ã
ã
timevalÁä
tv_secÁå
tv_usecÁPKMz*ìbDÔ­ÐÏA@œqœqœq𦚜œq…¡xsecÁ¡nsecÁvü‹Ø!lžØ$žØ 
&4£Ø
ØQ3D£Ø ªØ^
e”‹Ø
­Òr «Øüñ×B è ²ØµØùüˆÖ­èèin_addrÁés_addrÁÏ¿º „g<»Ö¦˜$§ÖœqŠ~+¦˜+²‚5l…Ú$…Ú 
&4ŠÚ
­R3DŠÚ ‘ÚüéÙ0 õ  ˜Ú›Úûü¦Ùuõ õ in6_addrÁö s6_addrÁ2p½«±ÉiDÚÙ ̺̺Ipv6AddrÁͺú’¯QÉ¢}ÝÏÆÚ$ÆÙŠ~+ö¹+²‚- L¶Þ|°Þ%Lóà JÜ“¬­áL¸á 
&T­á
ù3DLøÞ çIœq¬²ßL½ß 
&T²ßö»1B Æßüâß"´íß  ý¦˜% 2 I
PTâßö»Zl ƒà|Ÿà   TŸà
 
$ 
Õf2 ­à
ü†ß³ ù ¸à    !) Áá¬ÝáLèá 
&TÝáö»1B ñáüᘠù âÕf ˜â ¢âýü¦ÝüüÊÞïüÃàÖùùip_mreqnÁú
imr_multiaddrÁû imr_addressÁü imr_ifindexÁŸ¨^Ĉt›Þ¦˜LÈݨ—LâÝüÊÞ8‹ré‘·Ò¦˜Ò‘·¦˜¦˜Ü“¬îßÕfAÕfIœqB¦˜«‘·¦˜‘·×¦˜×¦˜ö multiaddrÁº interfaceÁř§™ÂŠ£ÖQÜ“¸ÀÖQÜ“sýΦ˜ŸÜ“°ÖQÜ“(—Æ:Ë:$)éb5 éb?HR˜Ï:˜Í: ‡Å&0(™ï:ÕfÕf$Ú:H™Ñ:‡Å‡ÅÕflÕfs5¹
BL¤æ; Ždí;ÕfüÍ;.éb4Ý;%9Õf¬Þ< Žlå<ÕfüÅ</éb4Õ<%9Õf¤Ý= Ždä=ÕfüÄ=.éb4Ô=%9Õf<ò>lì>"dÌ?
ébd?
ébé?üª>¿éb4Û>À[<Ã>Œˆ?˜7lébéb(›ðDõD $)¡c5 ¡c?HRœùD¢œ÷D äË&0(—EÕfÕf$„E¥HûDäËäËÕflÕfs5¹
BL´¦F š„«FÃHÕfüF0¡c$ŸF%9ÃHÕf¬·G š|¼GÄHÕfüŸG.ž¡c$°G%9ÄHÕf„RŸ‰R¬$)Ùc5 Ùc?HR R® R ˆÐ&0¯RÕfÕf$¡˜R±RˆÐˆÐÕflÕfs5¹
BLÜ•S ¦ŒžSËÕfüøR9¤ÙcDŠS%9ËÕfì€T ¦œ‰TÌÕfüãS;¥ÙcDõS%9ÌÕfÔçT ¦„ðTÍÕfüÍT5¦ÙcDÜT%9ÍÕfÔËU ¦„ÔUÎÕfü±U5§ÙcDÀU%9ÎÕfäÓV ¦”ÜVÕfü·V9¨ÙcDÈV%9Õf¢a£§a¸$)d5 d?HR¤«aº¤©a áÖ&0ÎaÕfÕf$¥¶a½­aáÖáÖÕflÕfs5¹
BL¼‹e4‹eÕf t”eÞÕf ¡eä‹e ¦eÕf­e®üÙdT$üdd$ódÕfÕf9ÞÕf ÿm  𰦩o šל(Æ”Ц®q š ל( Æ” ¦Ös
 š
Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙœql 
x  Æ”
ýc+1!'ôù
Å ÊZ¦„nÃs©– µi³—šœšŽÆ” ל£šrÆ”{øÝšSÆ”\  òÛk±Þt±øÝÆ”øÝÆ”è¯ÞÆ”¹æÜH°§©oל
Ùל/7Ч®qל¼ß)1 §ÖsòÛ
ÙòÛ/7†n ¾§‹nÅ2µi=ËÝEלøøÝלÎøÝÖòÛ©±Þ±¼ß>¼ß
¬àÜ
$½u Û¼¦š$Šx Û¼¦š$ýz Û¼œqüœuð ¾ ‹{’{Áüït£µid…uלל òÛŠ0T…€$Š€  Û¼¦š Ž€üìA ¾לòÛ ¬€³€Âü­µiµi¦šל®¦š­%ÒM(Tt²‹D·‹  Û¼¦š ¿‹ü•‹I ¾לòÛ Ý‹ä‹ÃüΊµi$†‹µi$銦šDïŠל³¦š²'ÞM)X,Æø óõ&ž^1œq8?<ƒù óø&ž^1Ü“9@ŒÝ: Ž%éb0Õf7>|‡E š%¡c0Õf7>œ›R ¦§%Ùc0Õf7>¤¹a ²³%d0Õf7>ü¾f ¯°(¯¯°å7²ˆ ·…"Åfc˜˜å7šÁŸç1Ÿ-VÃóü`x¨£ªN‡Ÿ¯°ÄØŽ¦§¾š²³À×ø¤,IoSliceÁ<«æL¼¤¼¤íëÂv\°ÑÛ
SocketAddrÁTË“¼r,æé!
DerefMutÁDíö! ²™D‡­Ö c_intÁ,Ù4¿¬ŽÊ–IDó4îº45rÆ1<¦5ÈI¼Ö6óüáÈ»üá-* Utilities for creating and using sockets.Áúü“GD The goal of this crate is to create and use a socket using advancedÁüÛKH configuration options (those that are not available in the types in theÁü§41 standard library) without using any unsafe code.ÁÜúüàDA This crate provides as direct as possible access to the system'sÁü¥B? functionality for sockets, this means little effort to provideÁüèMJ cross-platform utilities. It is up to the user to know how to use socketsÁü¶JG when using this crate. *If you don't know how to create a socket usingÁüHE libc/system calls then this crate is not for you*. Most, if not all,ÁüÊIF functions directly relate to the equivalent system call with no errorÁü”PM handling applied, so no handling errors such as [`EINTR`]. As a result usingÁüåPM this crate can be a little wordy, but it should give you maximal flexibilityÁü¶ " over configuration of sockets.ÁÙ úüÝ .+ [`EINTR`]: std::io::ErrorKind::InterruptedÁŒ
út
 # ExamplesÁŸ
ú

```no_runÁü±
(% # fn main() -> std::io::Result<()> {ÁüÚ
,) use std::net::{SocketAddr, TcpListener};Áü‡ (% use socket2::{Socket, Domain, Type};Á° úü´ 41 // Create a TCP listener bound to two addresses.Áüé @= let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?;Áª úü®  socket.set_only_v6(false)?;ÁüÎ =: let address: SocketAddr = "[::1]:12345".parse().unwrap();ÁüŒ
" socket.bind(&address.into())?;Áį
 socket.listen(128)?;ÁÈ
úüÌ
.+ let listener: TcpListener = socket.into();Á
 // ...Á¬† # drop(listener);Á # Ok(()) }Á ```Á³ú ## FeaturesÁÇúüËPM This crate has a single feature `all`, which enables all functions even onesÁüœ&# that are not available on all OSs.ÁN‡Ÿ¯°ÄØŽ¦§¾š²³Àk ×l ¤,Ûëe æL¼¤d ¼¤w íd ëÂvc ÑÛÄìY “¼rX é!
ôìP ö! ²™O ­Ö ¤íJ ¿¬ŽÊ–II îºH rÆ1G ÈIF ó



„¢}
ÄÙp
D˜P
¬¦D
¤Á-
!
$


ϟ
¼à ø š þ Ó , Â8!& Ç8õ
$ Í, × Ø Å , æ ç ø+ è é ÷, ê8ê& ñ8û
ù,  8& ¥8¼'­, °8flagÁ& µ8¼$ Æ Ç, É Ê Ì$ Ë
Í*Õ Ø 
88Àç'ê8×ì'ï8p8
÷, û8!  
8 8×  ¼ 8$—$ 8± & ž  8¡8À¥'¨8ת'­8ˆ ¸:8¹ »(¾8ÀÁ'Ä8ׯ'É8Í Ò 
8ä8stringÁ ï88 û7ˆ ü þ Ô
,   
, ¯ ° »+ ± ² º, ³8ê4´
¼, Ö8$×'Ü, ß8þ‚*å8Ô ñ ò ø, ó8þ‚$ ù 8¹ ¦*¨88«0 · ¸ Á8± ¹$ º7{n}Á$ Â% Õ8± ç è8ñ ò ù8´†% ˜ŒÔ æ Ž  ì  , í8÷& ò8´ô$ ö, ø8
ù& ü8´þ*  
8$8Š$” ˜, 8÷ ž8
 , ¤8
¥ © 8 ·8÷ ¾ Ì8¡4¿& Å, Ç8÷(Î, Ñ8
Ò Ö û+ è é ó8âê í ò8ú8"4… Œ Ü ¢, £8
¤ §'¨8œB µ Ê8¡ ¼8÷A È É+ î ï ü8âð ó û8â8"  í «, ¬8
­ °'±8from_raw_socketÁ  Û8¡ É8into_raw_socketÁ Ù Ú% Œ dé2Dí2îŽ$šeŽ eí$$ëš<* ÀÂv\3ÑÛÄìTP“¼©[d\ª¼ƒ\dj½¼ă…0ט¤,ioÁ¦µ ¡¤í¿¬Ê sa_family_tÁ\“Å  ÙÍ!Ú sockaddr_inÁ\ª˜"Û sockaddr_in6Ád·¥#Ü‚o„Å$Ý socklen_tÁL×Ü%ÞAF_INETÁ<â &ÌAF_INET6ÁDï 'ÍAF_UNIXÁ<ù (ΗK4Ž)—K)|6D DEõøèëÛÞ|}ÐÄǵ¸¨«ž¡psTW7:&) ôöØÚ½¿l‰­lÍþZ+,13456789:;<=>?üæNüáC@ Create a `SockAddr` from the underlying storage and its length.Á©ú # SafetyÁÂúüÊKH Caller must ensure that the address family and length match the type ofÁüšKH storage address. For example if `storage.ss_family` is set to `AF_INET`ÁüêKH the `storage` must be initialised as `sockaddr_in`, setting the contentÁìº and length appropriately.ÁÜúæö÷ú<ÿ¢üü‹ ( ÷¤¸  # #[cfg(unix)] {Á„Ñ
use std::io;ÁŒæ  use std::mem;Áüü # use std::os::unix::io::AsRawFd;Á¤
úü¬
2/ use socket2::{SockAddr, Socket, Domain, Type};Áã
úüë
@= let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?;Á° úü¸ ?< // Initialise a `SocketAddr` byte calling `getsockname(2)`.Áüü LI let mut addr_storage: libc::sockaddr_storage = unsafe { mem::zeroed() };ÁüÍ EB let mut len = mem::size_of_val(&addr_storage) as libc::socklen_t;Á
úüŸ
DA // The `getsockname(2)` system call will intiliase `storage` forÁüè
/, // us, setting `len` to the correct length.Á´œ let res = unsafe {ÁÔ· libc::getsockname(ÁüÖ socket.as_raw_fd(),ÁüúFC (&mut addr_storage as *mut libc::sockaddr_storage).cast(),Á¬Å &mut len,Á };Á”ø if res == -1 {Áü/, return Err(io::Error::last_os_error());ÁÍúüÕ>; let address = unsafe { SockAddr::new(addr_storage, len) };Á¤˜ # drop(address);Á # }Á # Ok(())Á¬¢¢üúøoœqþZ**
+¦I99B9ü¾üä;8 Initialise a `SockAddr` by calling the function `init`.Á¤úü¬LI The type of the address storage and length passed to the function `init`Áüý  is OS/architecture specific.Á¢úüªFC The address is zeroed before `init` is called and is thus valid toÁüõKH dereference and read from. The length initialised to the maximum lengthÁœÅ of the storage.ÁÝú±–öúüþKÓ–üÎK¨—üžKý—ìîјúæö«ú¢üü¿( ÷¤ì·™„…Ô™üš#ˆšÂúüÊ2Ášúü‰@‰›ÎúüÖ?ß›üš let (_, address) = unsafe {Áü¾0- SockAddr::try_init(|addr_storage, len| {ÁüóLI // The `getsockname(2)` system call will intiliase `storage` forÁüÄ74 // us, setting `len` to the correct length.Áü€VS if libc::getsockname(socket.as_raw_fd(), addr_storage.cast(), len) == -1 {ÁüÛ/, Err(io::Error::last_os_error())Á¤ } else {Á´¨ Ok(())Á
 })Á }?;Á¤ð¢<‰¬¢d•¼¢¬¢¢ü±vz*-¥.-.*Íì±v ÕÍì–w Ø"±v·vü– >±v·v˜"{lÇ
,±vwº{ê<LNIKìä œq,ã$,<closure_kind>Á0<closure_signature>Á0<upvars>Á00,áxüý(Qüå'LI Constructs a `SockAddr` with the family `AF_UNIX` and the provided path.Á¶(úü¾(:7 Returns an error if the path is longer than `SUN_LEN`.Á$„)´„ë…*¡22*Íì´„ ‰)à´„º„\Â)
1´„õ
ÉB')ü¼+6ü‘*" Set the length of the address.Á¸*údÀ*±–Ñ*úüÙ*IF Caller must ensure that the address up to `length` bytes are properlyÁ„§+
initialised.ÁTÊ+Æ ÆþZœq* Õ+*
3$Ú+lengthÁ4à+üÂ,)ü›," Returns this address's family.Á4Ï,Ç ÇþZ* Ö,*
4$×,üÁ-$ü˜-$! Returns this address's `Domain`.Á4Î-È ÈþZéb* Õ-*
5$Ö-üÖ.$ü£..+ Returns the size of this address in bytes.Áã.É ÉþZœq* ç.*
6$è.üÇ/-ü™/)& Returns a raw pointer to the address.Á4Ô/Ê ÊþZÁ‹* Û/*
7$Ü/üØ01ü­0&# Retuns the address as the storage.ÁTå0þZøo**
8´Eü…2#ü¬1TQ Returns true if this address is in the `AF_INET` (IPv4) family, false otherwise.Á<2Ë ËþZ* š2*
9$2üÑ3#üï2JG Returns true if this address is in the `AF_INET6` (IPv6) family, falseÁt¾3 otherwise.Á<Þ3Ì ÌþZ* æ3*
:$ç3ìÜ5ü¼4\Y Returns true if this address is of a unix socket (for local interprocess communication),Áü5:7 i.e. it is from the `AF_UNIX` family, false otherwise.Á<ã5Í ÍþZ* ë5*
;$ì5üÏ7-üÀ6KH Returns this address as a `SocketAddr` if it is in the `AF_INET` (IPv4)Áü7:7 or `AF_INET6` (IPv6) family, otherwise returns `None`.ÁLÖ7Î ÎþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÀ[* à7*
<$á7ü¤B4üÇAHE Returns this address as a [`SocketAddrV4`] if it is in the `AF_INET`Á\”B family.Át«BÏ ÏþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ\* ºB*
=$»Bü¼D4üÞCIF Returns this address as a [`SocketAddrV6`] if it is in the `AF_INET6`Á\¬D•ÁtÃDÐ ÐþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ÷\* ÒD*
>$ÓDÜ¥FD¨FÑ ÑþZ Ñ* ±F*ä$²FüçH"þZAëAüI%$“IÀ[þZ@@
A²‚$˜IüÂJ$þZCëCüíJ'$ðJ\þZBB
C²‚$õJüòS$þZEëEüT'$ T÷\þZDD
E²‚$¥TäÍ_þZGÀcGüð_:ó_ÒÓÔ ÒþZ Ó c cˆ¢cµ
 `£cÔ– `àB¤GS
Ô©–F ÷_F
G$ø_×þ_ÜâeþZI·ßIü„f"‡fÕÖ ÕþZ ÖþZH ŠfH
I$f¹
,‘f¤ÞfþZ´÷fþZLeLü”g3$—gר ×þZ ØKMM ²gKÍì œg¢eŒŸg
L$³gºéG*,T÷24û2rt ¡¿Àó×ê¤,NO“‘¦NQReadÁ$ƒà NRWriteÁ,‰Ÿ!NSÛëæLNU
IoSliceMutÁTÉö NVÂv\äÑÛNW„¹̺NXnetÁ$·ž"NZè’¾ºN[ShutdownÁDǶMN\ FromRawFdÁL÷­+N^ IntoRawFdÁL¯+N_²™­ÖN`¾2$ƒŸNb¤í,‰¿¬NcÊó?T óNd@Tœ öNeX$¨NfÎGLæØNg—K4ýŽNi—KNi¥LD…¦Nj¥L§NjIDîNk¾Md™¾NlóšNmóNmå7„Û¯Noå7°NoåE4íÄNpñLLõ²NqñL³NqD婸œŠ}fi¬Ú]””O?±25Œã

ô÷œÜêÝýÐÓ¾Á±´¥¨„ßœpsPS?B25öøç錴ü‚)& Owned wrapper around a system socket.Á¬úü°MJ This type simply wraps an instance of a file descriptor (`c_int`) on UnixÁüþMJ and an instance of `SOCKET` on Windows. This is the main type exported byÁüÌ HE this crate and is intended to mirror the raw semantics of sockets onÁü•
FC platforms as closely as possible. Almost all methods correspond to矆
IF precisely one libc or OS API call which is essentially just a "RusticÁü¦ ! translation" of what's below.ÁÈ úüÌ )& ## Converting to and from other typesÁö úüú MJ This type can be freely converted into the network primitives provided byÁüÈ KH the standard library, such as [`TcpStream`] or [`UdpSocket`], using theÁü”
*' [`From`] trait, see the example below.Á¿
úüÃ
&# [`TcpStream`]: std::net::TcpStreamÁüê
&# [`UdpSocket`]: std::net::UdpSocketÁú\• # NotesÁ¡úü¥MJ Some methods that set options on `Socket` require two system calls to setÁüóKH their options without overwriting previously set options. We do this byÁü¿NK first getting the current settings, applying the desired changes, and thenÁüŽPM updating the settings. This means that the operation is **not** atomic. ThisÁüßNK can lead to a data race when two threads are changing options in parallel.Á®úæö‰÷üÏ( ÷üø,Ò÷ü¥(ˆøÎúäÒ // create a TCP listenerÁüï@„ù°úü´=ƒúüò! let address = address.into();ÁÜ” socket.bind(&address)?;ÁİõúÉúüÍ.£ûÚû¬‡íût‹ü¢ü4¿í^Ç fe-&=gsdÌNrrÐ_¬ÀÐ_\îí^vwxyz|}~ƒˆŠŒŽ˜šœžŸü¥2Õfí^uu
v@¼ü”"*4¢"Ù Ùí^Õfu ©"u
w$ª"üô"+D#í^Õfuu
x$#ü½'VüÖ#/, Creates a new socket and sets common flags.ÁŠ$úü’$HE This function corresponds to `socket(2)` on Unix and `WSASocketW` onÁdß$ Windows.Áð$úüø$JG On Unix-like systems, the close-on-exec flag is set on the new socket.ÁüÇ%IF Additionally, on Apple platforms `SOCK_NOSIGPIPE` is set. On Windows,Áü•&'$ the socket is made non-inheritable.ÁÁ&úüÉ&LI [`Socket::new_raw`] can be used if you don't want these flags to be set.Áø6Ç!Ÿôš' 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=socket&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=socket&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/socket.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/socket.2>
* OpenBSD: <https://man.openbsd.org/socket.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/socket>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket>
ÁÄ'éb¡cÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÙcÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
í^«xuu
y¯4È'´Ø'protocolÁDâ'üë*Zü)0- Creates a new socket ready to be configured.ÁÅ)úüÍ)H“äüš*LI Windows and simply creates a new socket, no other configuration is done.Á<ò*éb¡c†ïÍïuu
z¯4ú*´Š+ÅïD”+ò+z¯{§¯{į{{z{ÕfÙcÕfü·88üø6/, Binds this socket to the specified address.Á¬7úü´7KH This function directly corresponds to the `bind(2)` function on WindowsÁl„8
and Unix.ÁøNÇ!Ÿä–8Ž
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=bind&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=bind&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/bind.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/bind.2>
* OpenBSD: <https://man.openbsd.org/bind.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/bind>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind>
Á$¾8ÚÛ Úí^ ÛþZÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
«xu Ã8u
|$Ä8˜<Ê8üÂ@;ü§9B? Initiate a connection on this socket to the specified address.Áî9úüö9FC This function directly corresponds to the `connect(2)` function onÁ¬Á: Windows and Unix.ÁÛ:úüã:GD An error will be returned if `listen` or `connect` has already beenÁܯ; called on this builder.ÁøfÇ!ŸüÏ;©
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=connect&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=connect&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/connect.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/connect.2>
* OpenBSD: <https://man.openbsd.org/connect.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/connect>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect>
Áó;ú\û;€Ú<úü“<A> When using a non-blocking connect (by setting the socket intoÁüÙ<KH non-blocking mode before calling this function), socket option can't beÁü©=EB set *while connecting*. This will cause errors on Windows. SocketÁüó=EB options can be safely set before and after connecting the socket.Á½>úüÅ>KH On Cygwin, a Unix domain socket connect blocks until the server acceptsÁü•?HE it. If the behavior is not expected, try [`Socket::set_no_peercred`]Á”â? (Cygwin only).Á<É@ÜÝ Üí^ ÝþZÂûu Ñ@u
}$Ò@˜<Ø@üŠISü¸AGD Initiate a connection on this socket to the specified address, onlyÁü„BFC only waiting for a certain period of time for the connection to beÁ„ÏB
established.ÁäBúüìBJG Unlike many other methods on `Socket`, this does *not* correspond to aÁü»CKH single C function. It sets the socket to nonblocking mode, connects viaÁü‹DJG connect(2), and then waits for the connection to complete with poll(2)ÁüÚDGD on Unix and select on Windows. When the connection is complete, theÁü¦EEB socket is set back to blocking mode. On Unix, this will loop overÁœðE `EINTR` errors.ÁˆFútF # WarningsÁ£Fúü«FIF The non-blocking state of the socket is overridden by this function -ÁüùFLI it will be returned in blocking mode on success, and in an indeterminateÁ¬ÊG state on failure.ÁäGúüìGJG If the connection request times out, it may still be processing in theÁü»HJG background - a second call to `connect` or `connect_timeout` may fail.Á|IÞß Þí^ ßþZ¦šÂûu ¡Iu
~$¢I²‚$¨ItimeoutÁ<¹Iü‡P6üšMGD Mark a socket as ready to accept incoming connection requests usingÁÌæM [`Socket::accept()`].Á„NúüŒNEB This function directly corresponds to the `listen(2)` function onÁ¬ÖNòüðNúüøNGýÜÄOíýø~Ç!ŸôäO 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=listen&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=listen&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/listen.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/listen.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/listen.2>
* OpenBSD: <https://man.openbsd.org/listen.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/listen.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/listen>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-listen>
Á4ŽPà àí^ÕfÂûu •Pu
$PbacklogÁ<œPü“V6ü÷P85 Accept a new incoming connection from this listener.Á´Qúü¼QDA This function uses `accept4(2)` on platforms that support it andÁü…R&# `accept(2)` platforms that do not.Á°Rúü¸REB This function sets the same flags as in done for [`Socket::new`],Áü‚SLI [`Socket::accept_raw`] can be used if you don't want to set those flags.Áø–Ç!ŸôÓS 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=accept&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=accept&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/accept.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/accept.2>
* OpenBSD: <https://man.openbsd.org/accept.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html> (archived)