phanta 0.0.0

phanta implements several primitives and utilities for dealing with `PhantomData`
Documentation
/*
    Appellation: phanta <library>
    Contrib: FL03 <jo3mccain@icloud.com>
*/
//! # phanta
//!
//! `phanta` implements several primitives and utilities for dealing with PhantomData
#![cfg_attr(not(feature = "std"), no_std)]
#![crate_name = "phanta"]

#[cfg(feature = "alloc")]
extern crate alloc;

use core::marker::PhantomData;
    
/// A phantom type that represents a class
#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd,)]
pub struct Class<K> {
    _cls: PhantomData<K>
}

impl<K> Class<K> {
    pub fn new() -> Self {
        Self {
            _cls: PhantomData::<K>,
        }
    }
}



pub trait InitPhantom {
    fn phantom() -> PhantomData<Self> {
        PhantomData::<Self>
    }

    fn is_type<T>() -> bool {
        core::any::type_name::<Self>() == core::any::type_name::<T>()
    }
}

impl<T> InitPhantom for T {}

pub mod prelude {}