alright 0.1.2

A Safe-running, error-free, error-transmission without loss, 0 `Any` and 0 `unsafe block` error handling system - Aiming to provide a better development experience for the application layer.
Documentation
use crate::{
    modules::types::{
        exception::BaseException, 
        property::Property
    },
    traits::{
        Transform,
        ExceptionUtils,
        TemplateDisplay
    },
};
use std::error::Error;
use std::fmt::{
    Display,
    Formatter
};

impl<T: Transform> Error for BaseException<T> {}
impl<T: Transform> Transform for BaseException<T> {}
impl<T: Transform> TemplateDisplay<T> for BaseException<T> {}

impl<T: Transform> Display for BaseException<T> {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        self.template_fmt(f)
    }
}

impl<T: Transform + Clone> ExceptionUtils<T> for BaseException<T> {
    fn get_property (&self) -> Box<Property<T>>
    where Self: Transform
    {
        self.property.clone()
    }

    fn set_property (&mut self, property: Box<Property<T>>) {
        self.property = property;
    }

    fn get_ptr (&self) -> T {
        self.target_ptr.clone()
    }

    fn set_ptr (&mut self, ptr: T) {
        self.target_ptr = ptr;
    }
}

impl<T: Transform + ExceptionUtils<T>> From<T> for BaseException<T> {
    fn from(value: T) -> Self {
        T::down(&value)
    }
}

impl<T: Transform> BaseException<T> {
    // TODO: Builder
}