1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
use url::Url; use rsiot_messages_core::IMessage; /// Настройки Websocket-клиента #[derive(Clone, Debug)] pub struct Config<TMsg> where TMsg: IMessage, { /// Адрес Websocket-сервера pub url: Url, /// Преобразование входящих сообщений в текст для отправки на сервер /// /// # Примеры /// /// ## Пустой коллбек /// /// ```rust /// |_: &TMsg| Ok(None) /// ``` /// /// ## Преобразование в json /// /// ```rust /// |msg: &TMsg| { /// let text = msg.to_json()?; /// Ok(Some(text)) /// } /// ``` pub fn_input: fn(&TMsg) -> anyhow::Result<Option<String>>, /// Преобразование полученного от сервера текста в исходящие сообщения /// /// # Примеры /// /// ## Пустой коллбек /// /// ```rust /// |_: &str| Ok(vec![]) /// ``` /// /// ## Преобразование из json: /// /// ```rust /// |text: &str| { /// let msg = TMsg::from_json(text)?; /// Ok(vec![msg]) /// } /// ``` pub fn_output: fn(&str) -> anyhow::Result<Vec<TMsg>>, }