agent-context 0.1.5

Multi-backend agent context manager with three-zone memory model
Documentation
/// 只读容器:构造后不可变,仅暴露切片访问。
///
/// 用于存储 `AgentContext` 的 immutable 区域(系统提示词等)。
/// 通过 `Deref<Target = [T]>` 暴露不可变引用,内部无法被外部修改。
#[derive(Debug, Clone)]
pub struct ReadOnly<T>(Vec<T>);

impl<T> ReadOnly<T> {
    /// 从 `Vec<T>` 构造只读容器,消费所有权。
    pub fn from(vec: Vec<T>) -> Self {
        Self(vec)
    }
}

impl<T> std::ops::Deref for ReadOnly<T> {
    type Target = [T];
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn deref_access() {
        let ro = ReadOnly::from(vec![1, 2, 3]);
        assert_eq!(ro[0], 1);
        assert_eq!(ro.len(), 3);
    }

    #[test]
    fn from_and_iter() {
        let ro = ReadOnly::from(vec!["a", "b"]);
        let collected: Vec<_> = ro.iter().collect();
        assert_eq!(collected, vec![&"a", &"b"]);
    }

    #[test]
    fn clone() {
        let ro = ReadOnly::from(vec![1, 2]);
        let cloned = ro.clone();
        assert_eq!(cloned[0], 1);
    }
}