Skip to main content

PermTarget

Trait PermTarget 

Source
pub trait PermTarget {
    type Value: ?Sized;
    type Objectiveness;

    // Provided method
    fn is_disjoint(
        &self,
        _self_val: &Self::Value,
        other: &Self,
        _other_val: &Self::Value,
    ) -> bool { ... }
}
Expand description

Trait for the types that can be used in a Perm.

Required Associated Types§

Source

type Value: ?Sized

Value managed by the type.

For example, a pointer *const T manages a value of type T.

Source

type Objectiveness

Objectiveness parametrization for the Perm.

This type is used to force the Objective auto-trait to be implemented on the Perm object (or not!). See this trait implementation for PermCell for an example.

Provided Methods§

Source

fn is_disjoint( &self, _self_val: &Self::Value, other: &Self, _other_val: &Self::Value, ) -> bool

Logical function that describes the behavior of Perm::disjoint_lemma.

logic(open, inline)

self != other

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<T: ?Sized> PermTarget for *const T

Source§

fn is_disjoint(&self, self_val: &T, other: &Self, other_val: &T) -> bool

Two pointers to distinct non-empty allocations are disjoint.

Note that this definition also implies that a pointer to a ZST is disjoint with itself.

logic(open, inline)

size_of_val_logic(*self_val) != 0 && size_of_val_logic(*other_val) != 0 ==>
self.addr_logic() != other.addr_logic()
Source§

type Value = T

Source§

type Objectiveness = NotObjective

Implementors§

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicBool

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicBool

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicI8

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicI8

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicI16

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicI16

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicI32

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicI32

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicI64

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicI64

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicIsize

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicIsize

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicU8

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicU8

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicU16

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicU16

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicU32

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicU32

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicU64

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicU64

Source§

impl PermTarget for creusot_std::std::sync::atomic::AtomicUsize

Source§

impl PermTarget for creusot_std::std::sync::atomic_sc::AtomicUsize

Source§

impl<T: ?Sized> PermTarget for PermCell<T>

Source§

impl<T> PermTarget for creusot_std::std::sync::atomic::AtomicPtr<T>

Source§

impl<T> PermTarget for creusot_std::std::sync::atomic_sc::AtomicPtr<T>