opencv 0.22.0

Rust bindings for OpenCV
Documentation
use std::fmt;

use crate::{
    dnn::DictValue,
    Result,
    sys,
};

impl DictValue {
    #[inline]
    pub fn get_f64(&self, idx: i32) -> Result<f64> {
        let me = self.as_raw_DictValue();
        cpp!(unsafe [me as "const dnn::DictValue*", idx as "int"] -> sys::cv_return_value_double as "cv_return_value_double" {
            try {
                return { Error::Code::StsOk, NULL, me->get<double>(idx) };
            } CVRS_CATCH(cv_return_value_double)
        }).into_result()
    }

    #[inline]
    pub fn get_i64(&self, idx: i32) -> Result<i64> {
        let me = self.as_raw_DictValue();
        cpp!(unsafe [me as "const dnn::DictValue*", idx as "int"] -> sys::cv_return_value_int64 as "cv_return_value_int64" {
            try {
                return { Error::Code::StsOk, NULL, me->get<int64>(idx) };
            } CVRS_CATCH(cv_return_value_int64)
        }).into_result()
    }

    #[inline]
    pub fn get_string(&self, idx: i32) -> Result<String> {
        let me = self.as_raw_DictValue();
        cpp!(unsafe [me as "const dnn::DictValue*", idx as "int"] -> sys::cv_return_value_char_X as "cv_return_value_char_X" {
            try {
                return { Error::Code::StsOk, NULL, strdup(me->get<String>(idx).c_str()) };
            } CVRS_CATCH(cv_return_value_char_X)
        }).into_result().map(crate::templ::receive_string_mut)
    }
}

impl fmt::Debug for DictValue {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        let mut d = f.debug_struct("DictValue");
        d.field("is_int", &self.is_int().map_err(|_| fmt::Error)?)
            .field("is_real", &self.is_real().map_err(|_| fmt::Error)?)
            .field("is_string", &self.is_string().map_err(|_| fmt::Error)?);
        if self.is_string().map_err(|_| fmt::Error)? {
            d.field("value", &self.get_string(-1).map_err(|_| fmt::Error)?);
        } else if self.is_int().map_err(|_| fmt::Error)? {
            d.field("value", &self.get_i64(-1).map_err(|_| fmt::Error)?);
        } else if self.is_real().map_err(|_| fmt::Error)? {
            d.field("value", &self.get_f64(-1).map_err(|_| fmt::Error)?);
        }
        d.finish()
    }
}