mqtt-frame 0.1.4

A lightweight, Sans-I/O MQTT v3.1.1 and v5.0 protocol codec and parser for Danube.
Documentation
use std::io;
use thiserror::Error;

#[derive(Debug, Error)]
pub enum MqttError {
    #[error("I/O error: {0}")]
    Io(#[from] io::Error),

    #[error("Malformed packet: {0}")]
    MalformedPacket(&'static str),

    #[error("Protocol error: {0}")]
    ProtocolError(String),

    #[error("Unsupported protocol version")]
    UnsupportedVersion,

    #[error("Payload too large")]
    PayloadTooLarge,
}

impl From<MqttError> for io::Error {
    fn from(err: MqttError) -> Self {
        match err {
            MqttError::Io(e) => e,
            other => io::Error::new(io::ErrorKind::InvalidData, other.to_string()),
        }
    }
}