Skip to main content

GuardedRememberOutcome

Enum GuardedRememberOutcome 

Source
pub enum GuardedRememberOutcome {
    Stored {
        outcome: RememberOutcome,
        checked: bool,
    },
    Blocked {
        similar: Vec<Similar>,
    },
}
Expand description

Result of Memory::remember_guarded.

The two variants are intentionally disjoint: a blocked call has no fact id because it did not allocate one, mutate an index, or append a journal record. A caller that decides the candidates are compatible can make that choice explicit by following with ordinary Memory::remember.

Stored additionally reports whether a check happened at all - see GuardedRememberOutcome::Stored::checked. Without it the two answers “nothing similar was found” and “nothing could be compared” are the same value, and a caller reaching for this verb specifically to avoid duplicates has no way to learn it did not get one.

Variants§

§

Stored

No candidate crossed the configured similarity thresholds; the fact was stored normally.

Fields

§outcome: RememberOutcome

The committed fact.

§checked: bool

Whether the similarity detector actually had candidates to compare against.

false means the write was stored unguarded: the detector is scoped to the fact’s entity and walks that entity’s most recent live facts, so an input carrying no entity has no candidate set and cannot block anything, now or after any number of later writes. The fact is stored, exactly as an ordinary Memory::remember would have stored it.

true says a comparison took place, including the case where the entity is new and its candidate set was empty - that is a real “nothing similar is stored”, and the same call will be compared properly from the entity’s second fact onwards.

This is not a failure and not a fallback: comparing against every live fact instead is precisely the unbounded work the per-entity candidate cap exists to avoid. It is reported because the alternative is silence, and silence here reads as “checked, and it was clear”.

§

Blocked

At least one live same-entity fact crossed a similarity threshold; no mutation was made.

Fields

§similar: Vec<Similar>

Similar / potentially conflicting live facts, best match first (at most eight).

Trait Implementations§

Source§

impl Clone for GuardedRememberOutcome

Source§

fn clone(&self) -> GuardedRememberOutcome

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GuardedRememberOutcome

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl PartialEq for GuardedRememberOutcome

Source§

fn eq(&self, other: &GuardedRememberOutcome) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for GuardedRememberOutcome

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.