diff --git a/.cargo/config b/.cargo/config index cf13702..603152c 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,3 +1,2 @@ [alias] -dep-tests = ["run", "--manifest-path", "./tools/dep-tests/Cargo.toml", "--"] test-examples = ["run", "--manifest-path", "./tools/test-examples/Cargo.toml", "--"] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2528fa..cd51349 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: # Breaking changes like this might be mixed into the future stable versions. # https://github.com/rust-lang/rustfmt/pull/3632 channel: - - 1.39.0 + - 1.40.0 - stable name: Rustfmt (${{ matrix.channel }}) @@ -22,9 +22,9 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v2 - - name: rust-toolchain + - name: Setup ${{ matrix.channel }}-x86_64-unknown-linux-gnu uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.channel }}-x86_64-unknown-linux-gnu @@ -37,71 +37,22 @@ jobs: command: fmt args: -- --check - - name: '`cargo fmt --manifest-path ./tools/dep-tests/Cargo.toml -- --check`' - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --manifest-path ./tools/dep-tests/Cargo.toml -- --check - - name: '`cargo fmt --manifest-path ./tools/test-examples/Cargo.toml -- --check`' uses: actions-rs/cargo@v1 with: command: fmt args: --manifest-path ./tools/test-examples/Cargo.toml -- --check - test-examples: - name: test-examples - runs-on: ubuntu-18.04 - - steps: - - name: Checkout - uses: actions/checkout@v1 - - - name: setup-python - uses: actions/setup-python@v1 - with: - python-version: '3.8' - - - name: rust-toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.39.0-x86_64-unknown-linux-gnu - default: true - profile: default - - - name: '`cargo install --git https://github.com/rust-lang-ja/atcoder-rustc-dep-option-generator`' - uses: actions-rs/cargo@v1 - with: - command: install - args: --git https://github.com/rust-lang-ja/atcoder-rustc-dep-option-generator - - - name: '`cargo clippy --all-features --manifest-path ./tools/test-examples/Cargo.toml -- -D warnings`' - uses: actions-rs/cargo@v1 - with: - command: clippy - args: --all-features --manifest-path ./tools/test-examples/Cargo.toml -- -D warnings - - - name: '`cargo build --all-features --release`' - uses: actions-rs/cargo@v1 - with: - command: build - args: --all-features --release - - - name: '`cargo test-examples`' - uses: actions-rs/cargo@v1 - with: - command: test-examples - build: strategy: fail-fast: false matrix: toolchain: # `x86_64-pc-windows-gnu` is tier 1 **for now**. - - 1.39.0-x86_64-pc-windows-msvc - - 1.39.0-x86_64-pc-windows-gnu - - 1.39.0-x86_64-apple-darwin - - 1.39.0-x86_64-unknown-linux-gnu + - 1.40.0-x86_64-pc-windows-msvc + - 1.40.0-x86_64-pc-windows-gnu + - 1.40.0-x86_64-apple-darwin + - 1.40.0-x86_64-unknown-linux-gnu - stable-x86_64-pc-windows-msvc - stable-x86_64-pc-windows-gnu - stable-x86_64-apple-darwin @@ -111,53 +62,29 @@ jobs: - beta-x86_64-apple-darwin - beta-x86_64-unknown-linux-gnu include: - - toolchain: 1.39.0-x86_64-pc-windows-msvc - features: --no-default-features - dep_tests: true + - toolchain: 1.40.0-x86_64-pc-windows-msvc os: windows-latest - - toolchain: 1.39.0-x86_64-pc-windows-gnu - features: --no-default-features - dep_tests: false + - toolchain: 1.40.0-x86_64-pc-windows-gnu os: windows-latest - - toolchain: 1.39.0-x86_64-apple-darwin - features: --all-features - dep_tests: true + - toolchain: 1.40.0-x86_64-apple-darwin os: macOS-latest - - toolchain: 1.39.0-x86_64-unknown-linux-gnu - features: --all-features - dep_tests: true + - toolchain: 1.40.0-x86_64-unknown-linux-gnu os: ubuntu-18.04 - toolchain: stable-x86_64-pc-windows-msvc - features: --no-default-features - dep_tests: true os: windows-latest - toolchain: stable-x86_64-pc-windows-gnu - features: --no-default-features - dep_tests: false os: windows-latest - toolchain: stable-x86_64-apple-darwin - features: --all-features - dep_tests: true os: macOS-latest - toolchain: stable-x86_64-unknown-linux-gnu - features: --all-features - dep_tests: true os: ubuntu-18.04 - toolchain: beta-x86_64-pc-windows-msvc - features: --no-default-features - dep_tests: true os: windows-latest - toolchain: beta-x86_64-pc-windows-gnu - features: --no-default-features - dep_tests: false os: windows-latest - toolchain: beta-x86_64-apple-darwin - features: --all-features - dep_tests: true os: macOS-latest - toolchain: beta-x86_64-unknown-linux-gnu - features: --all-features - dep_tests: true os: ubuntu-18.04 name: ${{ matrix.toolchain }} @@ -169,50 +96,45 @@ jobs: if: matrix.os == 'windows-latest' - name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v2 - - name: rust-toolchain + - name: Setup ${{ matrix.toolchain }} uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.toolchain }} override: true profile: default - - name: '`cargo clippy --all-targets --profile test ${{ matrix.features }} -- -D warnings`' - uses: actions-rs/cargo@v1 + - name: Setup Python 3.8 + uses: actions/setup-python@v1 with: - command: clippy - args: --all-targets --profile test ${{ matrix.features }} -- -D warnings + python-version: '3.8' - - name: '`cargo test --all-targets ${{ matrix.features }} --no-fail-fast`' + - name: '`cargo clippy --all-targets --profile test -- -D warnings`' uses: actions-rs/cargo@v1 with: - command: test - args: --all-targets ${{ matrix.features }} --no-fail-fast + command: clippy + args: --all-targets --profile test -- -D warnings - - name: '`cargo run --release`' + - name: '`cargo clippy --manifest-path ./tools/test-examples/Cargo.toml -- -D warnings`' uses: actions-rs/cargo@v1 with: - command: run - args: ${{ matrix.features }} --release + command: clippy + args: --manifest-path ./tools/test-examples/Cargo.toml -- -D warnings - - name: '`cargo clippy ${{ matrix.features }} --manifest-path ./tools/dep-tests/Cargo.toml -- -D warnings`' + - name: '`cargo test --all-targets --no-fail-fast`' uses: actions-rs/cargo@v1 with: - command: clippy - args: ${{ matrix.features }} --manifest-path ./tools/dep-tests/Cargo.toml -- -D warnings - if: matrix.dep_tests + command: test + args: --all-targets --no-fail-fast - - name: '`cargo test ${{ matrix.features }} --manifest-path ./tools/dep-tests/Cargo.toml --no-fail-fast`' + - name: '`cargo run --release`' uses: actions-rs/cargo@v1 with: - command: test - args: ${{ matrix.features }} --manifest-path ./tools/dep-tests/Cargo.toml --no-fail-fast - if: matrix.dep_tests + command: run + args: --release - - name: '`cargo dep-tests --all-features -d 1`' + - name: '`cargo test-examples`' uses: actions-rs/cargo@v1 with: - command: dep-tests - args: --all-features -d 1 - if: matrix.dep_tests + command: test-examples diff --git a/.gitignore b/.gitignore index 83c0e8e..234330d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -/tools/dep-tests/Cargo.lock /tools/test-examples/Cargo.lock **/target/ **/*.rs.bk diff --git a/Cargo.lock b/Cargo.lock index f128eb2..655903f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,14 +27,6 @@ dependencies = [ "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "arrayvec" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "ascii" version = "1.0.0" @@ -44,35 +36,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "atcoder-rust-base" version = "0.1.0" dependencies = [ - "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "alga 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "ascii 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitset-fixed 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "defmac 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.99.2 (registry+https://github.com/rust-lang/crates.io-index)", "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.20.7 (registry+https://github.com/rust-lang/crates.io-index)", "fixedbitset 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "if_chain 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "im-rc 14.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "im-rc 14.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "itertools-num 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libm 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "modtype 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "nalgebra 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "ndarray 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nom 5.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", @@ -82,11 +62,7 @@ dependencies = [ "ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "permutohedron 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "petgraph 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "primal-check 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "primal-sieve 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proconio 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proconio 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -96,29 +72,16 @@ dependencies = [ "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", "superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "text_io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "union-find 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "text_io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "whiteread 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "autocfg" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "autocfg" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bitmaps" version = "2.0.0" @@ -145,77 +108,21 @@ dependencies = [ "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "cc" -version = "1.0.50" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "defmac" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "derive-new" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "derive_more" -version = "0.99.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "euclid" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "fixedbitset" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "fs_extra" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "generic-array" version = "0.13.2" @@ -234,27 +141,9 @@ dependencies = [ "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "hamming" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "heck" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "if_chain" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "im-rc" -version = "14.1.0" +version = "14.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitmaps 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -267,10 +156,10 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -289,52 +178,11 @@ dependencies = [ "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "jemalloc-ctl" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "jemalloc-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", - "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "jemallocator" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "lexical-core" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "libc" version = "0.2.66" @@ -355,11 +203,6 @@ name = "maplit" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "matrixmultiply" version = "0.2.3" @@ -368,41 +211,11 @@ dependencies = [ "rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "memchr" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "modtype" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "modtype_derive 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "modtype_derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "if_chain 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "nalgebra" version = "0.19.0" @@ -433,27 +246,12 @@ dependencies = [ "rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "nom" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lexical-core 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "num" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-bigint 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "num-iter 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", @@ -463,7 +261,7 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -485,9 +283,9 @@ name = "num-derive" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -515,7 +313,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-bigint 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -536,26 +334,6 @@ dependencies = [ "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "paste" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "paste-impl" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "permutohedron" version = "0.2.4" @@ -567,7 +345,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fixedbitset 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -575,58 +353,6 @@ name = "ppv-lite86" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "primal" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "primal-check 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "primal-sieve 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "primal-bit" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "hamming 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "primal-check" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "primal-estimate" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "primal-sieve" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "hamming 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "primal-bit 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "proc-macro2" version = "0.4.30" @@ -637,7 +363,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -645,7 +371,7 @@ dependencies = [ [[package]] name = "proconio" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -675,25 +401,7 @@ name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -709,15 +417,6 @@ dependencies = [ "rand_pcg 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rand_chacha" version = "0.2.1" @@ -727,19 +426,6 @@ dependencies = [ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "rand_core" version = "0.5.1" @@ -756,14 +442,6 @@ dependencies = [ "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rand_hc" version = "0.2.0" @@ -772,46 +450,6 @@ dependencies = [ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rand_pcg" version = "0.2.1" @@ -820,14 +458,6 @@ dependencies = [ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rand_xoshiro" version = "0.4.0" @@ -841,14 +471,6 @@ name = "rawpointer" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "regex" version = "1.3.3" @@ -857,7 +479,7 @@ dependencies = [ "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -873,32 +495,6 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ryu" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "sized-chunks" version = "0.5.1" @@ -908,29 +504,11 @@ dependencies = [ "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "smallvec" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "smallvec" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "static_assertions" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "strsim" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "superslice" version = "1.0.0" @@ -948,27 +526,22 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "text_io" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "thread_local" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -979,11 +552,6 @@ name = "typenum" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unicode-segmentation" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "unicode-xid" version = "0.1.0" @@ -994,16 +562,6 @@ name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "union-find" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "version_check" version = "0.9.1" @@ -1019,79 +577,36 @@ name = "whiteread" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "winapi" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [metadata] "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" "checksum alga 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "658f9468113d34781f6ca9d014d174c74b73de870f1e0e3ad32079bbab253b19" "checksum approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3" -"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" "checksum ascii 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bbf56136a5198c7b01a49e3afcbef6cf84597273d298f54432926024107b0109" -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" "checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "checksum bitmaps 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81e039a80914325b37fde728ef7693c212f0ac913d5599607d7b95a9484aae0b" "checksum bitset-fixed 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a8cc868e96ba5c32ffae4d42bf2940ca7fca317dcef3f19b6d7de66b6885abff" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" -"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum defmac 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d5592fca31e96d8a748d03080b58be78c5383617aa4bd89e69f30607d8769891" -"checksum derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "71f31892cd5c62e414316f2963c5689242c43d8e7bbcaaeca97e5e28c95d91d9" -"checksum derive_more 0.99.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2159be042979966de68315bce7034bb000c775f22e3e834e1c52ff78f041cae8" "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" -"checksum euclid 0.20.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f852d320142e1cceb15dccef32ed72a9970b83109d8a4e24b1ab04d579f485d" "checksum fixedbitset 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" -"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" -"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum generic-array 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd" "checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -"checksum hamming 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65043da274378d68241eb9a8f8f8aa54e349136f7b8e12f63e3ef44043cc30e1" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum if_chain 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c3360c7b59e5ffa2653671fb74b4741a5d343c03f331c0a4aeda42b5c2b0ec7d" -"checksum im-rc 14.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed5135086ffe74654d797c02fd673c4046cdb7f552c98f1b1aa6851d6572f84f" -"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" +"checksum im-rc 14.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5df50c85553397f6320fad21751d7ba9007de512c7971cb8746238f1a155d3c9" +"checksum indexmap 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b54058f0a6ff80b6803da8faf8997cde53872b38f4023728f6830b06cd3c0dc" "checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" "checksum itertools-num 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a872a22f9e6f7521ca557660adb96dd830e54f0f490fa115bb55dd69d38b27e7" -"checksum jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7" -"checksum jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" -"checksum jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum lexical-core 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2304bccb228c4b020f3a4835d247df0a02a7c4686098d4167762cfbbe4c5cb14" "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" "checksum libm 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" "checksum libm 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" "checksum maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum matrixmultiply 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478f" -"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" "checksum memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223" -"checksum modtype 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c6bffa83fe8c98bd8eaa2ca4f4cf867d61940718049d4faeb496d9e83435e4b" -"checksum modtype_derive 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b2f5ebe9234d3ba9510165e562083b7b7ad985a37407abd4ec48ffb61066a941" "checksum nalgebra 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0abb021006c01b126a936a8dd1351e0720d83995f4fc942d0d426c654f990745" "checksum ndarray 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "25b001fc2f5df269365fb77bd8396ce6b1f61c9848f7f088c25e57494bacc57b" -"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -"checksum nom 5.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c433f4d505fe6ce7ff78523d2fa13a0b9f2690e181fc26168bcbe5ccc5d14e07" "checksum num 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" -"checksum num-bigint 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f115de20ad793e857f76da2563ff4a09fbcfd6fe93cca0c5d996ab5f3ee38d" +"checksum num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" "checksum num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" "checksum num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c8b15b261814f992e33760b1fca9fe8b693d8a65299f20c9901688636cfb746" "checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" @@ -1099,69 +614,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum num-rational 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" "checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" "checksum ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518" -"checksum paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "423a519e1c6e828f1e73b720f9d9ed2fa643dce8a7737fb43235ce0b41eeaa49" -"checksum paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4214c9e912ef61bf42b81ba9a47e8aad1b2ffaf739ab162bf96d1e011f54e6c5" "checksum permutohedron 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b687ff7b5da449d39e418ad391e5e08da53ec334903ddbb921db208908fc372c" "checksum petgraph 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29c127eea4a29ec6c85d153c59dc1213f33ec74cead30fe4730aecc88cc1fd92" "checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -"checksum primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0e31b86efadeaeb1235452171a66689682783149a6249ff334a2c5d8218d00a4" -"checksum primal-bit 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "686a64e2f50194c64942992af5799e6b6e8775b8f88c607d72ed0a2fd58b9b21" -"checksum primal-check 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e65f96c0a171f887198c274392c99a116ef65aa7f53f3b6d4902f493965c2d1" -"checksum primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56ea4531dde757b56906493c8604641da14607bf9cdaa80fb9c9cabd2429f8d5" -"checksum primal-sieve 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "da2d6ed369bb4b0273aeeb43f07c105c0117717cbae827b20719438eb2eb798c" -"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc" -"checksum proconio 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f52d77f4e38736cf6e74cf5cb9bcc5da999d5823d01523395f25a9b80a81d517" +"checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" +"checksum proconio 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f50331d8ee5ca54b123896161f31d1dc670be1400569e1efed5186fe3ee7258" "checksum proconio-derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cbe4b8993fb10674fbc95383266dbb57608642c389134495e5f485a54d19fe3f" "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" "checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" "checksum rand_distr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" "checksum rand_pcg 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rand_xoshiro 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9fcdd2e881d02f1d9390ae47ad8e5696a9e4be7b547a1da2afbc61973217004" "checksum rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5508c1941e4e7cb19965abef075d35a9a8b5cdf0846f30b4050e9b55dc55e87" "checksum regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e734e891f5b408a29efbf8309e656876276f49ab6a6ac208600b4419bd893d90" "checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum sized-chunks 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f59f81ec9833a580d2448e958d16bd872637798f3ab300b693c48f136fb76ff" -"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" "checksum smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4" -"checksum static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3" -"checksum strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" "checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8" -"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" -"checksum text_io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9658b61ebd1d2a40c276ba2335890b9eb6550b67458a6fbce2022e58c3350a50" -"checksum thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88ddf1ad580c7e3d1efff877d972bcc93f995556b9087a5a259630985c88ceab" +"checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" +"checksum text_io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6cb170b4f47dc48835fbc56259c12d8963e542b05a24be2e3a1f5a6c320fd2d4" +"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" "checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" -"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum union-find 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ded8a2ba8917ff7a977a446770a8c3bfec18e147b5617b41fd8aae703d8c6720" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" "checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" "checksum whiteread 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8bc25de0a968755322a6b517a7257df7ec3216ed7907b8fc064906542f9714b3" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index 0f6ef70..8e1a38f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,16 +16,12 @@ exclude = ["./tools"] name = "main" path = "src/main.rs" -[features] -jemalloc = ["jemalloc-ctl", "jemallocator"] -default = ["jemalloc"] - [dependencies] # AtCoder 2019年言語アップデート以降に使用できるクレート # 多バイト長整数、分数、複素数など num = "=0.2.1" -num-bigint = "=0.2.5" +num-bigint = "=0.2.6" num-complex = "=0.2.4" num-integer = "=0.1.42" num-iter = "=0.1.40" @@ -57,36 +53,15 @@ rand_distr = "=0.2.2" # グラフ petgraph = "=0.5.0" -# 幾何 -euclid = "=0.20.7" - -# 素数 -primal = "=0.2.3" -primal-check = "=0.2.3" -primal-estimate = "=0.2.1" -primal-sieve = "=0.2.9" - # 挿入順を保持するhash table -indexmap = "=1.3.0" +indexmap = "=1.3.1" # 正規表現 regex = "=1.3.3" -# パーサーコンビネータ -nom = "=5.1.0" - -# Aho–Corasick -aho-corasick = "=0.7.6" - -# string similarity metrics -strsim = "=0.9.3" - # staticアイテムの遅延初期化 lazy_static = "=1.4.0" -# 浮動点小数の比較 -approx = "=0.3.2" - # f64のOrd/Eq実装 ordered-float = "=1.0.2" @@ -104,67 +79,32 @@ superslice = "=1.0.0" itertools = "=0.8.2" itertools-num = "=0.1.3" -# `&mut T`から`T`を『借りる』 -take_mut = "=0.2.2" - -# 1行で書ける`macro_rules` -defmac = "=0.2.1" - -# パターンを`bool`式に -matches = "=0.1.8" - -# `if`と`if let`を『まとめる』マクロ`if_chain!` -if_chain = "=1.0.0" - # `hashmap!`, `hashset!`, `btreemap!`, `btreeset!` maplit = "=1.0.2" -# `std`のトレイトに対応するderive macro -derive_more = "=0.99.2" - -# メソッド`new`を生やすderive macro -derive-new = "=0.5.8" - # 即席enum `Either` either = "=1.5.3" # 標準ライブラリのVecやHashMapに対応する永続データ構造 # 永続データ構造は関数型言語によく見られるデータ構造で、要素を更新しても、そのデータ構造の # 以前のバージョンにアクセスできる。(更新の度に差分が記録されていくイメージ) -im-rc = "=14.1.0" +im-rc = "=14.2.0" # 可変長bit set。 fixedbitset = "=0.2.0" bitset-fixed = "=0.1.0" -# union-find (a.k.a. disjoint-set) -union-find = "=0.3.2" - # 競技プログラミングの入出力サポート -proconio = { version = "=0.3.4", features = ["derive"] } -text_io = "=0.1.7" +proconio = { version = "=0.3.5", features = ["derive"] } +text_io = "=0.1.8" whiteread = "=0.5.0" -# 剰余関連。普通の整数型などと同じ感覚で扱うだけで自動的にmodを取ってくれる -# 答えの整数をMで割った余りが要求される設問で便利 -modtype = "=0.7.0" - # 高速なハッシュ関数 rustc-hash = "=1.0.1" # 固定配列上のベクタ。ヒープ領域でなくスタック領域にアロケートされるので高速かもしれない smallvec = "=1.1.0" -# 代替ヒープアロケータ。条件によってはシステムアロケータより速いことも -[target.'cfg(not(windows))'.dependencies] -jemallocator = { version = "=0.3.2", optional = true } -jemalloc-ctl = { version = "=0.3.3", optional = true } - -[[test]] -name = "jemallocator" -path = "tests/test_jemallocator.rs" -required-features = ["jemalloc"] - # --------------------------------------------------------------------- [dev-dependencies] diff --git a/README.md b/README.md index b01592d..d026fbf 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ **TODO** もう少し詳しく書く - AtCoder 2019年言語アップデート後の環境向け -- Rust 1.39.0 +- Rust 1.40.0 - AtCoderジャッジサーバ環境の構築用 diff --git a/cargo-generate.toml b/cargo-generate.toml index 1034944..1f36dc5 100644 --- a/cargo-generate.toml +++ b/cargo-generate.toml @@ -1,2 +1,2 @@ [template] -exclude = [".github", ".cargo", "dep-tests"] +exclude = [".github/workflows/ci.yml", ".cargo/config", "dep-tests.toml", "tools/**/*"] diff --git a/examples/abc057-b-text-io.rs b/examples/abc057-b-text-io.rs index 2f22337..e46bfe2 100644 --- a/examples/abc057-b-text-io.rs +++ b/examples/abc057-b-text-io.rs @@ -1,8 +1,6 @@ // https://atcoder.jp/contests/abc057/tasks/abc057_b -#![allow(clippy::many_single_char_names, clippy::try_err)] - -use text_io::{read, try_read, try_scan}; +use text_io::read; fn main() { let n: usize = read!(); diff --git a/examples/abc073-d.rs b/examples/abc073-d.rs index 5f3d456..02d94aa 100644 --- a/examples/abc073-d.rs +++ b/examples/abc073-d.rs @@ -13,7 +13,7 @@ use std::ops::Sub; fn main() { input! { - _n: usize, + _: usize, m: usize, r: usize, rs: [NodeIndex1; r], diff --git a/examples/abc118-b-proconio.rs b/examples/abc118-b-proconio.rs index 722a1e4..c00d359 100644 --- a/examples/abc118-b-proconio.rs +++ b/examples/abc118-b-proconio.rs @@ -8,7 +8,7 @@ use std::ops::{BitAnd, BitOr}; fn main() { input! { n: usize, - _m: usize, + _: usize, a: [[Usize1]; n], } diff --git a/examples/abc118-b-text-io.rs b/examples/abc118-b-text-io.rs index 2cef31d..66c5958 100644 --- a/examples/abc118-b-text-io.rs +++ b/examples/abc118-b-text-io.rs @@ -1,10 +1,9 @@ // https://atcoder.jp/contests/abc118/tasks/abc118_b -use text_io::{read, try_read, try_scan}; +use text_io::read; use std::ops::{BitAnd, BitOr}; -#[allow(clippy::try_err)] fn main() { let (n, _): (usize, usize) = (read!(), read!()); let a = (0..n) diff --git a/examples/abc121-b-text-io.rs b/examples/abc121-b-text-io.rs index 3c7ab2d..81effa6 100644 --- a/examples/abc121-b-text-io.rs +++ b/examples/abc121-b-text-io.rs @@ -1,8 +1,8 @@ // https://atcoder.jp/contests/abc121/tasks/abc121_b -use text_io::{read, try_read, try_scan}; +use text_io::read; -#[allow(clippy::many_single_char_names, clippy::try_err)] +#[allow(clippy::many_single_char_names)] fn main() { let (n, m, c): (usize, usize, i32) = (read!(), read!(), read!()); let b = (0..m).map(|_| read!()).collect::>(); diff --git a/examples/abc129-f.rs b/examples/abc129-f.rs index 53e5d8b..15fead2 100644 --- a/examples/abc129-f.rs +++ b/examples/abc129-f.rs @@ -16,7 +16,7 @@ fn main() { l: u64, a: u64, b: u64, - _m: Mod, + (): Mod, } let count = |d| -> _ { diff --git a/examples/abc151-d.rs b/examples/abc151-d.rs index a5a0e75..735b354 100644 --- a/examples/abc151-d.rs +++ b/examples/abc151-d.rs @@ -46,7 +46,7 @@ fn main() { .iter() .flat_map(|&p| &neighbors[p]) .copied() - .filter(|&p| mem::replace(&mut unvisited[p], false)) + .filter(|&p| mem::take(&mut unvisited[p])) .collect(); !queue.is_empty() }) diff --git a/examples/practice-a-text-io.rs b/examples/practice-a-text-io.rs index cc39bde..e7ec952 100644 --- a/examples/practice-a-text-io.rs +++ b/examples/practice-a-text-io.rs @@ -1,8 +1,7 @@ // https://atcoder.jp/contests/practice/tasks/practice_1 -use text_io::{read, try_read, try_scan}; +use text_io::read; -#[allow(clippy::many_single_char_names, clippy::try_err)] fn main() { let (a, b, c, s): (u32, u32, u32, String) = (read!(), read!(), read!(), read!()); diff --git a/examples/practice-b-text-io.rs b/examples/practice-b-text-io.rs index df3960e..d3b2514 100644 --- a/examples/practice-b-text-io.rs +++ b/examples/practice-b-text-io.rs @@ -1,11 +1,10 @@ // https://atcoder.jp/contests/practice/tasks/practice_2 use maplit::hashset; -use text_io::{read, try_read, try_scan}; +use text_io::read; use std::{io, str}; -#[allow(clippy::try_err)] fn main() { fn read_line() -> String { let mut input = "".to_owned(); diff --git a/rust-toolchain b/rust-toolchain index 5edffce..32b7211 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.39.0 +1.40.0 diff --git a/src/main.rs b/src/main.rs index b4f212c..11a3a94 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,6 @@ type UnitResult = Result<(), Box>; fn main() -> UnitResult { run_proconio(); run_ordered_float(); - run_modtype()?; run_ascii()?; run_bitset_fixed(); run_permutohedron(); @@ -110,114 +109,6 @@ fn test_ordered_float() { run_ordered_float(); } -// modtype -fn run_modtype() -> UnitResult { - use modtype::cartridges::{Additive, AllowFlexibleRhs, Field, ManuallyAdjust, Multiplicative}; - use modtype::{use_modtype, Cartridge, ConstValue}; - use num::{BigInt, BigRational, CheckedDiv as _}; - - use std::marker::PhantomData; - - { - #[use_modtype] - type F = modtype::F<1_000_000_007u64>; - - assert_eq!((F(1_000_000_006) + F(2)).to_string(), "1"); - } - { - #[allow(non_snake_case)] - modtype::thread_local::F::with(1_000_000_007u64, |F| { - assert_eq!((F(1_000_000_006) + F(2)).to_string(), "1"); - }); - } - { - #[allow(non_snake_case)] - let F = modtype::non_static::F::factory(1_000_000_007u64); - - assert_eq!((F(1_000_000_006) + F(2)).to_string(), "1"); - } - { - #[use_modtype] - type F = modtype::ModType>, 1_000_000_007u64>; - - let mut x = F(1); - x += F(1); - x += 1u64; - x += 1i32; - x += 1f64; - x += BigInt::from(1u32); - x += BigRational::new(BigInt::from(1u32), BigInt::from(1u32)); - assert_eq!(x, F(7)); - } - { - #[use_modtype] - type Z = modtype::ModType, 57u32>; - - assert_eq!(Z(56) * Z(56), Z(1)); - assert_eq!(Z(1).checked_div(&Z(13)), Some(Z(22))); // 13・22 ≡ 1 (mod 57) - } - { - #[use_modtype] - type Z = modtype::ModType, 1_000_000_007u64>; - - let mut x = Z(1_000_000_006); - - x += Z(1); - assert_eq!(*x.get_mut_unchecked(), 1_000_000_007); - - x += Z(u64::max_value() / 2 - 1_000_000_007); - assert_eq!(*x.get_mut_unchecked(), u64::max_value() / 2); - - x += Z(1); - assert_eq!( - *x.get_mut_unchecked(), - (u64::max_value() / 2 + 1) % 1_000_000_007, - ); - } - { - #[use_modtype] - type Z = modtype::ModType, 1_000_000_007u64>; - - let mut x = Z(1_000_000_006); - - x += Z(u64::max_value() - 1_000_000_006); - assert_eq!(*x.get_mut_unchecked(), u64::max_value()); - - x.adjust(); - assert_eq!(*x.get_mut_unchecked(), u64::max_value() % 1_000_000_007); - } - { - #[rustfmt::skip] // https://github.com/rust-lang/rustfmt/issues/3673 - #[derive(modtype::ModType)] - #[modtype(modulus = "M::VALUE", cartridge = "C")] - struct ModType, M: ConstValue> { - #[modtype(value)] - value: u64, - phantom: PhantomData (C, M)>, - } - - impl> ModType, M> { - fn new(value: u64) -> Self { - Self { - value, - phantom: PhantomData, - } - } - } - - #[use_modtype] - type F = ModType, 1_000_000_007u64>; - - assert_eq!((-F(1)).to_string(), "1000000006"); - } - Ok(()) -} - -#[test] -fn test_modtype() -> UnitResult { - run_modtype() -} - // ascii fn run_ascii() -> UnitResult { use ascii::AsciiString; diff --git a/tests/defmac.rs b/tests/defmac.rs deleted file mode 100644 index 617410e..0000000 --- a/tests/defmac.rs +++ /dev/null @@ -1,9 +0,0 @@ -use defmac::defmac; // 2018 edition style - -#[test] -fn incr() { - let mut acc = 0; - defmac!(incr => acc += 1); - incr!(); - assert_eq!(acc, 1); -} diff --git a/tests/test_jemallocator.rs b/tests/test_jemallocator.rs deleted file mode 100644 index 63ab9ba..0000000 --- a/tests/test_jemallocator.rs +++ /dev/null @@ -1,65 +0,0 @@ -// -*- coding:utf-8-unix -*- - -use jemalloc_ctl; -use jemallocator; - -#[global_allocator] -static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; - -type UnitResult = Result<(), Box>; - -fn main() -> UnitResult { - do_allocate_heap() -} - -#[test] -fn test_jemallocator() -> UnitResult { - do_allocate_heap() -} - -fn do_allocate_heap() -> UnitResult { - use jemalloc_ctl::{epoch, stats}; - use rand::prelude::*; - - const SIZE: usize = 100_000; - - let mut rng = SmallRng::from_rng(thread_rng())?; - - let v = (&mut rng) - .sample_iter(&rand::distributions::Standard) - .take(SIZE) - .collect::>(); - let v_byte_size = v.len() * std::mem::size_of::(); - - // many statistics are cached and only updated when the epoch is advanced. - epoch::advance().map_err(stringify)?; - let allocated = stats::allocated::read().map_err(stringify)?; - let resident = stats::resident::read().map_err(stringify)?; - println!( - "{} bytes used by a Vec with len {}.", - v_byte_size, - v.len() - ); - println!( - "{} bytes allocated/{} bytes resident using jemalloc", - allocated, resident - ); - - assert!( - allocated >= v_byte_size, - "allocated size ({} bytes) is smaller than the vector size ({} bytes).", - allocated, - v_byte_size, - ); - - // to prevent the compiler to optimize the vec out, read its value at - // a random location. - let i = rng.gen_range(0, SIZE); - println!("v[{}] = {}", i, v[i]); - - Ok(()) -} - -fn stringify(x: impl ToString) -> String { - x.to_string() -} diff --git a/tools/dep-tests/Cargo.toml b/tools/dep-tests/Cargo.toml deleted file mode 100644 index 1f0d542..0000000 --- a/tools/dep-tests/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "dep-tests" -version = "0.0.0" -authors = [] -edition = "2018" -description = "Run all of the tests in the dependency graph." -publish = false - -[dependencies] -cargo = "0.40.0" -either = "1.5.3" -failure = "0.1.6" -fs_extra = "1.1.0" -itertools = "0.8.2" -maplit = "1.0.2" -once_cell = "1.2.0" -serde = { version = "1.0.103", features = ["derive"] } -structopt = "0.3.5" -toml = "0.5.5" -toml_edit = "0.1.5" diff --git a/tools/dep-tests/src/main.rs b/tools/dep-tests/src/main.rs deleted file mode 100644 index 3d53718..0000000 --- a/tools/dep-tests/src/main.rs +++ /dev/null @@ -1,484 +0,0 @@ -use cargo::core::compiler::{self, CompileMode, TargetInfo}; -use cargo::core::dependency::{self, Dependency}; -use cargo::core::package::{Package, PackageSet}; -use cargo::core::resolver::ResolveOpts; -use cargo::core::shell::{Shell, Verbosity}; -use cargo::core::{PackageIdSpec, Resolve, Workspace}; -use cargo::ops::{CompileFilter, CompileOptions, FilterRule, LibRule, Packages, TestOptions}; -use cargo::util::command_prelude::{App, AppExt as _, AppSettings, ArgMatchesExt as _}; -use cargo::{CliError, CliResult}; -use either::Either; -use failure::{format_err, Fail as _, Fallible}; -use itertools::Itertools as _; -use maplit::btreeset; -use once_cell::sync::Lazy; -use serde::Deserialize; -use structopt::StructOpt; - -use std::borrow::Borrow; -use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; -use std::env; -use std::fmt::Display; -use std::num::NonZeroUsize; -use std::path::{Path, PathBuf}; -use std::process::ExitStatus; - -static MANIFEST_PATH: &str = "./Cargo.toml"; -static CONFIG_PATH: &str = "./dep-tests.toml"; - -fn main() { - debug_assert_eq!( - env::current_dir() - .ok() - .and_then(|d| d.file_name()?.to_str().map(ToOwned::to_owned)), - Some("atcoder-rust-base".to_owned()), - "The cwd should be \"atcoder-rust-base\"", - ); - - let matches = Opt::clap() - .get_matches_safe() - .unwrap_or_else(|e| cargo::exit_with_error(e.into(), &mut Shell::new())); - let opt = Opt::from_clap(&matches); - - let mut config = cargo::Config::default() - .unwrap_or_else(|e| cargo::exit_with_error(e.into(), &mut Shell::new())); - - if let Err(err) = opt.run(&mut config) { - cargo::exit_with_error(err, &mut config.shell()); - } -} - -#[derive(StructOpt, Debug)] -#[structopt(about, setting(AppSettings::DeriveDisplayOrder))] -struct Opt { - #[structopt(long, help("Activate all available features"))] - all_features: bool, - #[structopt(long, help("Do not activate the `default` feature"))] - no_default_features: bool, - #[structopt(long, help("Require Cargo.lock and cache are up to date"))] - frozen: bool, - #[structopt(long, help("Require Cargo.lock is up to date"))] - locked: bool, - #[structopt(long, help("Run without accessing the network"))] - offline: bool, - #[structopt( - short, - long, - value_name("SPEC"), - number_of_values(1), - parse(try_from_str = PackageIdSpec::parse), - help("Package to run test for") - )] - package: Vec, - #[structopt( - long, - value_name("FEATURES"), - min_values(1), - help("Space-separated list of features to activate") - )] - features: Vec, - #[structopt(long, value_name("WHEN"), help("Coloring: auto, always, never"))] - color: Option, - #[structopt( - short, - long, - value_name("N"), - help("How deep in the dependency chain to search") - )] - depth: Option, - #[structopt( - default_value_os({ - static DEFAULT: Lazy = - Lazy::new(|| env::temp_dir().join("atcoder-rust-base-dep-tests")); - DEFAULT.as_ref() - }), - help("Directory to run tests") - )] - dir: PathBuf, -} - -impl Opt { - fn run(&self, config: &mut cargo::Config) -> CliResult { - config.configure( - 0, - None, - &self.color, - self.frozen, - self.locked, - self.offline, - &None, - &[], - )?; - - let DepTestsConfig { exclude, filter } = DepTestsConfig::load(config)?; - - let ws = Workspace::new(&config.cwd().join(MANIFEST_PATH), config)?; - - let (packages, resolve) = cargo::ops::resolve_ws_with_opts( - &ws, - ResolveOpts::new( - true, - &self.features, - self.all_features, - self.no_default_features, - ), - &Packages::Default.to_package_id_specs(&ws)?, - )?; - - let dev_pkgs = filter_packages(&ws, &packages, &resolve, None, |_| true)?; - let (dev_deps_free_pkgs, target_pkgs) = - filter_packages(&ws, &packages, &resolve, self.depth, |d| { - d.kind() == dependency::Kind::Normal - })? - .iter() - .copied() - .filter(|pkg| { - let (id, include) = (pkg.package_id(), &self.package); - include.iter().any(|s| s.matches(id)) - || include.is_empty() && !exclude.iter().any(|s| s.matches(id)) - }) - .partition(|pkg| pkg.dependencies().iter().all(|d| d.is_transitive())); - - let new_ws = setup_workspace(config, &self.dir, &dev_pkgs, &target_pkgs, &resolve)?; - - run_tests(&ws, dev_deps_free_pkgs, &filter)?; - run_tests(&new_ws, new_ws.members(), &filter)?; - config.shell().info("Successful!").map_err(Into::into) - } -} - -fn filter_packages<'a>( - ws: &'a Workspace, - packages: &'a PackageSet, - resolve: &Resolve, - depth: Option, - extra_pred: fn(&Dependency) -> bool, -) -> Fallible> { - let rustc = ws.config().load_global_rustc(Some(&ws))?; - let host_triple = &rustc.host; - let target_info = TargetInfo::new( - ws.config(), - &Some(host_triple.clone()), - &rustc, - compiler::Kind::Host, - )?; - - let mut outcome = btreeset!(ws.current()?); - let mut cur = outcome.clone(); - let mut depth = depth.map(NonZeroUsize::get); - while !cur.is_empty() && depth.map_or(true, |d| d > 0) { - let mut next = btreeset!(); - for from in cur { - for (to, deps) in resolve.deps(from.package_id()) { - let to = packages.get_one(to)?; - for dep in deps { - if dep - .platform() - .as_ref() - .map_or(true, |p| p.matches(host_triple, target_info.cfg())) - && extra_pred(dep) - && outcome.insert(to) - { - next.insert(to); - } - } - } - } - cur = next; - depth = depth.map(|d| d - 1); - } - for member in ws.members() { - outcome.remove(member); - } - Ok(outcome) -} - -fn setup_workspace<'cfg>( - config: &'cfg cargo::Config, - root: &Path, - pkgs_to_build: &BTreeSet<&Package>, - pkgs_to_test: &BTreeSet<&Package>, - resolve: &Resolve, -) -> Fallible> { - let deps = pkgs_to_build - .iter() - .map(|dep| { - let path_or_version = if pkgs_to_test.contains(dep) { - let src = dep.root(); - let dst = root.join(src.file_name().unwrap_or_default()); - let dst = cargo::util::paths::normalize_path(&if dst.is_relative() { - config.cwd().join(dst) - } else { - dst - }); - - config - .shell() - .info(format!("Copying {} to {}", src.display(), dst.display()))?; - - fs_extra::dir::copy( - src, - &dst, - &fs_extra::dir::CopyOptions { - skip_exist: true, - copy_inside: true, - ..fs_extra::dir::CopyOptions::new() - }, - )?; - - Either::Left(format!( - "./{}", - dst.file_name() - .unwrap_or_default() - .to_str() - .expect("the directory names should be -") - )) - } else { - Either::Right(dep.package_id().version()) - }; - let features = resolve.features_sorted(dep.package_id()); - Ok((dep.package_id(), (path_or_version, features))) - }) - .collect::>>()?; - - for (path_or_version, _) in deps.values() { - if let Either::Left(path) = path_or_version { - let manifest_path = root.join(path).join("Cargo.toml"); - let manifest_path = cargo::util::paths::normalize_path(&manifest_path); - let mut cargo_toml = - cargo::util::paths::read(&manifest_path)?.parse::()?; - cargo_toml.as_table_mut().remove("profile"); - cargo::util::paths::write(&manifest_path, cargo_toml.to_string().as_ref())?; - config - .shell() - .info(format!("Modified {}", manifest_path.display()))?; - } - } - - let src = cargo::util::paths::normalize_path(&config.cwd().join("Cargo.lock")); - let dst = root.join("Cargo.lock"); - - config - .shell() - .info(&format!("Copying {} to {}", src.display(), dst.display()))?; - - fs_extra::file::copy( - src, - dst, - &fs_extra::file::CopyOptions { - overwrite: true, - ..fs_extra::file::CopyOptions::new() - }, - )?; - - let mut cargo_toml = r#"[package] -name = "atcoder-rust-base-dep-tests" -version = "0.0.0" -edition = "2018" -publish = false - -[workspace] -members = [] - -[patch.crates-io] -"# - .parse::() - .unwrap(); - - cargo_toml["workspace"]["members"] = { - let mut workspace = toml_edit::Array::default(); - for (path_or_version, _) in deps.values() { - if let Either::Left(path) = path_or_version { - workspace.push(&**path); - } - } - toml_edit::value(workspace) - }; - - for (id, (path_or_version, _)) in &deps { - if let Either::Left(path) = path_or_version { - cargo_toml["patch"]["crates-io"][&*id.name()]["path"] = toml_edit::value(&**path); - } - } - - cargo_toml["dependencies"] = toml_edit::table(); - for (i, (id, (path_or_version, features))) in deps.iter().enumerate() { - let dummy_extern_crate_name = format!("_{}", i); - let mut val = toml_edit::InlineTable::default(); - val.get_or_insert("package", &*id.name()); - match path_or_version { - Either::Left(path) => val.get_or_insert("path", &**path), - Either::Right(version) => val.get_or_insert("version", format!("={}", version)), - }; - val.get_or_insert("default-features", false); - let mut val_features = toml_edit::Array::default(); - for &feature in features { - val_features.push(feature); - } - val.get_or_insert("features", val_features); - cargo_toml["dependencies"][&dummy_extern_crate_name] = toml_edit::value(val); - } - - let manifest_path = root.join("Cargo.toml"); - cargo::util::paths::write(&manifest_path, cargo_toml.to_string().as_ref())?; - config - .shell() - .info(format!("Wrote {}", manifest_path.display()))?; - - let src_dir = root.join("src"); - cargo::util::paths::create_dir_all(&src_dir)?; - let src_path = src_dir.join("lib.rs"); - cargo::util::paths::write(&src_path, b"")?; - config - .shell() - .info(format!("Wrote {}", src_path.display()))?; - - Workspace::new(&manifest_path, config) -} - -fn run_tests, P: Borrow>( - ws: &Workspace, - pkgs: I, - filter: &HashMap, -) -> CliResult { - fn run_tests( - ws: &Workspace, - pkg: &Package, - modify_compile_opts: impl FnOnce(&mut CompileOptions), - ) -> CliResult { - let spec = PackageIdSpec::from_package_id(pkg.package_id()).to_string(); - let mut compile_opts = App::new("") - .arg_package("") - .get_matches_from_safe(&["", "-p", &spec])? - .compile_options(ws.config(), CompileMode::Test, Some(ws))?; - modify_compile_opts(&mut compile_opts); - - let test_opts = TestOptions { - compile_opts, - no_run: false, - no_fail_fast: false, - }; - - if let Some(err) = cargo::ops::run_tests(&ws, &test_opts, &[])? { - return Err(match err.exit.as_ref().and_then(ExitStatus::code) { - Some(code) => { - let hint = format_err!("{}", err.hint(&ws, &test_opts.compile_opts)); - CliError::new(err.context(hint).into(), code) - } - None => CliError::new(err.into(), 101), - }); - } - Ok(()) - } - - fn default_compile_filter() -> CompileFilter { - CompileFilter::new( - LibRule::True, - FilterRule::none(), - FilterRule::none(), - FilterRule::none(), - FilterRule::none(), - ) - } - - for pkg in pkgs { - let pkg = pkg.borrow(); - let filter = match filter - .iter() - .filter(|(k, _)| k.matches(pkg.package_id())) - .map(|(_, v)| v.clone()) - .exactly_one() - { - Ok(filter) => Some(filter), - Err(err) => match err.count() { - 0 => None, - n => return Err(format_err!("`{}` matches {} specs", pkg, n).into()), - }, - }; - - run_tests(ws, pkg, |mut compile_opts| { - compile_opts.filter = filter - .as_ref() - .map(DepTestsConfigFilter::compile_filter) - .unwrap_or_else(default_compile_filter); - })?; - - if filter.map_or(true, |DepTestsConfigFilter { doc, .. }| doc) { - run_tests(ws, pkg, |mut compile_opts| { - compile_opts.build_config.mode = CompileMode::Doctest; - compile_opts.filter = default_compile_filter(); - })?; - } - } - Ok(()) -} - -trait ShellExt { - fn info(&mut self, message: impl Display) -> Fallible<()>; -} - -impl ShellExt for Shell { - fn info(&mut self, message: impl Display) -> Fallible<()> { - if self.verbosity() == Verbosity::Quiet { - return Ok(()); - } - let message = format!( - "{} {}\n", - if self.supports_color() { - "\x1B[1m\x1B[36minfo:\x1B[0m" - } else { - "info:" - }, - message, - ); - self.print_ansi(message.as_ref()) - } -} - -#[derive(Deserialize, Debug)] -struct DepTestsConfig { - exclude: HashSet, - filter: HashMap, -} - -impl DepTestsConfig { - fn load(config: &cargo::Config) -> Fallible { - let path = cargo::util::paths::normalize_path(&config.cwd().join(CONFIG_PATH)); - let toml = cargo::util::paths::read(&path)?; - let this = toml::from_str(&toml)?; - config.shell().info(format!("Loaded {}", path.display()))?; - Ok(this) - } -} - -#[derive(Deserialize, Default, Debug, Clone, PartialEq)] -struct DepTestsConfigFilter { - #[serde(default)] - doc: bool, - #[serde(default)] - lib: bool, - #[serde(default)] - bin: BTreeSet, - #[serde(default)] - example: BTreeSet, - #[serde(default)] - test: BTreeSet, - #[serde(default)] - bench: BTreeSet, -} - -impl DepTestsConfigFilter { - fn compile_filter(&self) -> CompileFilter { - CompileFilter::new( - if self.lib { - LibRule::True - } else { - LibRule::False - }, - FilterRule::new(self.bin.iter().cloned().collect(), false), - FilterRule::new(self.test.iter().cloned().collect(), false), - FilterRule::new(self.example.iter().cloned().collect(), false), - FilterRule::new(self.bench.iter().cloned().collect(), false), - ) - } -}