pub trait NonNullAdditionalFnsMore<T>: NonNullAdditionalFns<T>where
T: PointeeSized,{
// Required methods
spec fn with_addr_spec(self, addr: NonZeroUsize) -> NonNull<T>;
proof fn lemma_with_addr_properties(self, addr: NonZeroUsize);
exec fn with_addr_v(self, addr: NonZeroUsize) -> ret : NonNull<T>;
exec fn map_addr_v<F: FnOnce(NonZeroUsize) -> NonZeroUsize>(
self,
f: F,
) -> ret : NonNull<T>;
}Required Methods§
Sourcespec fn with_addr_spec(self, addr: NonZeroUsize) -> NonNull<T>
spec fn with_addr_spec(self, addr: NonZeroUsize) -> NonNull<T>
Sourceproof fn lemma_with_addr_properties(self, addr: NonZeroUsize)
proof fn lemma_with_addr_properties(self, addr: NonZeroUsize)
ensures
self.with_addr_spec(addr).view_ptr_mut()@.metadata == self.view_ptr_mut()@.metadata,self.with_addr_spec(addr).view_ptr_mut()@.provenance == self.view_ptr_mut()@.provenance,self.with_addr_spec(addr).view_ptr_mut()@.addr == addr.view(),Sourceexec fn with_addr_v(self, addr: NonZeroUsize) -> ret : NonNull<T>
exec fn with_addr_v(self, addr: NonZeroUsize) -> ret : NonNull<T>
returns
self.with_addr_spec(addr),Sourceexec fn map_addr_v<F: FnOnce(NonZeroUsize) -> NonZeroUsize>(self, f: F) -> ret : NonNull<T>
exec fn map_addr_v<F: FnOnce(NonZeroUsize) -> NonZeroUsize>(self, f: F) -> ret : NonNull<T>
requires
f.requires((self.addr_spec(),)),ensuresret.view_ptr_mut()@.metadata == self.view_ptr_mut()@.metadata,ret.view_ptr_mut()@.provenance == self.view_ptr_mut()@.provenance,f.ensures((self.addr_spec(),), ret.addr_spec()),A wrapper of NonNull::map_addr in std, here we use our own NonZeroUsize
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".