ferogram-tl-types 0.6.5

Auto-generated Telegram TL types: constructors, functions, enums
Documentation

ferogram-tl-types

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

Crates.io Telegram Channel Telegram Chat docs.rs License

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

Most users get this through ferogram directly. For installation instructions see the ferogram README.


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
field-accessors yes Generated getter methods for struct fields
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

This project is licensed under either the MIT License or Apache License 2.0, at your option. See LICENSE-MIT and LICENSE-APACHE for details.

Author: Ankit Chaubey (@ankit-chaubey)