name: Rust on: push: branches: [ master ] pull_request: branches: [ master ] env: CARGO_TERM_COLOR: always permissions: read-all jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: rust: [stable, beta, nightly] steps: - uses: actions/checkout@v3 - name: Install Rust run: rustup update ${{ matrix.rust }} && rustup default ${{ matrix.rust }} - name: Run Tests run: cargo test --verbose - run: cargo build --all --all-features --all-targets - name: Catch missing feature flags if: startsWith(matrix.rust, 'nightly') run: cargo check -Z features=dev_dep - name: Install cargo-hack uses: taiki-e/install-action@cargo-hack - run: rustup target add thumbv7m-none-eabi - name: Ensure we don't depend on libstd run: cargo hack build --target thumbv7m-none-eabi --no-dev-deps --no-default-features msrv: runs-on: ubuntu-latest strategy: matrix: version: [1.38.0] steps: - uses: actions/checkout@v3 - name: Install Rust run: rustup update ${{ matrix.version }} && rustup default ${{ matrix.version }} - run: cargo build --all --all-features --all-targets miri: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Rust run: rustup toolchain install nightly --component miri && rustup default nightly - run: cargo miri test env: MIRIFLAGS: -Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-ignore-leaks RUSTFLAGS: ${{ env.RUSTFLAGS }} -Z randomize-layout