Rust macros for reading in all lines from a file at compile time. This can be very useful for loading static data.
For the examples, there is a file file.txt
in the same directory as the project's Cargo.toml file:
these
are
file
lines
use include_lines::include_lines;
let lines = include_lines!("file.txt");
For the example file, this expands to:
let lines = [
"these",
"are",
"file",
"lines",
];
use include_lines::include_lines_s;
let lines = include_lines_s!("file.txt");
For the example file, this expands to:
let lines = [
String::from("these"),
String::from("are"),
String::from("file"),
String::from("lines"),
];
use include_lines::count_lines;
let num_lines = count_lines!("file.txt");
For the example file, this expands to:
let num_lines = 4usize;
You can use the static_include_lines!
and static_include_lines_s!
macros to initialize static text arrays at compile time:
use include_lines::{static_include_lines};
static_include_lines!(LINES, "file.txt");
For the example file, this expands to:
static LINES: [&str; 4] = [
"these",
"are",
"file",
"lines",
];