1 #![feature(generic_const_exprs)]
2 #![allow(incomplete_features)]
4 trait TensorDimension {
8 trait TensorSize: TensorDimension {
9 fn size(&self) -> [usize; Self::DIM];
12 trait Broadcastable: TensorSize + Sized {
14 fn lazy_updim<const NEWDIM: usize>(&self, size: [usize; NEWDIM]) {}
17 struct BMap<'a, R, T: Broadcastable, F: Fn(T::Element) -> R, const DIM: usize> {
22 impl<'a, R, T: Broadcastable, F: Fn(T::Element) -> R, const DIM: usize> TensorDimension
23 for BMap<'a, R, T, F, DIM>
25 const DIM: usize = DIM;
27 impl<'a, R, T: Broadcastable, F: Fn(T::Element) -> R, const DIM: usize> TensorSize
28 for BMap<'a, R, T, F, DIM>
30 fn size(&self) -> [usize; DIM] {
31 //~^ ERROR: method not compatible with trait [E0308]
33 //~^ ERROR: unconstrained generic constant
34 //~| ERROR: mismatched types