Ответ 1
В настоящее время вы не можете этого сделать. Ваш пример 1000 * "abc"
также не запускается в "время компиляции" на Python, насколько я понимаю Python.
Включение файла
Если он должен быть статичным, вы можете использовать Cargo build script. Это немного кода Rust, который может сделать много вещей, прежде чем ваш код будет скомпилирован. В частности, вы можете написать исходный файл, в котором есть ваша строка, а затем используйте include_str!
в свой ящик:
build.rs
use std::{iter, env};
use std::path::Path;
use std::io::{Write, BufWriter};
use std::fs::File;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("long_string.txt");
let mut f = BufWriter::new(File::create(&dest_path).unwrap());
let long_string = "abc".repeat(100);
write!(f, "{}", long_string).unwrap();
}
lib.rs
static LONG_STRING: &'static str = include_str!("long_string.txt");
Ленивая инициализация
Возможно, вы также можете создать lazy_static, в результате чего ваша строка будет создана один раз. Это делается во время выполнения, но только один раз.