当我完成《2021年代码降临节》时,我有一个main.rs
文件,如下所示:
// # Day 1
if day1::is_complete() && print_complete || !day1::is_complete() {
day1::part1();
day1::part2();
} else {
println!("✅ Day 1 finished!")
}
// # Day 2
if day2::is_complete() && print_complete || !day2::is_complete() {
day2::part1();
day2::part2();
} else {
println!("✅ Day 2 finished!")
}
...
这种情况持续了整整25天。
每个模块都有一个称为part1
和part2
的函数。
对于像pythoneval
这样更简洁的文件,有没有这样的方法?
for day in 1..=25 {
let mod_name = convert_to_mod_name(day);
if mod_name::is_complete() && print_complete || !mod_name::is_complete() {
mod_name::part1();
mod_name::part2();
} else {
println!("✅ Day {day} finished!", day);
}
对于像python
eval
这样更简洁的文件,有没有这样的方法?
否。Python是一种动态语言。Rust是一种静态编译的语言。
最接近的方法是加载一个动态链接库。Rust没有一个稳定的ABI,除了一小部分用于FFI。这本质上是不安全的。
TL;DR:像代码的出现这样的东西是不值得的。