#单文件 #展开 #合并 #捆绑 #源文件 #语法树 #CLI

程序+库 rust_bundler_cp

创建 Cargo 包的单源文件版本。这个单文件可以用于竞技编程。目前专注于 codeforces.com。

20 个版本

0.3.16 2023年9月26日
0.3.15 2022年8月2日
0.3.14 2022年7月22日
0.3.8 2022年6月26日
0.2.8 2021年8月13日

#1016命令行工具

Download history 1/week @ 2024-05-25 1/week @ 2024-06-01 2/week @ 2024-06-08 1/week @ 2024-06-15 16/week @ 2024-07-06 57/week @ 2024-07-27

每月下载量 73

MIT 许可

30KB
516

rust-bundler-cp

本项目基于 rust-bundler

创建 Cargo 包的单源文件版本。它设计用于像 Codeforces 这样的竞技编程。

我正在使用 rust-bundler-cp 和我的 codeforces 模板 https://github.com/Endle/rust_codeforce_template

功能

  • 使用 Syn 解析和操作完整的语法树,而不是使用正则表达式进行替换。
  • extern crate my_lib;main.rs 中的替换为 lib.rs 的内容。
  • mod my_mod; 声明展开为 mod my_mod { ... } 块。
  • rustfmt 需要在 PATH 中可用,即 dnf install rustfmt。我将在未来的代码中考虑捆绑 rustfmt

示例

输入

// src/internal.rs:
pub fn hello_world() {
    println!("Hello, world!");
}

// src/lib.rs:
mod internal;
pub use internal::hello_world;

// src/main.rs:
extern crate example;
fn main() {
    example::hello_world();
}

输出

mod internal {
    pub fn hello_world() {
        println!("Hello, world!");
    }
}
pub use internal::hello_world;
fn main() {
    hello_world();
}

更多示例在 tests/testdata

用法

安装

$ cargo install rust_bundler_cp

运行

$ rust_bundler_cp --input path/to/project >output.rs
$ rust_bundler_cp --input path/to/project --binary a

类似项目

依赖项

~4-18MB
~233K SLoC