Encoders and decoders for STUN (RFC 5389).
```rust use bytecodec::{DecodeExt, EncodeExt}; use stuncodec::{Message, MessageClass, MessageDecoder, MessageEncoder, TransactionId}; use stuncodec::rfc5389::{attributes::Software, Attribute, Method};
// Creates a message let mut message = Message::new( MessageClass::Request, Method::Binding, TransactionId::new([3; 12]), ); message.pushattribute(Attribute::Software(Software::new("foo".toowned())?));
// Encodes the message
let mut encoder = MessageEncoder::new();
let bytes = encoder.encodeintobytes(message.clone())?;
asserteq!(
bytes,
[
0, 1, 0, 8, 33, 18, 164, 66, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 128, 34, 0, 3,
102, 111, 111, 0
]
);
//!
// Decodes the message
let mut decoder = MessageDecoder::