diff --git a/CMakeLists.txt b/CMakeLists.txt
index 61cc703840ad672483ca9e0684a97d8105475e27..d388a55511b36434c2d6a0af336bc25bd183a886 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -175,6 +175,7 @@ set(lektor_db_SOURCES
 set(lektor_module_SOURCES
     src/base/reg.c
     src/module/module_repo.c
+    src/module/module_repo_rs.c
     src/module/mpv.c
     src/module/module_sdl2.c
     src/module/thread.c
diff --git a/src/module/module_repo_rs.c b/src/module/module_repo_rs.c
index 45c1cdb2950b46796a5adfe486851e0bf9a74c85..2f42be781fc116bc02710f0d717a2a302144e52a 100644
--- a/src/module/module_repo_rs.c
+++ b/src/module/module_repo_rs.c
@@ -7,7 +7,7 @@
  * Function from RUST *
  **********************/
 
-typedef module_repo_rs_internal;
+struct module_repo_rs_internal;
 
 /********************
  * Export functions *
@@ -16,7 +16,7 @@ typedef module_repo_rs_internal;
 PRIVATE_FUNCTION int
 mod_new(va_list *va) {
     va_list copy;
-    struct module_repo_rs_internal **repo;
+    struct module_repo_rs_internal **UNUSED repo;
     va_copy(copy, *va);
     repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
 
@@ -26,31 +26,67 @@ mod_new(va_list *va) {
 
 PRIVATE_FUNCTION int
 mod_free(va_list *va) {
+    va_list copy;
+    struct module_repo_rs_internal **UNUSED repo;
+    va_copy(copy, *va);
+    repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
+
+    va_end(copy);
     return 1;
 }
 
 PRIVATE_FUNCTION int
 mod_close(va_list *va) {
+    va_list copy;
+    struct module_repo_rs_internal **UNUSED repo;
+    va_copy(copy, *va);
+    repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
+
+    va_end(copy);
     return 1;
 }
 
 PRIVATE_FUNCTION int
 mod_update(va_list *va) {
+    va_list copy;
+    struct module_repo_rs_internal **UNUSED repo;
+    va_copy(copy, *va);
+    repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
+
+    va_end(copy);
     return 1;
 }
 
 PRIVATE_FUNCTION int
 mod_dry_update(va_list *va) {
+    va_list copy;
+    struct module_repo_rs_internal **UNUSED repo;
+    va_copy(copy, *va);
+    repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
+
+    va_end(copy);
     return 1;
 }
 
 PRIVATE_FUNCTION int
 mod_rescan(va_list *va) {
+    va_list copy;
+    struct module_repo_rs_internal **UNUSED repo;
+    va_copy(copy, *va);
+    repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
+
+    va_end(copy);
     return 1;
 }
 
 PRIVATE_FUNCTION int
 mod_import(va_list *va) {
+    va_list copy;
+    struct module_repo_rs_internal **UNUSED repo;
+    va_copy(copy, *va);
+    repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
+
+    va_end(copy);
     return 1;
 }