ih 0.1.15

interface proto for hpc
Documentation
use anyhow::Result;
use pb_jelly::Message;

use crate::{Bin, Code, CodeBody, CodeLi, Json, State};

pub fn try_into(err: anyhow::Error) -> Result<CodeBody> {
  if let Some(t) = err.downcast_ref::<CodeLi>() {
    return Ok((State::CODE_LI, t.serialize_to_vec()));
  }

  if let Some(t) = err.downcast_ref::<State>() {
    return Ok((*t, Default::default()));
  }

  if let Some(t) = err.downcast_ref::<Json>() {
    return Ok((State::JSON, t.inner.as_bytes().into()));
  }

  if let Some(t) = err.downcast_ref::<Code>() {
    return Ok((State::CODE, Default::default()));
  }

  match err.downcast::<Bin>() {
    Ok(t) => Ok((State::BIN, t.inner)),
    Err(err) => Err(err),
  }
}

#[cfg(feature = "err_code_li")]
pub mod code_li;
#[cfg(feature = "err_code_li")]
pub use code_li::code_li;

#[cfg(feature = "err_code")]
pub mod code;
#[cfg(feature = "err_code")]
pub use code::code;

#[cfg(feature = "err_json")]
pub mod json;
#[cfg(feature = "err_json")]
pub use json::json;

#[cfg(feature = "err_bin")]
pub mod bin;
#[cfg(feature = "err_bin")]
pub use bin::bin;

pub mod state;