Code
一开始用 Box+dyn trait 来表示实现了 statement
然后当想要向上转型成具体的类型时,就是需要使用 any + downcast_ref 去做判断,感觉有点不是很 Rustcaean,思考有没有别的办法
是不是可以用泛型Statement<T>
代替 dyn Statement? 或者用 Enum match pattern 代替类型判断
后续就用了 Enum,稍微方便了点,顺带性能肯定比 Box+dyn trait 高。
后续写 marco 时不知道咋写了,思维还是够 Rustcaean,只能又加上 as_any 先试试看能不能写下去,可能等后面有实力了再重构吧。
两则之间的界限很模糊。有些情况下更加模糊,比如某些编程语言的实现会解析源代码,构建 AST 并将其转换为字节码。在执行之前,虚拟机会即时将字节码编译为机器代码,而不是直接在
虚拟机中执行字节码指定的操作。这就是所谓的 JIT(Just in Time)解释器/编译器。