use std::marker::PhantomData; use himark as hi; #[hi::marker] trait Array {} #[hi::marker] trait Uniform {} #[hi::marker] trait V {} #[hi::mark(Array, Uniform, V)] pub struct EmptyStruct; #[hi::mark(Array, Uniform, V)] pub enum EmptyEnum {} pub mod type_ { use super::*; #[hi::mark(Array, Uniform, V)] pub struct TestSingle(PhantomData); #[hi::mark(Array, Uniform, V)] pub struct TestMany(PhantomData<(T, B, C)>); #[hi::mark(Array, Uniform, V)] pub struct TestWhereBoundSingle(PhantomData) where T: Default; #[hi::mark(Array, Uniform, V)] pub struct TestWhereBoundMany(PhantomData<(T, B)>) where T: Default, B: core::fmt::Debug; #[hi::mark(Array, Uniform, V)] pub struct TestInnerBoundSingle(PhantomData); #[hi::mark(Array, Uniform, V)] pub struct TestInnerBoundMany(PhantomData<(T, B)>); #[hi::mark(Array, Uniform, V)] pub struct TestMixedBoundMany(PhantomData<(T, B)>) where B: ?Sized; } pub mod const_ { use super::*; #[hi::mark(Array, Uniform, V)] pub struct TestSingle; #[hi::mark(Array, Uniform, V)] pub struct TestMany; #[hi::mark(Array, Uniform, V)] pub struct TestSingleBound where [i32; N]: Default; #[hi::mark(Array, Uniform, V)] pub struct TestManyBound where [i32; N]: Default, [(); N]: Clone; } #[hi::mark(Array, Uniform, V)] pub struct TestAll(PhantomData) where [T; N]: Sized;