[roll] Roll fuchsia [fidl][rust] Refactor decoding layer

This change started out with adding a lifetime to the `Decoder` trait to
reduce the amount of unsafe code we have to write. That gradually spread
to a few other major changes as well:

- `Decoder` no longer has any safety requirements, and can be
  implemented without unsafe.
- The `Unconstrainted` trait has been removed. It was a nice shortcut
  for implementation, but was confusing since it shouldn't be used for
  bounds.
- A new `AsDecoder` trait was added, finally allowing us to share the
  basic implementations of `Decoder` between FIDL, DF, and FDomain.
- Wire types have been moved into a `wire` module for clarity. In the
  future, I'd like to further remove "Wire" from their names and refer
  to them via `wire::`. This matches the structure of the generated
  bindings.
- Device-side tests have been fixed and re-enabled for fidl_next_bind
  and fidl_next_codec.
- The protocol layer now has a `Body` wrapper instead of using the
  transport backend's receive buffer directly. This is a knock-on effect
  from `AsDecoder` and will enable the protocol layer to check for
  flexible errors.
- References to `Constrained` in bounds have been merged into `Wire` for
  clarity.
- Codec layer impls for builtin types have been moved into one file.
  This keeps all of the related implementations lexically close to each
  other.
- A few functions and methods have been renamed for clarity, including
  `decode_owned`.
- `WirePointer` now has a safer API that helps guard against pointing to
  memory that it outlives.
- Some additional `PartialEq` impls have been added for ergonomics and
  to make writing tests easier.
- Several helper functions have been replaced with direct
  implementations. This is mostly because we have more ergonomic APIs.

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1505016
Original-Revision: 8f685ac0a2b9c796682e852b6059f7f9dc3c3db9
GitOrigin-RevId: 0f95e0b477199f497795f1052dc2b7acd24ac991
Change-Id: I4a077d6f1814d35b5b749e53b402dadd8d4254d2
1 file changed
tree: 893d181666f9cf2384c975d021a005af5bd360ff
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.