pub enum OpenCall {
FunctionValue,
DynamicDispatch,
ReachedOpenCall,
}Expand description
Why a declaration’s derived capability set is a lower bound rather than the whole of what calling it can reach.
ADR 0015 makes a derived set a lower bound and nothing more: it names the capabilities the call graph can see, and a call the call graph cannot follow is reported here rather than left out in silence. A declaration carrying none of these is capability-closed — the call graph followed every call it makes, so its set is the whole of what it needs.
Variants§
FunctionValue
The body calls a value rather than a declaration: work() where
work is a parameter, a local bound out of a collection, or the
result of another call. What that value requires belongs to whoever
wrote it, which is somewhere this call graph does not lead.
DynamicDispatch
The body calls a method on a value whose implementation its caller
chose: a dyn Trait value, or a value of a generic parameter. The
conformance that runs is picked where the value was made.
ReachedOpenCall
Every call in this body is one the call graph followed, but one of them leads to a capability-open declaration, so the incompleteness reaches here too.
Implementations§
Trait Implementations§
impl Copy for OpenCall
impl Eq for OpenCall
Source§impl Ord for OpenCall
impl Ord for OpenCall
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialOrd for OpenCall
impl PartialOrd for OpenCall
impl StructuralPartialEq for OpenCall
Auto Trait Implementations§
impl Freeze for OpenCall
impl RefUnwindSafe for OpenCall
impl Send for OpenCall
impl Sync for OpenCall
impl Unpin for OpenCall
impl UnsafeUnpin for OpenCall
impl UnwindSafe for OpenCall
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.