binary-layout 3.1.3

The binary-layout library allows type-safe, inplace, zero-copy access to structured binary data. You define a custom data layout and give it a slice of binary data, and it will allow you to read and write the fields defined in the layout from the binary data without having to copy any of the data. It's similar to transmuting to/from a `#[repr(packed)]` struct, but much safer.
Documentation
name: CI

on:
  - push
  - pull_request

env:
  CARGO_TERM_COLOR: always

jobs:
  arm:
    name: arm
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        command: ["build", "test"]
        profile: ["", "--release"]
        # TODO Add --no-default-features
        features: ["", "--all-features"]
        # MSRV of binary-layout is 1.56 but for arm, one of our dependencies requires 1.58
        toolchain: ["stable", "nightly", "1.58"]
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          target: armv5te-unknown-linux-gnueabi
          default: true
      - uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: ${{ matrix.command }}
          args: ${{ matrix.profile }} ${{ matrix.features }} --target armv5te-unknown-linux-gnueabi
  x64:
    name: x64
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        command: ["build", "test"]
        profile: ["", "--release"]
        # TODO Add --no-default-features
        features: ["", "--all-features"]
        toolchain: ["stable", "nightly", "1.56"]
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          default: true
      - uses: actions-rs/cargo@v1
        with:
          command: ${{ matrix.command }}
          args: ${{ matrix.profile }} ${{ matrix.features }}
  clippy_check:
    name: Linter (clippy)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: clippy
          default: true
      - uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features --all-targets -- -D warnings
  code_format:
    name: Code Formatter (rustfmt)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: rustfmt
          default: true
      - uses: mbrobbel/rustfmt-check@0.3.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
  sync_readme:
    name: Sync README.md (cargo sync-readme)
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: cargo install cargo-readme
    - run: ./gen_readme.sh
    # Fail job if gen_readme.sh introduced changes. If this fails, then we need to run gen_readme.sh locally and add it to the commit.
    - run: git diff --exit-code
  dead_doc_links:
    name: Find dead doc links
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: RUSTDOCFLAGS="-Dwarnings" cargo doc
  coverage:
    name: Code Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          default: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all-features --no-fail-fast
        env:
          # Setup taken from https://github.com/actions-rs/grcov/tree/d9881ad44979aa34f846a82abb764b2b8cfbd715
          CARGO_INCREMENTAL: '0'
          RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests'
          RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests'
      - id: coverage
        uses: actions-rs/grcov@v0.1
      - uses: codecov/codecov-action@v1
        with:
          #token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
          files: ${{ steps.coverage.outputs.report }}
          fail_ci_if_error: true
          verbose: true