diff --git a/lib/grammers-client/Cargo.toml b/lib/grammers-client/Cargo.toml index 99e2a669..30d4a78c 100644 --- a/lib/grammers-client/Cargo.toml +++ b/lib/grammers-client/Cargo.toml @@ -17,7 +17,7 @@ version = "0.7.0" html = ["html5ever"] markdown = ["pulldown-cmark"] parse_invite_link = ["url"] -proxy = ["grammers-mtsender/proxy"] +serde = ["grammers-tl-types/impl-serde"] [dependencies] chrono = "0.4.38" diff --git a/lib/grammers-tl-gen/src/enums.rs b/lib/grammers-tl-gen/src/enums.rs index 400bfdc0..c2ab1772 100644 --- a/lib/grammers-tl-gen/src/enums.rs +++ b/lib/grammers-tl-gen/src/enums.rs @@ -37,7 +37,9 @@ fn write_enum( writeln!(file, "{indent}#[derive(Debug)]")?; } - writeln!(file, "{indent}#[derive(serde_derive::Serialize, serde_derive::Deserialize)]")?; + if config.impl_serde{ + writeln!(file, "{indent}#[derive(serde_derive::Serialize, serde_derive::Deserialize)]")?; + } writeln!(file, "{indent}#[derive(Clone, PartialEq)]")?; writeln!( diff --git a/lib/grammers-tl-gen/src/lib.rs b/lib/grammers-tl-gen/src/lib.rs index 5cac0797..c2f1380c 100644 --- a/lib/grammers-tl-gen/src/lib.rs +++ b/lib/grammers-tl-gen/src/lib.rs @@ -26,6 +26,7 @@ pub struct Config { pub impl_debug: bool, pub impl_from_type: bool, pub impl_from_enum: bool, + pub impl_serde: bool, } impl Default for Config { @@ -36,6 +37,7 @@ impl Default for Config { impl_debug: true, impl_from_type: true, impl_from_enum: true, + impl_serde: false, } } } diff --git a/lib/grammers-tl-gen/src/structs.rs b/lib/grammers-tl-gen/src/structs.rs index 374573ea..61b69c59 100644 --- a/lib/grammers-tl-gen/src/structs.rs +++ b/lib/grammers-tl-gen/src/structs.rs @@ -63,7 +63,9 @@ fn write_struct( writeln!(file, "{indent}#[derive(Debug)]")?; } - writeln!(file, "{indent}#[derive(serde_derive::Serialize, serde_derive::Deserialize)]")?; + if config.impl_serde{ + writeln!(file, "{indent}#[derive(serde_derive::Serialize, serde_derive::Deserialize)]")?; + } writeln!(file, "{indent}#[derive(Clone, PartialEq)]")?; write!( diff --git a/lib/grammers-tl-types/Cargo.toml b/lib/grammers-tl-types/Cargo.toml index 0e32f450..e30de80a 100644 --- a/lib/grammers-tl-types/Cargo.toml +++ b/lib/grammers-tl-types/Cargo.toml @@ -1,26 +1,28 @@ [package] -name = "grammers-tl-types" -version = "0.7.0" authors = ["Lonami Exo "] -license = "MIT OR Apache-2.0" +categories = ["data-structures", "encoding"] description = """ Rust definitions for Telegram's API types and functions. """ -homepage = "https://github.com/Lonami/grammers" documentation = "https://docs.rs/grammers-tl-types" -repository = "https://github.com/Lonami/grammers" -keywords = ["telegram", "tl"] -categories = ["data-structures", "encoding"] edition = "2021" +homepage = "https://github.com/Lonami/grammers" include = [ - "build.rs", - "src/*.rs", - "tl/*.tl", + "build.rs", + "src/*.rs", + "tl/*.tl", ] +keywords = ["telegram", "tl"] +license = "MIT OR Apache-2.0" +name = "grammers-tl-types" +repository = "https://github.com/Lonami/grammers" +version = "0.7.0" [build-dependencies] -grammers-tl-gen = { path = "../grammers-tl-gen", version = "0.7.0" } -grammers-tl-parser = { path = "../grammers-tl-parser", version = "1.1.2" } +grammers-tl-gen = {path = "../grammers-tl-gen", version = "0.7.0"} +grammers-tl-parser = {path = "../grammers-tl-parser", version = "1.1.2"} +serde = {version = "1.0.210", optional = true} +serde_derive = {version = "1.0.210", optional = true} [dev-dependencies] toml = "0.8.19" @@ -32,9 +34,6 @@ deserializable-functions = [] impl-debug = [] impl-from-enum = [] impl-from-type = [] +impl-serde = ["dep:serde", "dep:serde_derive"] tl-api = [] tl-mtproto = [] - -[dependencies] -serde = "1.0.210" -serde_derive = "1.0.210" diff --git a/lib/grammers-tl-types/build.rs b/lib/grammers-tl-types/build.rs index ae1d2d90..0a4d0a2f 100644 --- a/lib/grammers-tl-types/build.rs +++ b/lib/grammers-tl-types/build.rs @@ -76,6 +76,7 @@ fn main() -> std::io::Result<()> { impl_debug: cfg!(feature = "impl-debug"), impl_from_enum: cfg!(feature = "impl-from-enum"), impl_from_type: cfg!(feature = "impl-from-type"), + impl_serde: cfg!(feature = "impl-serde"), }; generate_rust_code(&mut file, &definitions, layer, &config)?;