1
0
Fork 0
forked from fun/fun

Some arg Fun in Rust. (0.38.1)

This commit is contained in:
Johannes Findeisen 2026-01-29 00:53:34 +01:00
commit 543483041b
16 changed files with 167 additions and 66 deletions

View file

@ -25,3 +25,29 @@ case OP_RUST_HELLO: {
#endif
break;
}
/*
* Rust FFI demo opcode with argument: OP_RUST_HELLO_ARGS
* Pops a string from the stack and asks Rust to print it. Pushes Nil.
*/
case OP_RUST_HELLO_ARGS: {
#ifdef FUN_WITH_RUST
Value vmsg = pop_value(vm);
char *msg = value_to_string_alloc(&vmsg);
free_value(vmsg);
if (msg) {
fun_rust_print_string(msg);
free(msg);
} else {
fun_rust_print_string("");
}
push_value(vm, make_nil());
#else
/* Still pop and free the arg to keep stack sane */
Value vmsg = pop_value(vm);
free_value(vmsg);
vm_raise_error(vm, "RUST_HELLO_ARGS requires FUN_WITH_RUST=ON at build time");
push_value(vm, make_nil());
#endif
break;
}