Why isn't this working? Can someone please help me? Thank you.
const std = @import("std");
const print = std.debug.print;
const assert = std.debug.assert;
fn _get_data(i: *i32) void {
print("_get_data 1\n", .{});
i.* = 1;
suspend {}
print("_get_data 2\n", .{});
i.* = 2;
suspend {}
print("_get_data 3\n", .{});
i.* = 3;
}
fn get_data(i: *i32) void {
print("get_data | before call _get_data(i:{})\n", .{i.*});
await async _get_data(i);
print("get_data | after call _get_data(i:{})\n", .{i.*});
}
pub fn main() void {
print("hello, zig!\n", .{});
var i: i32 = 0;
var f = async _get_data(&i); // ok (1)
// var f = async get_data(&i); // not ok (2)
assert(i == 1);
resume f;
assert(i == 2);
resume f;
assert(i == 3);
}
# root @ vm in ~/chinadns-ng on git:master x [16:45:56]
$ zig run a.zig -fstage1 # ok (1)
hello, zig!
_get_data 1
_get_data 2
_get_data 3
# root @ vm in ~/chinadns-ng on git:master x [16:46:04]
$ zig run a.zig -fstage1 # not ok (2)
hello, zig!
get_data | before call _get_data(i:0)
_get_data 1
thread 64444 panic: awaiting function resumed
/root/chinadns-ng/a.zig:25:5: 0x2378ba in get_data (a)
await async _get_data(i);
^
/root/chinadns-ng/a.zig:39:5: 0x234d16 in main (a)
resume f;
^
/usr/lib/zig/std/start.zig:604:22: 0x207dee in std.start.posixCallMainAndExit (a)
root.main();
^
/usr/lib/zig/std/start.zig:376:5: 0x207bd1 in std.start._start (a)
@call(.{ .modifier = .never_inline }, posixCallMainAndExit, .{});
^
[1] 64444 IOT instruction (core dumped) zig run a.zig -fstage1
# root @ vm in ~/chinadns-ng on git:master x [16:46:17] C:134