scopeguard 1.2.0

A RAII scope guard that will run a given closure when it goes out of scope, even if the code between panics (assuming unwinding panic). Defines the macros `defer!`, `defer_on_unwind!`, `defer_on_success!` as shorthands for guards with one of the implemented strategies.
Documentation
name: CI

on:
  - push
  - pull_request

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly
          - 1.20.0 # MSRV
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - name: Build
        run: cargo build
      - name: Run tests
        run: cargo test
      - name: Run tests (without default features)
        run: cargo test --no-default-features

  no_std:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Test no_std support
        run: |
          rustup target add thumbv6m-none-eabi
          cargo build --no-default-features --target thumbv6m-none-eabi

  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Check formatting
        run: cargo fmt -- --check