Skip to main content

DecayEngine

Struct DecayEngine 

Source
pub struct DecayEngine {
    pub multiplier: f32,
}
Expand description

Decay engine — computes current retention scores for memory entries.

Uses an Ebbinghaus-inspired forgetting curve with adjustments for:

  • Memory type (UserProfile decays slower than Conversation)
  • Protection level (Higher protection = slower decay)
  • Access frequency (Frequently accessed = slower decay)
  • Global multiplier (user-configurable)

Fields§

§multiplier: f32

Global decay multiplier. 1.0 = default speed.

Implementations§

Source§

impl DecayEngine

Source

pub fn new(multiplier: f32) -> Self

Create a new decay engine with the given multiplier.

Source

pub fn default_engine() -> Self

Create with default multiplier (1.0).

Source

pub fn compute_decay(&self, entry: &MemoryEntry, now: DateTime<Utc>) -> f32

Compute current decay score for an entry.

Returns a value between 0.0 (fully decayed) and 1.0 (fresh). Permanent protection always returns 1.0.

Source

pub fn effective_importance(entry: &MemoryEntry) -> f32

Compute effective importance of a memory entry.

Effective importance = base_importance × (1 + ln(1 + access_count)) × decay_score.

Source

pub fn is_prunable(&self, entry: &MemoryEntry, threshold: f32) -> bool

Check if an entry should be considered for pruning.

An entry is a pruning candidate when:

  • decay_score < threshold
  • protection is None or Low
  • not pinned
  • not auto-protected type

Trait Implementations§

Source§

impl Clone for DecayEngine

Source§

fn clone(&self) -> DecayEngine

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 DecayEngine

Source§

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

Formats the value using the given formatter. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more