lambdust 0.1.1

A Scheme dialect with gradual typing and effect systems
//! Repository trait for managing continuations (interface)

use crate::eval::continuation_domain::{CapturedContinuation, ContinuationId};
use crate::diagnostics::Result;

/// Repository trait for managing continuations (interface)
pub trait ContinuationRepository: std::fmt::Debug {
    /// Store a continuation
    fn store(&mut self, continuation: CapturedContinuation) -> Result<ContinuationId>;
    
    /// Retrieve a continuation by ID
    fn find_by_id(&self, id: ContinuationId) -> Option<CapturedContinuation>;
    
    /// Remove a continuation
    fn remove(&mut self, id: ContinuationId) -> Result<()>;
    
    /// List all continuation IDs
    fn list_all(&self) -> Vec<ContinuationId>;
    
    /// Garbage collect expired continuations
    fn garbage_collect(&mut self, current_generation: u64) -> Result<usize>;
}