shanqiang0304 发表于 2020-12-31 10:05
Tags:rust,函数,反射
例子: js中比如eval("var fn=function(){alert('haha');}"); 比如java 的字节码技术
c语言可以调用编译器生成动态库.so,然后加载该so即可
把编译器嵌套到你程序你 你程序里编译完在调用 不过第一次会非常慢 哈哈
参考C语言,你觉得C语言可以动态创建函数么?明显不行,其实,可以用Macro解决你遇到的问题,C语言的宏也可以用来做类似的事情,当然,Rust和C语言的宏最终也还是在编译时“创建”了。
原生rust并不能动态创建函数,可以考虑嵌入一个解释器,不过目前似乎找到的都是玩具解释器,可以实现JIT更是连demo都不好找。 js: https://github.com/boa-dev/boa py: https://github.com/RustPython/RustPython
可以用WASM, 动态生成动态执行.
想玩可以嵌入一些解析程序,同样能实现运行时传入自定义代码的效果
哦哦
-- 👇 jonirrings: rust是aot语言,不是js那种aot、jit、脚本解释型混合的,做不到啦。 能在运行时创建函数的,必须要有后两种特征。
rust是aot语言,不是js那种aot、jit、脚本解释型混合的,做不到啦。 能在运行时创建函数的,必须要有后两种特征。
https://github.com/reitermarkus/cargo-eval https://github.com/DanielKeep/cargo-script
https://github.com/reitermarkus/cargo-eval
https://github.com/DanielKeep/cargo-script
闭包也不是动态的啊,我的意思就是运行时我读一个文件根据文件的内容创建函数;
-- 👇 jmjoy: 不就是闭包?
不是闭包。 就是字符串转成函数。
不就是闭包?
评论区
写评论c语言可以调用编译器生成动态库.so,然后加载该so即可
把编译器嵌套到你程序你 你程序里编译完在调用 不过第一次会非常慢 哈哈
参考C语言,你觉得C语言可以动态创建函数么?明显不行,其实,可以用Macro解决你遇到的问题,C语言的宏也可以用来做类似的事情,当然,Rust和C语言的宏最终也还是在编译时“创建”了。
原生rust并不能动态创建函数,可以考虑嵌入一个解释器,不过目前似乎找到的都是玩具解释器,可以实现JIT更是连demo都不好找。 js: https://github.com/boa-dev/boa py: https://github.com/RustPython/RustPython
可以用WASM, 动态生成动态执行.
想玩可以嵌入一些解析程序,同样能实现运行时传入自定义代码的效果
哦哦
--
👇
jonirrings: rust是aot语言,不是js那种aot、jit、脚本解释型混合的,做不到啦。 能在运行时创建函数的,必须要有后两种特征。
rust是aot语言,不是js那种aot、jit、脚本解释型混合的,做不到啦。 能在运行时创建函数的,必须要有后两种特征。
https://github.com/reitermarkus/cargo-eval
https://github.com/DanielKeep/cargo-script
闭包也不是动态的啊,我的意思就是运行时我读一个文件根据文件的内容创建函数;
--
👇
jmjoy: 不就是闭包?
不是闭包。 就是字符串转成函数。
不就是闭包?