///|
struct ImmediateData[T] {
data : @moonchor.Located[T, Manager]
}
///|
fn[T] ImmediateData::new(
data : @moonchor.Located[T, Manager],
) -> ImmediateData[T] {
ImmediateData::{ data, }
}
///|
fn[T, U] ImmediateData::map(
self : ImmediateData[T],
f : (T) -> U,
) -> ImmediateData[U] {
self.data.map(f) |> ImmediateData::new
}
///|
async test "Simple task" {
async fn remote_job(ctx : MoonlightContext) {
let input_data = ctx.immediate(42)
let result = ctx.remote_run(fn(x : Int) { x + 1 }, input_data)
result.map(xs => println(Repr(xs))) |> ignore
}
let cluster = local_cluster_config(4)
cluster.start(remote_job)
}