不透明类型 (opaque)

opaque 类型具有未知的大小和对齐方式。它们主要用于与 C 代码交互,特别是当 C 库使用不透明指针来隐藏实现细节时。

定义不透明类型

const Window = opaque {};

使用

你不能创建不透明类型的实例,只能使用指向它的指针。

extern fn show_window(window: *Window) void;

这确保了类型安全:你不能意外地将指向一种不透明类型的指针传递给期望另一种不透明类型指针的函数。

const Button = opaque {};

extern fn click_button(button: *Button) void;

test "opaque types" {
    var window: *Window = undefined;
    // show_window(window); // OK
    // click_button(window); // 编译错误:expected *Button, found *Window
}

另请参阅: