layer-tl-types 0.4.7

Auto-generated Telegram TL types: constructors, functions, enums (Layer 224)
Documentation

layer-tl-types

Auto-generated Rust types for all Telegram API Layer 224 constructors, functions, and enums.

Crates.io docs.rs License: MIT OR Apache-2.0 TL Layer

2,329 TL definitions generated at build time. Includes binary TL serialization and deserialization via Serializable and Deserializable traits.


Installation

[dependencies]
layer-tl-types = "0.4.7"

# With MTProto low-level types (required by layer-mtproto):
layer-tl-types = { version = "0.4.7", features = ["tl-mtproto"] }

Generated Structure

// TL constructors become structs
pub mod types {
    pub struct Message {
        pub id:      i32,
        pub peer_id: enums::Peer,
        pub message: String,
        // optional fields wrapped in Option<>
    }
}

// Abstract TL types become enums
pub mod enums {
    pub enum Message {
        Message(types::Message),
        Service(types::MessageService),
        Empty(types::MessageEmpty),
    }
}

// TL functions become structs implementing RemoteCall
pub mod functions {
    pub mod messages {
        pub struct SendMessage { /* fields */ }
        impl RemoteCall for SendMessage {
            type Return = enums::Updates;
        }
    }
}

Feature Flags

Feature Default Description
tl-api yes Telegram API schema (api.tl)
tl-mtproto no MTProto internal schema (mtproto.tl)
impl-debug yes #[derive(Debug)] on all types
impl-from-type yes From<types::T> for enums::E
impl-from-enum yes TryFrom<enums::E> for types::T
deserializable-functions no Deserializable on function types
name-for-id no name_for_id(u32) -> Option<&'static str>
impl-serde no serde::Serialize / Deserialize

Updating the TL Schema

cp new-api.tl layer-tl-types/tl/api.tl
cargo build

layer-tl-gen regenerates all types at compile time via build.rs. No manual code changes needed.


Stack position

layer-client
└ layer-mtproto
  └ layer-tl-types  <-- here
    └ (build) layer-tl-gen
      └ (build) layer-tl-parser

License

MIT or Apache-2.0, at your option. See LICENSE-MIT and LICENSE-APACHE.

Ankit Chaubey - github.com/ankit-chaubey