ranges 0.4.0

This crate provides a generic alternative to core/std ranges, set-operations to work with them and a range set that can efficiently store them with the least amount of memory possible.
Documentation
.benchmark_template:
  stage: benchmark
  variables:
    TARGET: "x86_64-unknown-linux-gnu"
    RESTORE_CACHE: "1"
  allow_failure: true
  needs: ["x86_64-unknown-linux-gnu"]

clear_benchmarks:
  extends: .benchmark_template
  allow_failure: false
  only:
    - master
  script:
    # clear previous benchmarks
    - rm -rfv public
    - mkdir public
    # test if benchmarks still work
    - cargo test --all-features --benches
  artifacts:
    paths:
      - public

benchmark_mr:
  extends: .benchmark_template
  only:
    - merge_requests
  when: manual
  script:
    - rm -rf target/criterion
    - git remote update
    - git fetch
    # benchmark target
    - echo "Checking out \"$CI_MERGE_REQUEST_TARGET_BRANCH_SHA\""
    - git checkout $CI_MERGE_REQUEST_TARGET_BRANCH_SHA
    - cargo bench --all-features -- --color=always
    # benchmark branch
    - git checkout $CI_COMMIT_SHA
    - cargo bench --all-features -- --color=always
    # delete previous results for current branch from pages
    - rm -rfv public/$CI_COMMIT_REF_SLUG
    - mkdir -p public/$CI_COMMIT_REF_SLUG
    # move and display results
    - mv target/criterion/* public/$CI_COMMIT_REF_SLUG
    - echo $CI_PAGES_URL/$CI_COMMIT_REF_SLUG/report/index.html
  artifacts:
    paths:
      - public

benchmark_pr:
  extends: .benchmark_template
  only:
    - external_pull_requests
  when: manual
  script:
    - rm -rf target/criterion
    - git remote update
    - git fetch
    # benchmark target
    - echo "Checking out \"$CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_SHA\""
    - git checkout $CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_SHA
    - cargo bench --all-features -- --color=always
    # benchmark branch
    - git checkout $CI_COMMIT_SHA
    - cargo bench --all-features -- --color=always
    # delete previous results for current branch from pages
    - rm -rfv public/$CI_COMMIT_REF_SLUG
    - mkdir -p public/$CI_COMMIT_REF_SLUG
    # move and display results
    - mv target/criterion/* public/$CI_COMMIT_REF_SLUG
    - echo $CI_PAGES_URL/$CI_COMMIT_REF_SLUG/report/index.html
  artifacts:
    paths:
      - public