Skip to content

Commit 8f94d4e

Browse files
authored
Fix: remove cloning from GenServer::run (#38)
* remove cloning from run function * bump version for release
1 parent 25dd9ca commit 8f94d4e

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ tracing = { version = "0.1.41", features = ["log"] }
2222
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
2323

2424
[workspace.package]
25-
version = "0.2.0"
25+
version = "0.2.1"
2626
license = "MIT"
2727
edition = "2021"

concurrency/src/tasks/gen_server.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ pub trait GenServer: Send + Sized + Clone {
146146
) -> impl Future<Output = Result<(), GenServerError>> + Send {
147147
async {
148148
let init_result = self
149-
.clone()
150149
.init(handle)
151150
.await
152151
.inspect_err(|err| tracing::error!("Initialization failed: {err:?}"));
@@ -157,10 +156,12 @@ pub trait GenServer: Send + Sized + Clone {
157156
};
158157

159158
handle.cancellation_token().cancel();
160-
if let Err(err) = self.teardown(handle).await {
161-
tracing::error!("Error during teardown: {err:?}");
159+
if let Ok(final_state) = res {
160+
if let Err(err) = final_state.teardown(handle).await {
161+
tracing::error!("Error during teardown: {err:?}");
162+
}
162163
}
163-
res
164+
Ok(())
164165
}
165166
}
166167

@@ -178,7 +179,7 @@ pub trait GenServer: Send + Sized + Clone {
178179
mut self,
179180
handle: &GenServerHandle<Self>,
180181
rx: &mut mpsc::Receiver<GenServerInMsg<Self>>,
181-
) -> impl Future<Output = Result<(), GenServerError>> + Send {
182+
) -> impl Future<Output = Result<Self, GenServerError>> + Send {
182183
async {
183184
loop {
184185
let (new_state, cont) = self.receive(handle, rx).await?;
@@ -188,7 +189,7 @@ pub trait GenServer: Send + Sized + Clone {
188189
}
189190
}
190191
tracing::trace!("Stopping GenServer");
191-
Ok(())
192+
Ok(self)
192193
}
193194
}
194195

0 commit comments

Comments
 (0)