[rust][fasync] Prepare for the removal of fasync::spawn*

TLDR: fasync::spawn functions are going away in preference of the new
Task::spawn API's. This CL prepares the way by replacing usage of the old
API's with usage of the new one.

We're deprecating and replacing the old spawn functions (spawn, spawn_local,
spawn_blocking) and replacing them with an API centered around Task objects.

Tasks own the execution of the underlying future, and if dropped will cancel
that execution. To regain the old, unowned execution that spawn API's offered
a detach method is offered.

This change series sweeps through the codebase and replaces spawn() with
Task::spawn().detach() and spawn_local() with Task::local().detach() in
preparation for the removal of the original API's.

It's hoped that code maintainers will then take the opportunity (when it makes
sense for them to do so) to move to a model where Tasks are not detached but
owned for as long as they need to be running.

Change-Id: I4324e0217458bbda1e7d15f047e4318ed921c55e
Reviewed-on: https://fuchsia-review.googlesource.com/c/experiences/+/410756
Reviewed-by: Chase Latta <chaselatta@google.com>
Testability-Review: Chase Latta <chaselatta@google.com>
Commit-Queue: Yaneury Fermin <yaneury@google.com>
2 files changed
tree: 0d7096e29513556835c949ac5857956177d80b5c
  1. base_shells/
  2. benchmarks/
  3. bin/
  4. examples/
  5. lib/
  6. session_shells/
  7. settings/
  8. tests/
  9. .gitignore
  10. analysis_options.yaml
  11. AUTHORS
  12. BUILD.gn
  13. CONTRIBUTING.md
  14. LICENSE
  15. OWNERS
  16. PATENTS
  17. README.md
README.md

Fuchsia Experiences Repository

This is a companion repository to Fuchsia and contains code that either implements or supports user facing code for the Fuchsia platform. The code provides a majority of the user interface for the Workstation product as well as a small set of examples, tests, and benchmarks.

Build & Run

This repository is a “source petal” included in the Fuchsia Platform Source Tree (FPST) checkout. Code in this repository must be built with Fuchsia in order to be functional, see (the guide)[https://fuchsia.dev/fuchsia-src/development/source_code] for instructions on getting the source.

Hardware

Hardware support should be considered experimental. However, NUC's and Pixelbooks are known to work best. For details on hardware setup see: (Install Fuchsia on a Device)[https://fuchsia.dev/fuchsia-src/development/hardware/paving]

Building

Once you have functional checkout you can (configure a build)[https://fuchsia.dev/fuchsia-src/development/build/fx#configure-a-build] targeting Workstation:

    fx set workstation.<board> # For options run: `fx list-boards`
    fx build

See Fuchsia's (build and pave instructions)[https://fuchsia.dev/fuchsia-src/development/build/build_and_pave_quickstart] for detailed instructions.

Running

Once built, standard Fuchsia workflows for paving, running code, and testing apply. See: (fx workflows)[https://fuchsia.dev/fuchsia-src/development/build/fx] for detailed instructions.