tf2_rs 0.1.0

ROS 2 TF2 bindings for Rust using cxx and rclrs
use crate::ffi::ffi::{Tf2Errc, Tf2Status};
use thiserror::Error;

#[derive(Error, Debug)]
pub enum Tf2Error {
    #[error("tf2 lookup error: {0}")]
    Lookup(String),
    #[error("tf2 connectivity error: {0}")]
    Connectivity(String),
    #[error("tf2 extrapolation error: {0}")]
    Extrapolation(String),
    #[error("tf2 invalid argument: {0}")]
    InvalidArgument(String),
    #[error("tf2 error: {0}")]
    Other(String),
}

pub fn check_status(st: Tf2Status) -> Result<(), Tf2Error> {
    match st.code {
        Tf2Errc::Ok => Ok(()),
        Tf2Errc::Lookup => Err(Tf2Error::Lookup(st.message)),
        Tf2Errc::Connectivity => Err(Tf2Error::Connectivity(st.message)),
        Tf2Errc::Extrapolation => Err(Tf2Error::Extrapolation(st.message)),
        Tf2Errc::InvalidArgument => Err(Tf2Error::InvalidArgument(st.message)),
        Tf2Errc::Other => Err(Tf2Error::Other(st.message)),
        _ => Err(Tf2Error::Other(st.message)),
    }
}