work
parent
e96f9ab8c7
commit
9290f62a26
@ -0,0 +1,53 @@
|
||||
//! For printing features etc.
|
||||
use std::{
|
||||
fmt,
|
||||
};
|
||||
use cfg_if::cfg_if;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
pub enum Enabled
|
||||
{
|
||||
On,
|
||||
Off,
|
||||
}
|
||||
|
||||
trait Feature
|
||||
{
|
||||
const DEFAULT: Enabled;
|
||||
const CURRENT: Enabled;
|
||||
|
||||
const fn is_default() -> bool
|
||||
{
|
||||
Self::DEFAULT == Self::CURRENT
|
||||
}
|
||||
|
||||
const fn is_enabled() -> bool
|
||||
{
|
||||
Self::CURRENT == Enabled::On
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export] macro_rules! feature {
|
||||
($name:literal) => {
|
||||
cfg_if!{
|
||||
if #[cfg(feature=$name)] {
|
||||
//TODO: create anony type that impl's Feature up threre, and such
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Features;
|
||||
|
||||
impl fmt::Display for Features
|
||||
{
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result
|
||||
{
|
||||
//TODO: print features
|
||||
}
|
||||
}
|
Loading…
Reference in new issue