[ I suspect the following might have already been discussed long time ago, I'm sorry if I'm repeating something everyone already knew. If there is already an existing conclusion about this, please let me know, thanks. ]
There have been many questions asked about the future of
std::net, and there have been real efforts to replace it (or amend it?) such as
net2 crate (deprecated) and
socket2 crate, not to mention crates like
nix to cover sockets too, only the Unix platforms.
nix on macOS, Linux and Windows, it seems to me that a couple of weak spots of
- Its API does not support custom operations (i.e.
setsockopt) before calling
- It does not expose a
Socketstruct or trait because this name is already defined as platform-dependent.
Clearly these two points are related. Inspired by an old RFC issue, I was wondering if there have been any effort to add a
Similar to what mentioned in the linked old issue,
- Wrap around a platform-dependent
Socketto present a platform-independent socket interface as close to a traditional socket as possible.
- Allow custom operations before calling
bind()on the inner socket.
In addition, the existing struct can be updated to support
SocketBuilder as well, for example,
UdpSocket can have a new method like :
bind_builder(builder: SocketBuilder) -> io::Result<UdpSocket>. This allows the apps to continue using
UdpSocket as the main API.
Is there a plan for a RFC / pre-RFC about enhancing
std::net to allow custom operations before calling
bind() or somehow exposing a
socket based API?