zed 0.2.0

A minimal, Redux-like state management library for Rust with advanced features.
Documentation
name: CI/CD Pipeline

on:
    push:
        branches: [main, develop]
    pull_request:
        branches: [main, develop]

env:
    RUST_BACKTRACE: 1
    CARGO_TERM_COLOR: always

jobs:
    lint:
        name: Lint and Format
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3

            - uses: dtolnay/rust-toolchain@stable
              with:
                  components: rustfmt, clippy

            - name: Run rustfmt
              run: cargo fmt -- --check

            - name: Run clippy
              run: cargo clippy --all-targets --all-features -- -D warnings

    test:
        name: Tests
        runs-on: ${{ matrix.os }}
        strategy:
            matrix:
                os: [ubuntu-latest, macos-latest, windows-latest]
                rust: [stable, beta]
        steps:
            - uses: actions/checkout@v3

            - uses: dtolnay/rust-toolchain@master
              with:
                  toolchain: ${{ matrix.rust }}

            - uses: Swatinem/rust-cache@v2

            - name: Run tests
              run: cargo test --verbose --all-features

            - name: Run doc tests
              run: cargo test --doc --verbose

    coverage:
        name: Code Coverage
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3

            - uses: dtolnay/rust-toolchain@stable

            - name: Install tarpaulin
              run: cargo install cargo-tarpaulin

            - name: Generate coverage
              run: cargo tarpaulin --out Xml --timeout 600 --exclude-files tests/ examples/

            - name: Upload coverage
              uses: codecov/codecov-action@v3
              with:
                  files: ./cobertura.xml
                  fail_ci_if_error: true

    docs:
        name: Documentation
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3

            - uses: dtolnay/rust-toolchain@stable

            - name: Check documentation
              run: cargo doc --no-deps --all-features
              env:
                  RUSTDOCFLAGS: -D warnings

    benchmarks:
        name: Benchmarks
        runs-on: ubuntu-latest
        if: github.event_name == 'push' && github.ref == 'refs/heads/main'
        steps:
            - uses: actions/checkout@v3

            - uses: dtolnay/rust-toolchain@stable

            - name: Run benchmarks
              run: cargo bench --bench store_benchmarks --bench timeline_benchmarks --bench state_mesh_benchmarks --bench component_benchmarks

    build:
        name: Build
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3

            - uses: dtolnay/rust-toolchain@stable

            - name: Build release
              run: cargo build --release --verbose