aboutsummaryrefslogtreecommitdiff
path: root/std/async.pk
diff options
context:
space:
mode:
authorJJ2024-05-10 01:00:01 +0000
committerJJ2024-05-10 02:41:52 +0000
commit073c902a31936c2b53d89245662fb272c9670169 (patch)
treea8789ed4561dc4c3dde84489a600272cbd5f806b /std/async.pk
parent51c8b349a77a8d8b1b34ce8e03518dad6e3cba00 (diff)
std: sweeping changes.
- replace interfaces with classes - replace : with then and do - solidify memory management as rust-style ownership - replace unsafe blocks with safe/unsafe attributes - add magic and copy attributes - switch Coerce impl from from to to
Diffstat (limited to 'std/async.pk')
-rw-r--r--std/async.pk6
1 files changed, 5 insertions, 1 deletions
diff --git a/std/async.pk b/std/async.pk
index 7c76076..f2ae3e0 100644
--- a/std/async.pk
+++ b/std/async.pk
@@ -1,5 +1,6 @@
## std.async: Zig-style colourless async/await.
## Future types, the async macro, and the await function.
+# reference: https://kristoff.it/blog/zig-colorblind-async-await/
## A standard Future type. Opaque.
pub type Future[T] = struct
@@ -7,6 +8,9 @@ pub type Future[T] = struct
## The `async` macro transforms any function call into
## an asynchronous call returning a Future of some type.
+##
+## This does not "just work". Compiler magic is necessary to package up
+## *any* block into something independently callable.
pub macro async[T](call: T): Future[T] =
...
@@ -14,6 +18,6 @@ pub macro async[T](call: T): Future[T] =
pub func await[T](self: Future[T]): T =
...
-examples:
+examples
std.net.connect()
print 1.async.await