From dd025391f2f3a4cb0a45e28163b01538b4b525cb Mon Sep 17 00:00:00 2001
From: mo8it <mo8it@proton.me>
Date: Thu, 28 Mar 2024 17:52:51 +0100
Subject: [PATCH] Make everything static

---
 rustlings-macros/src/lib.rs | 6 +++---
 src/main.rs                 | 9 +++++----
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/rustlings-macros/src/lib.rs b/rustlings-macros/src/lib.rs
index dd1a588..d8cd05c 100644
--- a/rustlings-macros/src/lib.rs
+++ b/rustlings-macros/src/lib.rs
@@ -63,7 +63,7 @@ pub fn include_files(_: TokenStream) -> TokenStream {
                     path: concat!(#dir_path, "/README.md"),
                     content: ::std::include_bytes!(concat!("../", #dir_path, "/README.md")),
                 },
-                content: vec![
+                content: &[
                     #(EmbeddedFile {
                         path: #dir_files,
                         content: ::std::include_bytes!(concat!("../", #dir_files)),
@@ -81,13 +81,13 @@ pub fn include_files(_: TokenStream) -> TokenStream {
                     path: "exercises/README.md",
                     content: ::std::include_bytes!("../exercises/README.md"),
                 },
-                files: vec![#(
+                files: &[#(
                      EmbeddedFile {
                         path: #files,
                         content: ::std::include_bytes!(concat!("../", #files)),
                     }
                 ),*],
-                dirs: vec![#(#dirs),*],
+                dirs: &[#(#dirs),*],
             },
         }
     }
diff --git a/src/main.rs b/src/main.rs
index fed8c11..7822d12 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -35,13 +35,13 @@ struct EmbeddedFile {
 struct EmbeddedFlatDir {
     path: &'static str,
     readme: EmbeddedFile,
-    content: Vec<EmbeddedFile>,
+    content: &'static [EmbeddedFile],
 }
 
 struct ExercisesDir {
     readme: EmbeddedFile,
-    files: Vec<EmbeddedFile>,
-    dirs: Vec<EmbeddedFlatDir>,
+    files: &'static [EmbeddedFile],
+    dirs: &'static [EmbeddedFlatDir],
 }
 
 struct EmbeddedFiles {
@@ -49,6 +49,8 @@ struct EmbeddedFiles {
     exercises_dir: ExercisesDir,
 }
 
+static EMBEDDED_FILES: EmbeddedFiles = rustlings_macros::include_files!();
+
 /// Rustlings is a collection of small exercises to get you used to writing and reading Rust code
 #[derive(Parser)]
 #[command(version)]
@@ -109,7 +111,6 @@ enum Subcommands {
 }
 
 fn main() -> Result<()> {
-    let embedded_files = rustlings_macros::include_files!();
     let args = Args::parse();
 
     if args.command.is_none() {