azure-iot-rs 0.7.2

Rust wrappers for Azure IOT C SDK
Documentation
use azure_iot_rs_sys::{IOTHUB_CLIENT_RESULT, IOTHUB_CLIENT_RESULT_TAG_IOTHUB_CLIENT_OK};
use thiserror::Error;

#[derive(Error, Debug)]
pub enum IotError {
    #[error("SDK error: {0}")]
    Sdk(IOTHUB_CLIENT_RESULT),
    #[error("Null pointer returned from SDK")]
    NullPtr,
    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),
    #[error("CString error: {0}")]
    Null(#[from] std::ffi::NulError),

    #[error("HTTP error: {0}")]
    Http(u16),
}

impl IotError {
    pub fn check_sdk_result(result: IOTHUB_CLIENT_RESULT) -> Result<(), IotError> {
        if result == IOTHUB_CLIENT_RESULT_TAG_IOTHUB_CLIENT_OK {
            Ok(())
        } else {
            Err(Self::Sdk(result))
        }
    }
}