cargo-equip 0.7.1

A Cargo subcommand to bundle your code into one `.rs` file for competitive programming.
Documentation

cargo-equip

CI codecov dependency status Crates.io Crates.io

日本語

A Cargo subcommand to bundle your code into one .rs file for competitive programming.

Example

Sqrt Mod - Library-Cheker

[package]
name = "solve"
version = "0.0.0"
edition = "2018"

[dependencies]
acl_convolution = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_dsu         = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_fenwicktree = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_lazysegtree = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_math        = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_maxflow     = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_mincostflow = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_modint      = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_scc         = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_segtree     = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_string      = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
acl_twosat      = { git = "https://github.com/qryxip/ac-library-rs", branch = "split-into-separate-crates" }
input           = { path = "/path/to/input"                                                                }
output          = { path = "/path/to/output"                                                               }
tonelli_shanks  = { path = "/path/to/tonelli_shanks"                                                       }
# ...
#[macro_use]
extern crate input as _;

use acl_modint::ModInt;
use std::io::Write as _;
use tonelli_shanks::ModIntBaseExt as _;

fn main() {
    input! {
        yps: [(u32, u32)],
    }

    output::buf_print(|out| {
        macro_rules! println(($($tt:tt)*) => (writeln!(out, $($tt)*).unwrap()));
        for (y, p) in yps {
            ModInt::set_modulus(p);
            if let Some(sqrt) = ModInt::new(y).sqrt() {
                println!("{}", sqrt);
            } else {
                println!("-1");
            }
        }
    });
}

↓

❯ cargo equip --resolve-cfgs --remove docs --minify libs --rustfmt --check -o ./bundled.rs
     Running `/home/ryo/.cargo/bin/rustup run nightly cargo udeps --output json -p solve --bin solve`
    Checking solve v0.0.0 (/home/ryo/src/local/a/solve)
    Finished dev [unoptimized + debuginfo] target(s) in 0.13s
info: Loading save analysis from "/home/ryo/src/local/a/solve/target/debug/deps/save-analysis/solve-e3698634e08ed722.json"
    Bundling the code
    Checking cargo-equip-check-output-99qzpt0pl701s8e6 v0.1.0 (/tmp/cargo-equip-check-output-99qzpt0pl701s8e6)
    Finished dev [unoptimized + debuginfo] target(s) in 0.34s

Submit Info #29030 - Library-Checker

Installation

Install a nightly toolchain and cargo-udeps first.

❯ rustup update nightly
❯ cargo install --git https://github.com/est31/cargo-udeps # for est31/cargo-udeps#80

Crates.io

❯ cargo install cargo-equip

master

❯ cargo install --git https://github.com/qryxip/cargo-equip

GitHub Releases

Releases

Usage

TODO (Japanese)

License

Dual-licensed under MIT or Apache-2.0.