pdk_classy/extract/
already_extracted.rs1use std::{any::type_name, marker::PhantomData};
6
7#[derive(thiserror::Error, Clone, Copy, PartialEq, Eq)]
8pub struct AlreadyExtracted<T> {
10 _type: PhantomData<T>,
11}
12
13impl<T> Default for AlreadyExtracted<T> {
14 fn default() -> Self {
15 Self { _type: PhantomData }
16 }
17}
18
19impl<T> std::fmt::Debug for AlreadyExtracted<T> {
20 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
21 let ty = type_name::<Self>();
22 f.debug_struct(ty).finish()
23 }
24}
25
26impl<T> std::fmt::Display for AlreadyExtracted<T> {
27 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
28 let ty = type_name::<T>();
29 f.write_fmt(format_args!(r#"Type "{ty} already extracted"#))
30 }
31}