image_hasher 3.1.1

A simple library that provides perceptual hashing and difference calculation for images.
Documentation
name: Build and test

on:
  push:
  pull_request:

jobs:
  full_ci:
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu-latest, macos-latest, windows-latest ]
        toolchain: [ nightly, stable, 1.87.0 ]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4

      - name: Setup rust version
        run: rustup default ${{ matrix.toolchain }}

      - name: Test with rust nightly
        if: matrix.toolchain == 'nightly'
        run: |
          cargo check
          cargo check --features "nightly"
          
          cargo check --examples
          cargo check --examples --features "nightly"
          
          cargo test --features "nightly" --no-fail-fast -- --nocapture
          cargo test --features "nightly" --no-fail-fast -- --nocapture
          
          cargo doc

      - name: Test with rust stable
        if: matrix.toolchain == 'stable'
        run: |
          cargo fmt -- --check
          
          cargo check
          cargo check --examples
          
          cargo clippy
          cargo clippy --features "fast_resize_unstable"
          
          cargo test --no-fail-fast -- --nocapture
          cargo test --release --no-fail-fast -- --nocapture
          
          cargo test --features fast_resize_unstable --no-fail-fast -- --nocapture
          cargo test --features fast_resize_unstable --release --no-fail-fast -- --nocapture
          
          cargo doc

      - name: Test with rust 1.87.0
        if: matrix.toolchain == '1.87.0'
        run: |
          # cargo update -p image --precise 0.25.4 # Image-rs often require newer rust version
          
          cargo check
          cargo check --examples
          
          cargo test --no-fail-fast -- --nocapture
          cargo test --release --no-fail-fast -- --nocapture
          
          cargo test --features fast_resize_unstable --no-fail-fast -- --nocapture
          cargo test --features fast_resize_unstable --release --no-fail-fast -- --nocapture
          
          cargo doc

      - name: Test i686-unknown-linux-gnu target
        if: matrix.os == 'ubuntu-latest' && matrix.toolchain == 'stable'
        run: |
          sudo dpkg --add-architecture i386
          sudo apt update
          sudo apt install -y gcc-multilib g++-multilib libc6-dev-i386 libc6-dev:i386
          
          rustup target add i686-unknown-linux-gnu
          cargo test --no-fail-fast --target i686-unknown-linux-gnu -- --nocapture
          cargo test --features fast_resize_unstable --no-fail-fast --target i686-unknown-linux-gnu -- --nocapture
          
          cargo test --features fast_resize_unstable --no-fail-fast --target i686-unknown-linux-gnu
          cargo test --features fast_resize_unstable --no-fail-fast
          cargo test --no-fail-fast --target i686-unknown-linux-gnu
          cargo test --no-fail-fast