diff --git a/src/rust/liblektor-rs/lektor_c_compat/Cargo.toml b/src/rust/liblektor-rs/lektor_c_compat/Cargo.toml index d39190b948e3c7c152b0b4ee990b92a231149cf4..4a5056876d0f12f802bc896bdcb76f506ab62905 100644 --- a/src/rust/liblektor-rs/lektor_c_compat/Cargo.toml +++ b/src/rust/liblektor-rs/lektor_c_compat/Cargo.toml @@ -9,3 +9,6 @@ license.workspace = true log.workspace = true libc.workspace = true lazy_static.workspace = true + +[features] +c_types = [] 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 241109ad874e633ea02530352afd0183eeda6ff9..dfc7a0349449ed4c12fbc2db1e43f1e72ea75c48 100644 --- a/src/rust/liblektor-rs/lektor_c_compat/src/lib.rs +++ b/src/rust/liblektor-rs/lektor_c_compat/src/lib.rs @@ -4,10 +4,19 @@ //! From safe rust code you *must not* use the types defined in the [c_types] //! module. -pub mod c_types; - +pub(crate) mod c_types; mod rs_types; -pub use rs_types::*; + +/// Re-exports the Rust types. +pub mod rs { + pub use crate::rs_types::*; +} + +/// Re-exports the C types if the feature is enabled. +#[cfg(feature = "c_types")] +pub mod c { + pub use crate::c_types::*; +} pub use libc::{c_char, c_int, c_long, c_uint, c_void, size_t}; diff --git a/src/rust/liblektor-rs/lektor_repo/src/lib.rs b/src/rust/liblektor-rs/lektor_repo/src/lib.rs index 78bd549788890400228339619d149bf907d6bec2..ffd59cd6b582b3f1b15af0ac38f124e457069d28 100644 --- a/src/rust/liblektor-rs/lektor_repo/src/lib.rs +++ b/src/rust/liblektor-rs/lektor_repo/src/lib.rs @@ -1,6 +1,6 @@ //! The crate responsible of downloading karas from kurisu. -use lektor_c_compat::*; +use lektor_c_compat::rs::*; /// The structure responsible to download karas from kurisu. pub struct LktModuleRepoRs { diff --git a/src/rust/liblektor-rs/lektor_unsafe/Cargo.toml b/src/rust/liblektor-rs/lektor_unsafe/Cargo.toml index 588c5d84a6becbf28686058b17aeba3bb71f9b5a..fd41d724398af083e0efbfcfd91ad2ab8db16f7b 100644 --- a/src/rust/liblektor-rs/lektor_unsafe/Cargo.toml +++ b/src/rust/liblektor-rs/lektor_unsafe/Cargo.toml @@ -9,6 +9,6 @@ crate-type = ["staticlib"] [dependencies] log.workspace = true -lektor_c_compat = { path = "../lektor_c_compat" } +lektor_c_compat = { path = "../lektor_c_compat", features = ["c_types"] } lektor_repo = { path = "../lektor_repo" } lektor_db = { path = "../lektor_db" } diff --git a/src/rust/liblektor-rs/lektor_unsafe/src/lib.rs b/src/rust/liblektor-rs/lektor_unsafe/src/lib.rs index c89df43fe07807fb2a561a1b16bc2e877e40d854..b99c1a476084ed7c7fa9c8ffa79c1628365d77a9 100644 --- a/src/rust/liblektor-rs/lektor_unsafe/src/lib.rs +++ b/src/rust/liblektor-rs/lektor_unsafe/src/lib.rs @@ -6,6 +6,6 @@ pub mod db; pub mod repo; -pub(crate) use lektor_c_compat::*; +pub(crate) use lektor_c_compat::{c::*, *}; pub(crate) use log::error; pub(crate) use std::{mem::ManuallyDrop, path::PathBuf}; diff --git a/src/rust/liblektor-rs/lektor_unsafe/src/repo.rs b/src/rust/liblektor-rs/lektor_unsafe/src/repo.rs index f5bd90de2787d9d302c27cda5e1f836e22c44d8c..89346dd98ef9677e48c75192b767660dd64c747e 100644 --- a/src/rust/liblektor-rs/lektor_unsafe/src/repo.rs +++ b/src/rust/liblektor-rs/lektor_unsafe/src/repo.rs @@ -1,4 +1,4 @@ -use crate::{c_types::*, *}; +use crate::*; use lektor_repo::*; /// A pointer to the repo structure. This is the only thing the C code will see.