Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Feature Flags

layer-client

FeatureDefaultDescription
sqlite-sessionSQLite-backed session storage via rusqlite
layer-client = { version = "0.2.2", features = ["sqlite-session"] }

layer-tl-types

FeatureDefaultDescription
tl-apiTelegram API schema (constructors, functions, enums)
tl-mtprotoLow-level MTProto transport types
impl-debug#[derive(Debug)] on all generated types
impl-from-typeFrom<types::T> for enums::E conversions
impl-from-enumTryFrom<enums::E> for types::T conversions
name-for-idname_for_id(id: u32) -> Option<&'static str>
impl-serdeserde::Serialize + serde::Deserialize on all types
deserializable-functionsDeserializable for function types (server use)

Example: enable serde

layer-tl-types = { version = "0.2.2", features = ["tl-api", "impl-serde"] }

Then:

#![allow(unused)]
fn main() {
let json = serde_json::to_string(&some_tl_type)?;
}

Example: name_for_id (debugging)

layer-tl-types = { version = "0.2.2", features = ["tl-api", "name-for-id"] }
#![allow(unused)]
fn main() {
use layer_tl_types::name_for_id;

if let Some(name) = name_for_id(0x74ae4240) {
    println!("Constructor: {name}"); // → "updates"
}
}

Example: minimal (no Debug, no conversions)

layer-tl-types = { version = "0.2.2", default-features = false, features = ["tl-api"] }

This reduces compile time if you don’t need the convenience traits.