use tonic::Status;
use crate::wire::encode::{EncodeOptions, encode};
use crate::{Aerro, ServiceFailure};
pub trait IntoStatus {
fn into_status(self, opts: &EncodeOptions) -> Status;
fn into_status_default(self) -> Status
where
Self: Sized,
{
self.into_status(&EncodeOptions::default())
}
}
impl<E: Aerro> IntoStatus for E {
fn into_status(self, opts: &EncodeOptions) -> Status {
encode(&ServiceFailure::new(self), opts)
}
}
impl<E: Aerro> IntoStatus for ServiceFailure<E> {
fn into_status(self, opts: &EncodeOptions) -> Status {
encode(&self, opts)
}
}