pdk-classy 1.9.1-alpha.2

PDK Classy
Documentation
// Copyright (c) 2026, Salesforce, Inc.,
// All rights reserved.
// For full license text, see the LICENSE.txt file

use std::{any::type_name, marker::PhantomData};

#[derive(thiserror::Error, Clone, Copy, PartialEq, Eq)]
/// Indicates that the type has already been extracted from the context before and it implemented [`FromContextOnce`](super::FromContextOnce).
pub struct AlreadyExtracted<T> {
    _type: PhantomData<T>,
}

impl<T> Default for AlreadyExtracted<T> {
    fn default() -> Self {
        Self { _type: PhantomData }
    }
}

impl<T> std::fmt::Debug for AlreadyExtracted<T> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let ty = type_name::<Self>();
        f.debug_struct(ty).finish()
    }
}

impl<T> std::fmt::Display for AlreadyExtracted<T> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let ty = type_name::<T>();
        f.write_fmt(format_args!(r#"Type "{ty} already extracted"#))
    }
}