| Crates.io | stun-proto |
| lib.rs | stun-proto |
| version | 1.0.0-alpha4 |
| created_at | 2024-06-16 12:19:38.753809+00 |
| updated_at | 2025-09-23 01:15:59.863854+00 |
| description | STUN protocol in a sans-IO fashion |
| homepage | |
| repository | https://github.com/ystreet/stun-proto |
| max_upload_size | |
| id | 1273492 |
| size | 105,900 |
Repository containing a sans-IO implementation of the STUN (RFC5389/RFC8489) protocol written in the Rust programming language.
A couple of reasons: reusability, and testability.
Without being bogged down in the details of how IO happens, the same sans-IO implementation can be used without prescribing the IO pattern that an application must follow. Instead, the application (or parent library) has much more freedom in how bytes are transferred between peers. It's also possible to us a sans-IO library in either a synchronous or within an asynchronous runtime.
sans-IO also allows easy testing of any specific state the sans-IO implementation might find itself in. Combined with a comprehensive test-suite, this provides assurance that the implementation behaves as expected under all circumstances.
For other examples of sans-IO implementations, take a look at:
If you are looking for an implementation of a TURN client, have a look at
turn-client-proto.
If you are looking for an implementation of a TURN server, have a look at
turn-server-proto.
Both turn-client-proto and turn-server-proto aim to implement the following
RFCs.
If you are looking for an implementation of ICE, have a look at rice-proto which aims to implement the following RFCs.