我正在编写一个约束满足求解器,它将读取具有多个函数的输入文件,例如
and(not_equal(X0,X1),not_equal(absolute(subtract(X2,X3)),X4))
解算器将在上述函数中尝试100到100,000,000的X1, X2, X3, X4, X5
组合。
目前解决方案:
Vec
。相反,我想预先处理函数并将它们转换为静态Rust代码。所以上面的函数会变成:
fn func_1 (vars: &Vec<i32>) -> bool {
let t1 = if vars[0] != vars[1] {1} else {0};
let t2 = vars[2] - vars[3];
t2.abs();
let t3 = if t2 != vars[4] {1} else {0};
if t1 == 1 && t3 == 1 {return true} else {return false}
}
我计划有一个预处理器程序:
有更好的方法吗?
我可以编写一个自己编辑的程序,调用编译器本身,并安排自己在编译完成后运行,而不是有两个程序吗?