conserve 23.1.1

A robust backup tool.
Documentation
name: Rust

on: [push, pull_request]

# see https://matklad.github.io/2021/09/04/fast-rust-builds.html
env:
  CARGO_TERM_COLOR: always
  CARGO_INCREMENTAL: 0
  CARGO_NET_RETRY: 10
  CI: 1
  RUST_BACKTRACE: short
  RUSTFLAGS: "-W rust-2021-compatibility"
  RUSTUP_MAX_RETRIES: 10

# TODO: Add -D warnings when that's clean on Windows.

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: true
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]

    steps:
      - uses: actions/checkout@v2
      - name: Show version
        run: |
          rustup show
          cargo --version
          rustc --version
      - name: Build
        run: cargo build --all-targets
      - name: Test
        run: cargo test -- --include-ignored
      # Clippy and rustfmt are excellent tools but are turned off here because it's too
      # easy for PRs to fail due to irrelevant changes including Clippy flagging problems
      # that it did not notice before.
      # - name: clippy
      #   run: cargo clippy --all-targets -- -d clippy::all
      # - name: rustfmt
      #   run: cargo fmt --all -- --check