pub enum RebindRefusal {
ResidencyUnknown,
ResidencyDiffers {
baked: DeviceLocation,
incoming: DeviceLocation,
},
MissingSlot {
layer: usize,
which: usize,
},
UnbakedSlot {
layer: usize,
which: usize,
},
StorageDiffers {
layer: usize,
which: usize,
},
LockPoisoned,
}Expand description
Why a held plan could not be re-bound onto a replacement KV allocation.
A refusal is a normal outcome, not an error: the caller falls back to the GAP-014 rebuild, which is correct by construction. The variants exist so the guard’s reasons are nameable in a test — the point of GAP-028 is that this guard is load-bearing for correctness, so “it refused” is not enough to know it refused for the right reason.
Variants§
ResidencyUnknown
The replacement cannot say where its storage lives, so residency
cannot be proven equal to the plan’s. See KvCache::device_location.
ResidencyDiffers
The plan’s placement stamps and residency copies were baked for a different device.
MissingSlot
The replacement has no storage for a slot the plan writes.
UnbakedSlot
A baked KV Const has no base_cache entry — an internal
inconsistency in the held plan, not a property of the replacement.
StorageDiffers
The replacement storage is not byte-interchangeable with the baked storage: different dtype, encoding, backend variant, or extent.
LockPoisoned
A storage lock was poisoned while comparing. Refuse rather than guess.
Trait Implementations§
Source§impl Clone for RebindRefusal
impl Clone for RebindRefusal
impl Copy for RebindRefusal
Source§impl Debug for RebindRefusal
impl Debug for RebindRefusal
impl Eq for RebindRefusal
Source§impl PartialEq for RebindRefusal
impl PartialEq for RebindRefusal
impl StructuralPartialEq for RebindRefusal
Auto Trait Implementations§
impl Freeze for RebindRefusal
impl RefUnwindSafe for RebindRefusal
impl Send for RebindRefusal
impl Sync for RebindRefusal
impl Unpin for RebindRefusal
impl UnsafeUnpin for RebindRefusal
impl UnwindSafe for RebindRefusal
Blanket Implementations§
impl<T> Boilerplate for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more