From 1df58eba029decd0d651f78bc243d8d8a666f009 Mon Sep 17 00:00:00 2001 From: Temirkhan Myrzamadi Date: Thu, 16 Apr 2020 23:59:24 +0600 Subject: [PATCH] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7722ad44..e4755566 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ - [Contributing](https://github.com/teloxide/teloxide#contributing) ## Features - - **Functional design.** Instead of writing separate handlers for every possible user action, all having access to some shared mutable state, you treat external events as a [stream](https://docs.rs/futures/latest/futures/prelude/trait.Stream.html) and apply a series of transformations to it. + - **Higher-order design.** teloxide supports [higher-order programming](https://en.wikipedia.org/wiki/Higher-order_programming) by making [streams](https://docs.rs/futures/latest/futures/prelude/trait.Stream.html) a [first-class citizen](https://en.wikipedia.org/wiki/First-class_citizen): feel free to demultiplex them, apply arbitrary transformations, pass to/return from other functions, [lazily evaluate them](https://en.wikipedia.org/wiki/Lazy_evaluation), concurrently process their items, and much more, thereby achieving extremely flexible design. - **Type-safe.** All the API [types](https://docs.rs/teloxide/latest/teloxide/types/index.html) and [methods](https://docs.rs/teloxide/0.2.0/teloxide/requests/index.html) are implemented with heavy use of [**ADT**s](https://en.wikipedia.org/wiki/Algebraic_data_type) to enforce type-safety and tight integration with IDEs. Bot's commands [have precise types too](https://github.com/teloxide/teloxide#commands), thereby serving as a self-documenting code and respecting the [parse, don't validate](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/) programming idiom.