diff --git a/Cargo.lock b/Cargo.lock index a6d6aca1..ccab3c2e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1984,6 +1984,7 @@ dependencies = [ "ironrdp-cliprdr", "ironrdp-cliprdr-native", "ironrdp-connector", + "ironrdp-core", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-graphics", @@ -2125,6 +2126,13 @@ dependencies = [ "winapi", ] +[[package]] +name = "ironrdp-core" +version = "0.1.0" +dependencies = [ + "ironrdp-error", +] + [[package]] name = "ironrdp-displaycontrol" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index d1f77250..745c6ca7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,7 @@ ironrdp-blocking = { version = "0.1", path = "crates/ironrdp-blocking" } ironrdp-cliprdr = { version = "0.1", path = "crates/ironrdp-cliprdr" } ironrdp-cliprdr-native = { version = "0.1", path = "crates/ironrdp-cliprdr-native" } ironrdp-cliprdr-format = { version = "0.1", path = "crates/ironrdp-cliprdr-format" } +ironrdp-core = { version = "0.1", path = "crates/ironrdp-core" } ironrdp-connector = { version = "0.1", path = "crates/ironrdp-connector" } ironrdp-dvc = { version = "0.1", path = "crates/ironrdp-dvc" } ironrdp-displaycontrol = { version = "0.1", path = "crates/ironrdp-displaycontrol" } diff --git a/crates/ironrdp-core/Cargo.toml b/crates/ironrdp-core/Cargo.toml new file mode 100644 index 00000000..01abdc3a --- /dev/null +++ b/crates/ironrdp-core/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "ironrdp-core" +version = "0.1.0" +readme = "README.md" +description = "IronRDP common traits and types" +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +authors.workspace = true +keywords.workspace = true +categories.workspace = true + +[lib] +doctest = false +test = false + +[features] +default = [] +std = ["alloc", "ironrdp-error/std"] +alloc = ["ironrdp-error/alloc"] + +[dependencies] +ironrdp-error.workspace = true diff --git a/crates/ironrdp-core/README.md b/crates/ironrdp-core/README.md new file mode 100644 index 00000000..e02bb22d --- /dev/null +++ b/crates/ironrdp-core/README.md @@ -0,0 +1,3 @@ +# IronRDP Core + +IronRDP common traits and types. diff --git a/crates/ironrdp-core/src/lib.rs b/crates/ironrdp-core/src/lib.rs new file mode 100644 index 00000000..bf6031f7 --- /dev/null +++ b/crates/ironrdp-core/src/lib.rs @@ -0,0 +1,14 @@ +#![cfg_attr(not(feature = "std"), no_std)] +#![doc = include_str!("../README.md")] +#![warn(clippy::std_instead_of_alloc)] +#![warn(clippy::std_instead_of_core)] +#![warn(missing_docs)] + +#[cfg(feature = "alloc")] +extern crate alloc; + +// Trait that can only be implemented within the current module +pub(crate) mod private { + #[doc(hidden)] + pub trait Sealed {} +} diff --git a/crates/ironrdp/Cargo.toml b/crates/ironrdp/Cargo.toml index 8e0d7895..d00ad979 100644 --- a/crates/ironrdp/Cargo.toml +++ b/crates/ironrdp/Cargo.toml @@ -16,7 +16,8 @@ doctest = false test = false [features] -default = ["pdu", "connector", "session"] +default = ["core", "pdu", "connector", "session"] +core = ["dep:ironrdp-core"] pdu = ["dep:ironrdp-pdu"] cliprdr = ["dep:ironrdp-cliprdr"] connector = ["dep:ironrdp-connector"] @@ -32,6 +33,7 @@ rdpsnd = ["dep:ironrdp-rdpsnd"] displaycontrol = ["dep:ironrdp-displaycontrol"] [dependencies] +ironrdp-core = { workspace = true, optional = true } ironrdp-pdu = { workspace = true, optional = true } ironrdp-cliprdr = { workspace = true, optional = true } ironrdp-connector = { workspace = true, optional = true } @@ -77,4 +79,3 @@ doc-scrape-examples = true [lints] workspace = true - diff --git a/crates/ironrdp/src/lib.rs b/crates/ironrdp/src/lib.rs index 6262e297..c812c621 100644 --- a/crates/ironrdp/src/lib.rs +++ b/crates/ironrdp/src/lib.rs @@ -8,6 +8,8 @@ pub use ironrdp_acceptor as acceptor; pub use ironrdp_cliprdr as cliprdr; #[cfg(feature = "connector")] pub use ironrdp_connector as connector; +#[cfg(feature = "core")] +pub use ironrdp_core as core; #[cfg(feature = "displaycontrol")] pub use ironrdp_displaycontrol as displaycontrol; #[cfg(feature = "dvc")]