Remove pointer_{ref,mut}
from tagged pointers
Just use `deref{,_mut}`!
This commit is contained in:
parent
c7c0b85f67
commit
8f408202c3
2 changed files with 11 additions and 20 deletions
|
@ -115,19 +115,6 @@ where
|
||||||
unsafe { P::from_ptr(self.pointer_raw()) }
|
unsafe { P::from_ptr(self.pointer_raw()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pointer_ref(&self) -> &P::Target {
|
|
||||||
// SAFETY: pointer_raw returns the original pointer
|
|
||||||
unsafe { self.pointer_raw().as_ref() }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn pointer_mut(&mut self) -> &mut P::Target
|
|
||||||
where
|
|
||||||
P: DerefMut,
|
|
||||||
{
|
|
||||||
// SAFETY: pointer_raw returns the original pointer
|
|
||||||
unsafe { self.pointer_raw().as_mut() }
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn tag(&self) -> T {
|
pub fn tag(&self) -> T {
|
||||||
unsafe { T::from_usize(self.packed.addr().get() >> Self::TAG_BIT_SHIFT) }
|
unsafe { T::from_usize(self.packed.addr().get() >> Self::TAG_BIT_SHIFT) }
|
||||||
|
@ -147,7 +134,10 @@ where
|
||||||
type Target = P::Target;
|
type Target = P::Target;
|
||||||
|
|
||||||
fn deref(&self) -> &Self::Target {
|
fn deref(&self) -> &Self::Target {
|
||||||
self.pointer_ref()
|
// Safety:
|
||||||
|
// `pointer_raw` returns the original pointer from `P::into_ptr` which,
|
||||||
|
// by the `Pointer`'s contract, must be valid.
|
||||||
|
unsafe { self.pointer_raw().as_ref() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +147,11 @@ where
|
||||||
T: Tag,
|
T: Tag,
|
||||||
{
|
{
|
||||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||||
self.pointer_mut()
|
// Safety:
|
||||||
|
// `pointer_raw` returns the original pointer from `P::into_ptr` which,
|
||||||
|
// by the `Pointer`'s contract, must be valid for writes if
|
||||||
|
// `P: DerefMut`.
|
||||||
|
unsafe { self.pointer_raw().as_mut() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,9 +41,6 @@ where
|
||||||
TaggedPtr { raw: CopyTaggedPtr::new(pointer, tag) }
|
TaggedPtr { raw: CopyTaggedPtr::new(pointer, tag) }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pointer_ref(&self) -> &P::Target {
|
|
||||||
self.raw.pointer_ref()
|
|
||||||
}
|
|
||||||
pub fn tag(&self) -> T {
|
pub fn tag(&self) -> T {
|
||||||
self.raw.tag()
|
self.raw.tag()
|
||||||
}
|
}
|
||||||
|
@ -56,7 +53,7 @@ where
|
||||||
{
|
{
|
||||||
type Target = P::Target;
|
type Target = P::Target;
|
||||||
fn deref(&self) -> &Self::Target {
|
fn deref(&self) -> &Self::Target {
|
||||||
self.raw.pointer_ref()
|
self.raw.deref()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +63,7 @@ where
|
||||||
T: Tag,
|
T: Tag,
|
||||||
{
|
{
|
||||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||||
self.raw.pointer_mut()
|
self.raw.deref_mut()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue