I tried this code: ([try it in a playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a8d76b8c3e6d1d90ef67b26b8b26af88)) ```rust use std::hash::BuildHasher; use std::collections::HashMap; trait H: Send + Sync + Clone + BuildHasher { } struct I<'i, RS: H> { h: &'i HashMap<i32, i32, RS>, s: VeryVeryLongTypeName } impl<'i, RS: H> I<'i, RS> { const CHUNK_SIZE: usize = VeryVeryLongTypeName::CHUNK_SIZE; fn go(&mut self) { self.s.chunks.push(Box::new([0; Self::CHUNK_SIZE])); // ERROR } } struct VeryVeryLongTypeName { chunks: Vec<Box<[u8; Self::CHUNK_SIZE]>> } impl VeryVeryLongTypeName { const CHUNK_SIZE: usize = 69; } ``` I expect this code to either compile fine or provide a warning similar to #76200. However, I see an error: ``` 11 | impl<'i, RS: H> I<'i, RS> { | --- help: consider adding an explicit lifetime bound...: `RS: 'i +` ... 15 | self.s.chunks.push(Box::new([0; Self::CHUNK_SIZE])); | ^^^^ ...so that the type `RS` will meet its required lifetime bounds ``` I don't understand why `RS: 'i` is needed for accessing a constant off of `Self`. As one might expect, replacing `Self::CHUNK_SIZE` with `VeryVeryLongTypeName::CHUNK_SIZE` works around the issue. Tested with stable `1.55.0` and `1.57.0-nightly (2021-09-23 2b862bed9889808b6962)`.