diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-10-27 17:29:36 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-10-28 01:27:13 -0400 |
| commit | 398bc79a3f1f4316e6cc33b6e6bce133c1db3e4c (patch) | |
| tree | f34f9ec001d2064b080b302fba175d66b08865ce /src/app.rs | |
| parent | 2d05e6fb933d8c33078232b3bdfbc2aa05106d80 (diff) | |
Convert the `Conversations` component into a freestanding struct.
Unlike the previous example, this involves cloning an event broadcaster, as well. This is, per the documentation, how the type may be used. From <https://docs.rs/tokio/latest/tokio/sync/broadcast/fn.channel.html>:
> The Sender can be cloned to send to the same channel from multiple points in the process or it can be used concurrently from an `Arc`.
The language is less firm than the language sqlx uses for its pool, but the intent is clear enough, and it works in practice.
Diffstat (limited to 'src/app.rs')
| -rw-r--r-- | src/app.rs | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -38,8 +38,8 @@ impl App { Boot::new(self.db.clone()) } - pub const fn conversations(&self) -> Conversations<'_> { - Conversations::new(&self.db, &self.events) + pub fn conversations(&self) -> Conversations { + Conversations::new(self.db.clone(), self.events.clone()) } pub const fn events(&self) -> Events<'_> { @@ -77,3 +77,9 @@ impl FromRef<App> for Boot { app.boot() } } + +impl FromRef<App> for Conversations { + fn from_ref(app: &App) -> Self { + app.conversations() + } +} |
