[rust-020]如何把wme加入到规则引擎的网络

本文介绍了如何在Rust编写的规则引擎中高效地将WME(工作记忆元素)添加到Alpha Memory。通过分析WME的元素,将其分配到最多8个Alpha Memory,从而将添加时间复杂度从线性降低到常数,提高性能。在处理完Alpha Memory后,会触发Beta环节更新,以维护规则引擎的网络。
摘要由CSDN通过智能技术生成

开源rust规则引擎,向引擎加入wme的函数如下:

pub fn add_wme(&mut self, wme: Wme) {
        let log = self.log.new(o!("wme" => format!("{:?}", wme)));
        trace!(log, "add wme");

        observe!(
            log,
            Trace::AddedWme {
                id: wme.0[0],
                attribute: wme.0[1],
                value: wme.0[2],
            }
        );

        //rustfmt是Rust官方出品的统一代码风格组件
        //这个是类似000,001,010,011....的次序排列的,01234567
        //skip的意思是,不要rustfmt对这段代码做修改,https://github.com/rust-lang/rustfmt,
        // “For things you do not want rustfmt to mangle, use #[rustfmt::skip]”

        // 根据WME的三个值,生成8种可能的AlphaTest
        #[rustfmt::skip]
            let tests = [
            AlphaTest([None,           None,           None          ]),
            AlphaTest([None,           None,           Some(wme.0[2])]),
            AlphaTest([None,           Some(wme.0[1]), None          ]),
            AlphaTest([None,           Some(wme.0[1]), Some(wme.0[2])]),
            AlphaTest([Some(wme.0[0]), None,           None          ]),
            AlphaTest([Some(wme.0[0]), None,           Some(wme.0[2])]),
            AlphaTest([Some(wme.0[0]), Some(wme.0[1]), None          ]),
            AlphaTest([Some(wme.0[0]), Some(wme.0[1]), Som
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值