diff --git a/src/rust/liblektor-rs/lektor_c_compat/src/lib.rs b/src/rust/liblektor-rs/lektor_c_compat/src/lib.rs
index f17bb99be820c5d443aa5f50249cb9c62eb58f16..a946a73eb6fe5b52574236e2663d010eb408aefd 100644
--- a/src/rust/liblektor-rs/lektor_c_compat/src/lib.rs
+++ b/src/rust/liblektor-rs/lektor_c_compat/src/lib.rs
@@ -6,6 +6,9 @@
 
 pub mod c_types;
 
+mod rs_types;
+pub use rs_types::*;
+
 pub use libc::{c_char, c_int, c_long, c_void, size_t};
 
 /// The maximal length of a tag in lektor.
diff --git a/src/rust/liblektor-rs/lektor_c_compat/src/rs_types.rs b/src/rust/liblektor-rs/lektor_c_compat/src/rs_types.rs
new file mode 100644
index 0000000000000000000000000000000000000000..5f914a6461764108742b32a15a9ebd08a38958de
--- /dev/null
+++ b/src/rust/liblektor-rs/lektor_c_compat/src/rs_types.rs
@@ -0,0 +1,21 @@
+use crate::c_types::*;
+
+pub struct LktCQueue {
+    c_ptr: LktQueuePtr,
+}
+
+pub struct LktCUri {
+    c_ptr: LktUriPtr,
+}
+
+impl From<LktQueuePtr> for LktCQueue {
+    fn from(c_ptr: LktQueuePtr) -> Self {
+        Self { c_ptr }
+    }
+}
+
+impl From<LktUriPtr> for LktCUri {
+    fn from(c_ptr: LktUriPtr) -> Self {
+        Self { c_ptr }
+    }
+}
diff --git a/src/rust/liblektor-rs/lektor_repo/src/lib.rs b/src/rust/liblektor-rs/lektor_repo/src/lib.rs
index 3552656f182833a2c4dc1722e156462e21cd7e8f..78bd549788890400228339619d149bf907d6bec2 100644
--- a/src/rust/liblektor-rs/lektor_repo/src/lib.rs
+++ b/src/rust/liblektor-rs/lektor_repo/src/lib.rs
@@ -1,8 +1,8 @@
 //! The crate responsible of downloading karas from kurisu.
 
-use lektor_c_compat::c_types::*;
+use lektor_c_compat::*;
 
 /// The structure responsible to download karas from kurisu.
 pub struct LktModuleRepoRs {
-    queue: LktQueuePtr,
+    queue: LktCQueue,
 }