gpt4 book ai didi

rust - 是否可以在运行时生成和执行 Rust 代码?

转载 作者:太空狗 更新时间:2023-10-29 16:34:04 25 4
gpt4 key购买 nike

使用 C,在运行时,我可以:

  1. 创建函数的源代码,
  2. 调用 gcc 将其编译为 .so (Linux)(或使用 llvm 等),
  3. 加载 .so,并
  4. 调用函数。

在 Rust 中可能有类似的事情吗?

特别是我想使用代数数据类型,因此使用 Rust 特性的 C 子集是不够的。

最佳答案

官方还没有,但至少在没有太多黑客攻击的情况下应该是可能的。最大的障碍是库还没有任何动态加载的能力。这是使其工作的潜在策略(在 Rust 的传入分支上)。

  • 链接到 rustc crate 以编程方式驱动编译器。请注意,编译器不是线程安全的,因此一次只能运行一个进程内构建。
  • #[no_mangle]标记你想调用的函数。这应该(我还没有尝试过)生成一个完整的符号名称,以便于查找。
  • 创建到 dlopen/dlsym 的最小绑定(bind)
  • 找到函数指针并将其不安全地转换为 Rust 闭包类型(当前在 sys::Closure 中定义)。
  • 调用关闭。

Rust 也有一个经过最低限度测试的 JIT,可用于此类事情,但它有一些主要错误。

关于rust - 是否可以在运行时生成和执行 Rust 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com