pub struct PointsTo<V> { /* private fields */ }
👎Deprecated: The vstd::ptr version of PPtr is deprecated. Use either:
–
PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)Expand description
A tracked
ghost object that gives the user permission to dereference a pointer
for reading or writing, or to free the memory at that pointer.
The meaning of a PointsTo
object is given by the data in its
View
object, PointsToData
.
See the PPtr
documentation for more details.
Implementations§
source§impl<V> PointsTo<V>
impl<V> PointsTo<V>
sourcepub spec fn view(self) -> PointsToData<V>
👎Deprecated: The vstd::ptr version of PPtr is deprecated. Use either:
– PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)
pub spec fn view(self) -> PointsToData<V>
PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)sourcepub proof fn is_nonnull(tracked &self)
👎Deprecated: The vstd::ptr version of PPtr is deprecated. Use either:
– PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)
pub proof fn is_nonnull(tracked &self)
PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)ensures
self@.pptr != 0,
Any dereferenceable pointer must be non-null.
(Note that null pointers do exist and are representable by PPtr
;
however, it is not possible to obtain a PointsTo
token for
any such a pointer.)
sourcepub proof fn leak_contents(tracked &mut self)
👎Deprecated: The vstd::ptr version of PPtr is deprecated. Use either:
– PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)
pub proof fn leak_contents(tracked &mut self)
PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)ensures
self@.pptr == old(self)@.pptr && self@.value.is_None(),
source§impl<V> PointsTo<V>
impl<V> PointsTo<V>
sourcepub proof fn into_raw(tracked self) -> tracked points_to_raw : PointsToRaw
👎Deprecated: The vstd::ptr version of PPtr is deprecated. Use either:
– PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)
pub proof fn into_raw(tracked self) -> tracked points_to_raw : PointsToRaw
PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)requires
self@.value.is_None(),
ensurespoints_to_raw.is_range(self@.pptr, size_of::<V>() as int),
is_sized::<V>(),
sourcepub proof fn borrow_raw(tracked &self) -> tracked points_to_raw : &PointsToRaw
👎Deprecated: The vstd::ptr version of PPtr is deprecated. Use either:
– PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)
pub proof fn borrow_raw(tracked &self) -> tracked points_to_raw : &PointsToRaw
PPtr<T>
in vstd::simple_pptr (for simple use-cases, with fixed-size typed heap allocations)
– *mut T
with vstd::raw_ptr (for more advanced use-cases)requires
self@.value.is_None(),
ensurespoints_to_raw.is_range(self@.pptr, size_of::<V>() as int),
is_sized::<V>(),
Auto Trait Implementations§
impl<V> Freeze for PointsTo<V>
impl<V> RefUnwindSafe for PointsTo<V>where
V: RefUnwindSafe,
impl<V> Send for PointsTo<V>where
V: Send,
impl<V> Sync for PointsTo<V>where
V: Sync,
impl<V> Unpin for PointsTo<V>where
V: Unpin,
impl<V> UnwindSafe for PointsTo<V>where
V: UnwindSafe,
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
Mutably borrows from an owned value. Read more