From 44023389086cd4e685377bac95317d8be44d4be5 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 31 Mar 2019 07:23:39 -0300 Subject: [PATCH] Revert "do not expose that RawId is stored in a u32" This reverts commit 9b106e92791c3da632563510fdc8e185bae1b287. --- src/raw_id.rs | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/raw_id.rs b/src/raw_id.rs index b01177fe..c1bdfbb4 100644 --- a/src/raw_id.rs +++ b/src/raw_id.rs @@ -2,8 +2,8 @@ use std::fmt; use std::num::NonZeroU32; /// The "raw-id" is used for interned keys in salsa -- it is basically -/// a newtype'd integer. Typically, it is wrapped in a type of your -/// own devising. For more information about interned keys, see [the +/// a newtype'd u32. Typically, it is wrapped in a type of your own +/// devising. For more information about interned keys, see [the /// interned key RFC][rfc]. /// /// # Creating a `RawId` @@ -18,23 +18,16 @@ use std::num::NonZeroU32; /// assert_eq!(raw_id1, raw_id2); /// ``` /// -/// # Converting to a usize +/// # Converting to a u32 or usize /// /// Normally, there should be no need to access the underlying integer /// in a `RawId`. But if you do need to do so, you can convert to a -/// `usize` using the `as_usize` method or the `From` impl. +/// `usize` using the `as_u32` or `as_usize` methods or the `From` impls. /// /// ``` /// # use salsa::RawId; /// let raw_id = RawId::from(22_u32); -/// let value = raw_id.as_usize(); -/// assert_eq!(value, 22); -/// ``` -/// -/// ``` -/// # use salsa::RawId; -/// let raw_id = RawId::from(22_u32); -/// let value = usize::from(raw_id); +/// let value = u32::from(raw_id); /// assert_eq!(value, 22); /// ``` /// @@ -72,9 +65,34 @@ impl RawId { } } + /// Convert this raw-id into a u32 value. + /// + /// ``` + /// # use salsa::RawId; + /// let raw_id = RawId::from(22_u32); + /// let value = raw_id.as_usize(); + /// assert_eq!(value, 22); + /// ``` + pub fn as_u32(self) -> u32 { + self.value.get() - 1 + } + /// Convert this raw-id into a usize value. + /// + /// ``` + /// # use salsa::RawId; + /// let raw_id = RawId::from(22_u32); + /// let value = raw_id.as_usize(); + /// assert_eq!(value, 22); + /// ``` pub fn as_usize(self) -> usize { - (self.value.get() - 1) as usize + self.as_u32() as usize + } +} + +impl From for u32 { + fn from(raw: RawId) -> u32 { + raw.as_u32() } }