ferogram-tl-types 0.3.4

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

ferogram-tl-types

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

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

2,329 TL definitions generated at build time from Layer 224. All constructors, functions, and abstract types are represented as Rust structs and enums with binary TL serialization and deserialization.


Installation

[dependencies]
ferogram-tl-types = "0.3"

# With MTProto low-level types (required by ferogram-mtproto):
ferogram-tl-types = { version = "0.3", 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 ferogram-tl-types/tl/api.tl
cargo build

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


Stack position

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

License

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

Ankit Chaubey - github.com/ankit-chaubey