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<Self::Element> {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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<Self::Element> {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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<T> {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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<Self::Element> 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<Self::Element> 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<Self::Element>;
   |                                   ^^^^^^^^^ required by this bound in `Broadcastable::bget`
help: try adding a `where` bound
   |
LL |     fn bget(&self, index: [usize; DIM]) -> Option<Self::Element> 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`.
