alright 0.1.4

A Safe-running, error-free, error-transmission without loss 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::Transform,
            exception_utils::ExceptionUtils,
            template_display::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
}