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