PIT

Run Rust snippet containing multiple packages. Embed Cargo.toml as a comment to avoid special formatting.

There is a simple cache system, as described below.

Motivation

Usage

```sh $ cargo install rspit

omitted

$ cat ./snippet.rs //# [package] //# name = "rand" //# version = "0.1.0" //# edition = "2021" //# //# [dependencies] //# rand = "*"

use rand::prelude::*;

fn main() { let num: u64 = random(); println!("num: {}", num); }

//# ---

//# [package] //# name = "json" //# version = "0.1.0" //# edition = "2021" //# //# [dependencies] //# serde_json = "*"

use serde_json::{Result, Value};

fn main() -> Result<()> { let json = r#" { "name": "Alice", "age": 42 } "#; let json: Value = serdejson::fromstr(json)?; println!("name: {}, age: {}", json["name"], json["age"]);

Ok(())

}

$ pit run ./snippet.rs

omitted cargo log messages

Run rand package num: 17349477736480811228

omitted cargo log messages

Run json package name: "Alice", age: 42 ```

```sh $ pit --help A command-line tool to run Rust snippet.

Usage: pit [COMMAND]

Commands: check Check all package in file build Build all package in file run Run all package in file release Build all package in file in release mode and copy the artifacts to the target directory init Create a new file list List all packages in the given file add Add an empty package on top in the given file extract Extract the package from file clean Remove everything in the cache directory help Print this message or the help of the given subcommand(s)

Options: -h, --help Print help information -V, --version Print version information ```

Note

Related projects

License

PIT is released under the MIT License