hermes-logging-components 0.1.0

Implementation of an IBC Relayer in Rust, as a library
Documentation
use cgp::prelude::*;

use crate::impls::global::GetGlobalLogger;
use crate::impls::ignore::IgnoreLog;
use crate::traits::has_logger::{
    GlobalLoggerGetter, HasLoggerType, LoggerGetterComponent, ProvideLoggerType,
};
use crate::traits::logger::{CanLog, LoggerComponent};

pub struct ProvideNoLogger;

pub struct NoLogger;

pub struct NoLoggerComponents;

pub trait CanUseNoLogger<Details>: CanLog<Details>
where
    Details: Send + Sync,
{
}

impl<Details> CanUseNoLogger<Details> for NoLogger where Details: Send + Sync {}

impl<Context> ProvideLoggerType<Context> for ProvideNoLogger
where
    Context: Async,
{
    type Logger = NoLogger;
}

impl<Context> GlobalLoggerGetter<Context> for ProvideNoLogger
where
    Context: HasLoggerType<Logger = NoLogger>,
{
    fn global_logger() -> &'static NoLogger {
        &NoLogger
    }
}

impl HasComponents for NoLogger {
    type Components = NoLoggerComponents;
}

delegate_components! {
    NoLoggerComponents {
        LoggerComponent: IgnoreLog,
    }
}

delegate_components! {
    ProvideNoLogger {
        LoggerGetterComponent: GetGlobalLogger,
    }
}