narust-158 0.3.1

A Rust reimplementation of OpenNARS 1.5.8
Documentation
//! 基于「推理器」「推理上下文」有关「推理周期」的操作
//! * 🎯从「记忆区」中解耦分离
//! * 🎯在更「现代化」的同时,也使整个过程真正Rusty
//!   * 📌【2024-05-15 01:38:39】至少,能在「通过编译」的条件下复现OpenNARS
//! * 🎯将其中有关「推理周期」的代码摘录出来
//!   * 📌工作周期 from 推理器
//!   * 📌吸收推理上下文(新)
//! * 🚩【2024-05-17 21:35:04】目前直接基于「推理器」而非「记忆区」
//! * ⚠️【2024-05-18 01:25:09】目前这里所参考的「OpenNARS源码」已基本没有「函数对函数」的意义
//!   * 📌许多代码、逻辑均已重构重组
//!
//! ## Logs
//!
//! * ✅【2024-05-12 16:10:24】基本从「记忆区」迁移完所有功能
//! * ♻️【2024-06-26 11:59:58】开始根据改版OpenNARS重写

use crate::control::Reasoner;

impl Reasoner {
    /// 处理「工作周期」
    /// * 🚩[时钟步进](Self::tick)⇒[工作周期](Self::work_cycle)
    pub(crate) fn handle_work_cycle(&mut self) {
        // * 🚩时钟步进
        self.tick();
        // * 🚩工作周期
        self.work_cycle();
    }

    /// 内部所用的「工作周期」
    /// * ⚠️不负责「时钟更新」
    fn work_cycle(&mut self) {
        self.report_comment(format!("--- {} ---", self.time()));

        // * 🚩本地任务直接处理 阶段 * //
        let has_result = self.process_direct();

        // * 🚩内部概念高级推理 阶段 * //
        // * 📝OpenNARS的逻辑:一次工作周期,只能在「直接推理」与「概念推理」中选择一个
        if !has_result {
            self.process_reason();
        }

        // * 🚩最后收尾 阶段 * //
        // * 🚩原「清空上下文」已迁移至各「推理」阶段
        // ! ❌不复刻「显示呈现」相关功能
    }

    // ! 🚩【2024-06-28 00:09:12】方法「吸收推理上下文」不再需要被「推理器」实现
    // * 📌原因:现在「推理上下文」内置「推理器」的引用

    // * ℹ️【2024-08-10 14:58:02】有关「输入指令」的代码参见 `cmd_dispatch`模块
}