error[E0308]: method not compatible with trait --> $DIR/issue-83765.rs:47:5 | LL | fn size(&self) -> [usize; DIM] { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Self::DIM`, found `DIM` | = note: expected constant `Self::DIM` found constant `DIM` error[E0308]: method not compatible with trait --> $DIR/issue-83765.rs:55:5 | LL | fn bget(&self, index: [usize; DIM]) -> Option { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Self::DIM`, found `DIM` | = note: expected constant `Self::DIM` found constant `DIM` error[E0308]: method not compatible with trait --> $DIR/issue-83765.rs:84:5 | LL | fn size(&self) -> [usize; DIM] { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Self::DIM`, found `DIM` | = note: expected constant `Self::DIM` found constant `DIM` error[E0308]: method not compatible with trait --> $DIR/issue-83765.rs:96:5 | LL | fn bget(&self, index: [usize; DIM]) -> Option { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Self::DIM`, found `DIM` | = note: expected constant `Self::DIM` found constant `DIM` error[E0308]: method not compatible with trait --> $DIR/issue-83765.rs:108:5 | LL | fn size(&self) -> [usize; 1] { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Self::DIM`, found `1` | = note: expected constant `Self::DIM` found constant `1` error[E0308]: method not compatible with trait --> $DIR/issue-83765.rs:115:5 | LL | fn bget(&self, index: [usize; 1]) -> Option { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Self::DIM`, found `1` | = note: expected constant `Self::DIM` found constant `1` error: unconstrained generic constant --> $DIR/issue-83765.rs:58:13 | LL | if !self.inbounds(index) { | ^^^^ | note: required by a bound in `TensorSize::inbounds` --> $DIR/issue-83765.rs:14:39 | LL | fn inbounds(&self, index: [usize; Self::DIM]) -> bool { | ^^^^^^^^^ required by this bound in `TensorSize::inbounds` help: try adding a `where` bound | LL | fn bget(&self, index: [usize; DIM]) -> Option where [(); Self::DIM]: { | ++++++++++++++++++++++ error[E0308]: mismatched types --> $DIR/issue-83765.rs:58:27 | LL | if !self.inbounds(index) { | ^^^^^ expected `Self::DIM`, found `DIM` | = note: expected constant `Self::DIM` found constant `DIM` error: unconstrained generic constant --> $DIR/issue-83765.rs:63:25 | LL | let size = self.size(); | ^^^^ | note: required by a bound in `TensorSize::size` --> $DIR/issue-83765.rs:13:31 | LL | fn size(&self) -> [usize; Self::DIM]; | ^^^^^^^^^ required by this bound in `TensorSize::size` help: try adding a `where` bound | LL | fn bget(&self, index: [usize; DIM]) -> Option where [(); Self::DIM]: { | ++++++++++++++++++++++ error[E0277]: the trait bound `[usize; T::DIM]: Default` is not satisfied --> $DIR/issue-83765.rs:65:41 | LL | let newindex: [usize; T::DIM] = Default::default(); | ^^^^^^^^^^^^^^^^^^ the trait `Default` is not implemented for `[usize; T::DIM]` | help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement | LL | impl<'a, T: Broadcastable, const DIM: usize> Broadcastable for LazyUpdim<'a, T, { T::DIM }, DIM> where [usize; T::DIM]: Default { | ++++++++++++++++++++++++++++++ error: unconstrained generic constant --> $DIR/issue-83765.rs:86:24 | LL | self.reference.size() | ^^^^ | note: required by a bound in `TensorSize::size` --> $DIR/issue-83765.rs:13:31 | LL | fn size(&self) -> [usize; Self::DIM]; | ^^^^^^^^^ required by this bound in `TensorSize::size` help: try adding a `where` bound | LL | fn size(&self) -> [usize; DIM] where [(); Self::DIM]: { | ++++++++++++++++++++++ error[E0308]: mismatched types --> $DIR/issue-83765.rs:86:9 | LL | self.reference.size() | ^^^^^^^^^^^^^^^^^^^^^ expected `DIM`, found `Self::DIM` | = note: expected constant `DIM` found constant `Self::DIM` error: unconstrained generic constant --> $DIR/issue-83765.rs:98:9 | LL | self.reference.bget(index).map(&self.closure) | ^^^^^^^^^^^^^^ | note: required by a bound in `Broadcastable::bget` --> $DIR/issue-83765.rs:21:35 | LL | fn bget(&self, index: [usize; Self::DIM]) -> Option; | ^^^^^^^^^ required by this bound in `Broadcastable::bget` help: try adding a `where` bound | LL | fn bget(&self, index: [usize; DIM]) -> Option where [(); Self::DIM]: { | ++++++++++++++++++++++ error[E0308]: mismatched types --> $DIR/issue-83765.rs:98:29 | LL | self.reference.bget(index).map(&self.closure) | ^^^^^ expected `Self::DIM`, found `DIM` | = note: expected constant `Self::DIM` found constant `DIM` error: aborting due to 14 previous errors Some errors have detailed explanations: E0277, E0308. For more information about an error, try `rustc --explain E0277`.