GatoMQTT 0.2.0

no_std, no_alloc MQTT 3.1.1 broker library for embedded Rust. Bounded session registry, retained messages, QoS 1, transport-agnostic (plain TCP or TLS via TlsSession trait).
Documentation
use mqttrs::QoS;

pub const fn qos_rank(qos: QoS) -> u8 {
    match qos {
        QoS::AtMostOnce => 0,
        QoS::AtLeastOnce => 1,
        QoS::ExactlyOnce => 2,
    }
}

pub fn max_qos(lhs: QoS, rhs: QoS) -> QoS {
    if qos_rank(lhs) >= qos_rank(rhs) {
        lhs
    } else {
        rhs
    }
}

pub fn min_qos(lhs: QoS, rhs: QoS) -> QoS {
    if qos_rank(lhs) <= qos_rank(rhs) {
        lhs
    } else {
        rhs
    }
}