diff options
| author | pierwill <pierwill@users.noreply.github.com> | 2021-11-12 13:35:42 -0600 |
|---|---|---|
| committer | pierwill <pierwill@users.noreply.github.com> | 2021-11-13 18:50:29 -0600 |
| commit | 845c25d1b445f76cd4a2c69a6ac61b85f0327626 (patch) | |
| tree | ae28d89bfad0fd492461b17622efa305ae75ed7c /compiler | |
| parent | f31622a50b06e4e5775cf71d1dfe3e59ffc21aa5 (diff) | |
| download | rust-845c25d1b445f76cd4a2c69a6ac61b85f0327626.tar.gz rust-845c25d1b445f76cd4a2c69a6ac61b85f0327626.zip | |
Generate documentation in rustc `rustc_index::newtype_index` macro
The macro now documents all generated items. Documentation notes possible panics and unsafety.
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_index/src/vec.rs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/compiler/rustc_index/src/vec.rs b/compiler/rustc_index/src/vec.rs index 45639bad243..55ccfd0ad23 100644 --- a/compiler/rustc_index/src/vec.rs +++ b/compiler/rustc_index/src/vec.rs @@ -118,32 +118,54 @@ macro_rules! newtype_index { } impl $type { + /// Maximum value the index can take, as a `u32`. $v const MAX_AS_U32: u32 = $max; + /// Maximum value the index can take. $v const MAX: Self = Self::from_u32($max); + /// Creates a new index from a given `usize`. + /// + /// # Panics + /// + /// Will panic if `value` exceeds `MAX`. #[inline] $v const fn from_usize(value: usize) -> Self { assert!(value <= ($max as usize)); + // SAFETY: We just checked that `value <= max`. unsafe { Self::from_u32_unchecked(value as u32) } } + /// Creates a new index from a given `u32`. + /// + /// # Panics + /// + /// Will panic if `value` exceeds `MAX`. #[inline] $v const fn from_u32(value: u32) -> Self { assert!(value <= $max); + // SAFETY: We just checked that `value <= max`. unsafe { Self::from_u32_unchecked(value) } } + /// Creates a new index from a given `u32`. + /// + /// # Safety + /// + /// The provided value must be less than or equal to the maximum value for the newtype. + /// Providing a value outside this range is undefined due to layout restrictions. + /// + /// Prefer using `from_u32`. #[inline] $v const unsafe fn from_u32_unchecked(value: u32) -> Self { Self { private: value } } - /// Extracts the value of this index as an integer. + /// Extracts the value of this index as a `usize`. #[inline] $v const fn index(self) -> usize { self.as_usize() |
