8 个版本
0.3.2 | 2023年2月22日 |
---|---|
0.3.1 | 2022年12月28日 |
0.2.2 | 2022年12月1日 |
0.2.1 | 2022年11月29日 |
0.1.1 | 2022年11月28日 |
#195 in 构建工具
每月下载量 75
1MB
727 代码行
PIT
运行包含多个包的 Rust 代码片段。将 Cargo.toml
作为注释嵌入以避免特殊格式化。
- 以调试模式运行代码片段
- 以发布模式构建代码片段中的包并将工件分发到目录
- 将代码片段中的包提取为独立的包
存在一个简单的缓存系统,详情见下文。
动机
-
rust-analyzer 支持 单个文件
- https://github.com/rust-lang/rust-analyzer/issues/6388
- 在这种情况下,即使存在多个 main 函数也不会出错
VSCode 中的代码片段
-
一个工作区中包含大量包会使 rust-analyzer 变得沉重。当打开单个文件时,rust-analyzer 的功能有限,但它非常轻量级
- 然而,我相信它具有足够的功能来编写代码片段,因为它可以补充标准库
rust-analyzer 自动补全
用法
$ 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 = serde_json::from_str(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
$ 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
注意
target
目录被缓存- 当执行
run
和build
时,始终以 调试模式 构建 - 如果在
run
执行时源文件未被修改并且存在调试模式工件,则直接执行二进制文件而不进行构建
相关项目
- rust-script 和 README 中列出的项目。
许可协议
PIT 在 MIT 许可协议下发布
依赖项
~4.5MB
~86K SLoC