use core::marker::PhantomData;
#[derive(Copy, Clone, Eq, PartialEq)]
pub enum Kind {
Single,
Slice,
}
pub struct PointerInfo<Pointer, NonOptionalPointer, Child> {
_pointer: PhantomData<Pointer>,
_non_optional_pointer: PhantomData<NonOptionalPointer>,
_child: PhantomData<Child>,
}
impl<Pointer, NonOptionalPointer, Child> PointerInfo<Pointer, NonOptionalPointer, Child> {
pub fn kind(&self) -> Kind {
unreachable!("comptime reflection — resolved at type level in Rust")
}
pub fn is_optional(&self) -> bool {
unreachable!("comptime reflection — resolved at type level in Rust")
}
pub fn is_const(&self) -> bool {
unreachable!("comptime reflection — resolved at type level in Rust")
}
pub fn parse(_options: ParseOptions) -> Self {
unreachable!("comptime reflection — resolved at type level in Rust")
}
}
#[derive(Copy, Clone)]
pub struct ParseOptions {
pub allow_const: bool,
pub allow_slices: bool,
}
impl Default for ParseOptions {
fn default() -> Self {
Self {
allow_const: true,
allow_slices: true,
}
}
}
pub trait AddConst {
type Output;
}