diff options
author | 2024-04-02 09:29:16 +0200 | |
---|---|---|
committer | 2024-04-02 09:29:16 +0200 | |
commit | 488cac714896002791f3c7b9a99181310c1d1b5c (patch) | |
tree | 46d3f1b92efcc3b815662c23aed292dae722366d /examples/websocket/src/echo.rs | |
parent | dee43d5f66c97dddffebbc02c4a87674fb2c13b9 (diff) | |
download | iced-488cac714896002791f3c7b9a99181310c1d1b5c.tar.gz iced-488cac714896002791f3c7b9a99181310c1d1b5c.tar.bz2 iced-488cac714896002791f3c7b9a99181310c1d1b5c.zip |
Avoid extra text allocations in `websocket` example
Diffstat (limited to 'examples/websocket/src/echo.rs')
-rw-r--r-- | examples/websocket/src/echo.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/examples/websocket/src/echo.rs b/examples/websocket/src/echo.rs index 281ed4bd..cd32cb66 100644 --- a/examples/websocket/src/echo.rs +++ b/examples/websocket/src/echo.rs @@ -2,6 +2,7 @@ pub mod server; use iced::futures; use iced::subscription::{self, Subscription}; +use iced::widget::text; use futures::channel::mpsc; use futures::sink::SinkExt; @@ -136,16 +137,24 @@ impl Message { pub fn disconnected() -> Self { Message::Disconnected } + + pub fn as_str(&self) -> &str { + match self { + Message::Connected => "Connected successfully!", + Message::Disconnected => "Connection lost... Retrying...", + Message::User(message) => message.as_str(), + } + } } impl fmt::Display for Message { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - Message::Connected => write!(f, "Connected successfully!"), - Message::Disconnected => { - write!(f, "Connection lost... Retrying...") - } - Message::User(message) => write!(f, "{message}"), - } + f.write_str(self.as_str()) + } +} + +impl<'a> text::IntoFragment<'a> for &'a Message { + fn into_fragment(self) -> text::Fragment<'a> { + text::Fragment::Borrowed(self.as_str()) } } |