只是探索 Zig...我有一个 .zig 文件,其中包含一堆 comptime 函数和常量,我想在其他 .zig 程序中使用它们。相当于#include "my.h"C中的。
我有 3 种函数类型:
type ThreadedFunction = fn(&mut Thread, Object) -> FunctionResult;
type UniversalFunction = fn(&mut Thread, Unused) -> FunctionResult;
type Function = fn(&mut Thread, &Method) -> FunctionResult;
static_assertions::assert_eq_size!(primitives::Unused, &Method);
static_assertions::assert_eq_size!(primitives::Unused, Object);
Run Code Online (Sandbox Code Playgroud)
通用函数忽略第二个参数,所以我希望能够在其他两个上下文中使用它们。的大小Object,Unused和&Method相同。
我希望能够执行以下操作:
pub fn unused(thread: &mut Thread, _: Unused) -> FunctionResult {
NormalReturn
}
pub fn somewhere() -> ThreadedFunction {
unused as ThreadedFunction
}
Run Code Online (Sandbox Code Playgroud)
这是不安全的:
error[E0605]: non-primitive cast: `for<'r> fn(&'r mut interpreter::Thread, interpreter::primitives::Unused) -> interpreter::FunctionResult {unused}` as `for<'r> fn(&'r mut interpreter::Thread, object::Object) -> …Run Code Online (Sandbox Code Playgroud)