pub struct InternId { /* private fields */ }
Expand description
The “raw-id” is used for interned keys in salsa – it is basically 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.
§Creating a InternId
InternId values can be constructed using the From
impls,
which are implemented for u32
and usize
:
let intern_id1 = InternId::from(22_u32);
let intern_id2 = InternId::from(22_usize);
assert_eq!(intern_id1, intern_id2);
§Converting to a u32 or usize
Normally, there should be no need to access the underlying integer
in a InternId
. But if you do need to do so, you can convert to a
usize
using the as_u32
or as_usize
methods or the From
impls.
let intern_id = InternId::from(22_u32);
let value = u32::from(intern_id);
assert_eq!(value, 22);
§Illegal values
Be warned, however, that InternId
values cannot be created from
arbitrary values – in particular large values greater than
InternId::MAX
will panic. Those large values are reserved so that
the Rust compiler can use them as sentinel values, which means
that (for example) Option<InternId>
is represented in a single
word.
InternId::from(InternId::MAX);
Implementations§
source§impl InternId
impl InternId
sourcepub const MAX: u32 = 4_294_967_040u32
pub const MAX: u32 = 4_294_967_040u32
The maximum allowed InternId
. This value can grow between
releases without affecting semver.
sourcepub const unsafe fn new_unchecked(value: u32) -> Self
pub const unsafe fn new_unchecked(value: u32) -> Self
Trait Implementations§
source§impl InternKey for InternId
impl InternKey for InternId
source§fn from_intern_id(v: InternId) -> InternId
fn from_intern_id(v: InternId) -> InternId
u32
value.source§fn as_intern_id(&self) -> InternId
fn as_intern_id(&self) -> InternId
u32
with which the intern-key was created.source§impl Ord for InternId
impl Ord for InternId
source§impl PartialEq for InternId
impl PartialEq for InternId
source§impl PartialOrd for InternId
impl PartialOrd for InternId
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl Copy for InternId
impl Eq for InternId
impl StructuralPartialEq for InternId
Auto Trait Implementations§
impl Freeze for InternId
impl RefUnwindSafe for InternId
impl Send for InternId
impl Sync for InternId
impl Unpin for InternId
impl UnwindSafe for InternId
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.