最近在写程序时想把报错发到 stderr,找了一圈发现,唯一相关的只有 moonbitlang/async 。但我用不到 async,为了一个 stderr 输出引入整个 async 运行时,感觉太重了。
于是我写了一个纯同步的 FFI 小库:Qisu-dev/ffi
自己定义eprintln的示例
fn eprintln(message : String) -> Unit {
let full = message + "\n"
let cstr = @ffi.string_to_cstr(full)
defer @ffi.free(cstr)
let len = @ffi.strlen(cstr)
let _ = @ffi.fwrite(cstr, 1, len, @ffi.get_stderr())
}