Current section
Files
Jump to
Current section
Files
native/kameleoon_elixir_bridge/src/error_ex.rs
use kameleoon_core::error::KameleoonError;
use rustler::Error as NifError;
use crate::utils_ex::ArcStr;
#[derive(Debug, rustler::NifException)]
#[module = "Kameleoon.Error"]
#[rustler(encode)]
pub(crate) struct ErrorEx {
code: ArcStr,
message: ArcStr,
details: Option<ArcStr>,
}
impl From<&KameleoonError> for ErrorEx {
fn from(value: &KameleoonError) -> Self {
Self {
code: ArcStr::from(format!("{:?}", value.code())),
message: ArcStr::from(value.message().to_owned()),
details: None,
}
}
}
pub(crate) fn to_nif_error(err: KameleoonError) -> NifError {
NifError::Term(Box::new(ErrorEx::from(&err)))
}