1个不稳定版本
0.1.0 | 2023年12月3日 |
---|
#715 in 进程宏
9KB
113 代码行
aoc-auto
简化并加快启动新的Advent of Code挑战的过程。
这是一个生成脚本,它会生成文件,自动生成Rust文件,根据预定的项目结构导入你每年/每天/部分的解决方案。
您可以在https://github.com/AlexanderReaper7/advent-of-code-rs上看到我如何使用它。
用法
安装
运行cargo add aoc-auto --build
将其添加到项目的构建依赖中。
然后添加以下内容到您的build.rs
文件中
// build.rs
use aoc_auto::aoc_auto;
fn main() {
aoc_auto();
}
项目结构
您需要使用名为y{year}
的文件夹,其中包含该年Advent of Code挑战每一天的文件,文件名为d{day}.rs
。以下是一个示例:
├── Cargo.toml
├── build.rs
└── src
├── y2023
│ ├── d1.rs
│ └── d2.rs
├── y2024
│ ├── d1.rs
│ └── d2.rs
└── main.rs
这将转换为以下内容:
├── Cargo.toml
├── build.rs
└── src
├── y2023
│ ├── d1.rs
│ ├── d2.rs
│ └── mod.rs
├── y2024
│ ├── d1.rs
│ ├── d2.rs
│ └── mod.rs
├── main.rs
└── auto_import.rs
d1.rs
(以及任何其他天)必须包含两个函数:part1
和part2
,它们接受一个String
并返回一个String
。
// src/y2023/d1.rs
pub fn part1(input: String) -> String {
unimplemented!()
}
pub fn part2(input: String) -> String {
unimplemented!()
}
运行
在您的main.rs
文件中,您现在可以导入生成的auto_import
文件,并使用select_function
函数选择您的解决方案。
// src/main.rs
mod auto_import;
fn main() {
// Some example input
let input = "challenge input"
// Select the function for year 2023, day 1, part 1
let function = auto_import::select_function(2023, 1, 1).unwrap();
// Call the function with the input and print the result
println!("{}", function(input));
}
待办事项
- CLI工具,用于在所选年份和天数中创建模板文件。
- 同时从AOC网站自动获取该天的标题和URL,并将其粘贴到文件描述中。
依赖项
~0.5–1MB
~24K SLoC