[net-types] Introduce `Witness` trait

- Introduce the `Witness` trait; `Witness<A>` is implemented by
  any witness type (`SpecifiedAddr<A>`, `UnicastAddr<A>`, etc) which
  is a witness to some property about the address `A`
- Introduce the `IpAddrWitness: Witness<IpAddr>` trait, which
  provides useful associated types
- Modify `AddrSubnet` and `AddrSubnetEither` to be generic over
  which witness type is used as opposed to only supporting
  `SpecifiedAddr`

Test: Very little behavior change, although added one test case to
      make sure that `AddrSubnet::new` properly rejects addresses
      based on the witness type which is used
Change-Id: I12ea1f7b5f0892e7fa625864a454e4585b92701f
18 files changed
tree: 100b8e2eec6094cb8726ff2a3c480a598a0d9c3c
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. peridot/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .dir-locals.el
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.