orx_funvec/d_any/
scalars.rs

1use crate::{
2    empty_vec::EmptyVec, funvec_ref::FunVecRef, funvec_val::FunVec, index::IntoIndex,
3    scalar_as_vec::ScalarAsVec,
4};
5
6// val
7impl<const DIM: usize, T: Clone + Copy> FunVec<DIM, T> for ScalarAsVec<T> {
8    #[inline(always)]
9    fn at<Idx: IntoIndex<DIM>>(&self, _: Idx) -> Option<T> {
10        Some(self.0)
11    }
12}
13
14impl<const DIM: usize, T: Clone + Copy> FunVec<DIM, T> for EmptyVec<T> {
15    fn at<Idx: IntoIndex<DIM>>(&self, _: Idx) -> Option<T> {
16        None
17    }
18}
19
20// ref
21impl<const DIM: usize, T> FunVecRef<DIM, T> for ScalarAsVec<T> {
22    #[inline(always)]
23    fn ref_at<Idx: IntoIndex<DIM>>(&self, _: Idx) -> Option<&T> {
24        Some(&self.0)
25    }
26}
27
28impl<const DIM: usize, T: ?Sized> FunVecRef<DIM, T> for EmptyVec<T> {
29    #[inline(always)]
30    fn ref_at<Idx: IntoIndex<DIM>>(&self, _: Idx) -> Option<&T> {
31        None
32    }
33}