Skip to content

Commit 35a9eee

Browse files
author
Heiko Seeberger
committed
feat: refine trait bound for boxed std Error
1 parent 7a0fcea commit 35a9eee

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

examples/transform_versioned.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,11 @@ async fn run() -> Result<(), Error> {
4040
"id: {}, message: {:?}, delivery_attempt: {}",
4141
m.id, m.message, m.delivery_attempt
4242
);
43-
match pub_sub_client
43+
44+
pub_sub_client
4445
.acknowledge(SUBSCRIPTION, vec![&m.ack_id], Some(Duration::from_secs(10)))
45-
.await
46-
{
47-
Ok(_) => println!("Successfully acknowledged"),
48-
Err(e) => eprintln!("ERROR: {}", e),
49-
}
46+
.await?;
47+
println!("Successfully acknowledged");
5048
}
5149

5250
Ok(())
@@ -55,7 +53,7 @@ async fn run() -> Result<(), Error> {
5553
fn transform(
5654
received_message: &ReceivedMessage,
5755
mut value: Value,
58-
) -> Result<Value, Box<dyn std::error::Error>> {
56+
) -> Result<Value, Box<dyn std::error::Error + Send + Sync + 'static>> {
5957
let attributes = &received_message.message.attributes;
6058
match attributes.get("version").map(|v| &v[..]).unwrap_or("v1") {
6159
"v1" => {

src/lib.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ use serde_json::Value;
99
use smpl_jwt::Jwt;
1010
use std::collections::HashMap;
1111
use std::env;
12+
use std::error::Error as StdError;
1213
use std::time::Duration;
1314

14-
type BoxedStdError = Box<dyn std::error::Error>;
15-
1615
const BASE_URL_ENV_VAR: &str = "PUB_SUB_BASE_URL";
1716
const DEFAULT_BASE_URL: &str = "https://pubsub.googleapis.com";
1817

@@ -54,7 +53,9 @@ pub enum Error {
5453
#[error("Deserializing data of received message failed")]
5554
Deserialize { source: serde_json::Error },
5655
#[error("Failed to transform JSON value")]
57-
Transform { source: BoxedStdError },
56+
Transform {
57+
source: Box<dyn StdError + Send + Sync + 'static>,
58+
},
5859
}
5960

6061
impl Error {
@@ -184,7 +185,7 @@ impl PubSubClient {
184185
) -> Result<Vec<Result<MessageEnvelope<M>, Error>>, Error>
185186
where
186187
M: DeserializeOwned,
187-
T: Fn(&ReceivedMessage, Value) -> Result<Value, BoxedStdError>,
188+
T: Fn(&ReceivedMessage, Value) -> Result<Value, Box<dyn StdError + Send + Sync + 'static>>,
188189
{
189190
let received_messages = self
190191
.pull_raw(subscription_id, max_messages, timeout)
@@ -273,7 +274,7 @@ fn deserialize<M, T>(
273274
) -> Vec<Result<MessageEnvelope<M>, Error>>
274275
where
275276
M: DeserializeOwned,
276-
T: Fn(&ReceivedMessage, Value) -> Result<Value, BoxedStdError>,
277+
T: Fn(&ReceivedMessage, Value) -> Result<Value, Box<dyn StdError + Send + Sync + 'static>>,
277278
{
278279
received_messages
279280
.into_iter()
@@ -306,13 +307,13 @@ where
306307
#[cfg(test)]
307308
mod tests {
308309
use crate::{
309-
deserialize, BoxedStdError, Error, MessageEnvelope, PubSubClient, PubSubMessage,
310-
ReceivedMessage,
310+
deserialize, Error, MessageEnvelope, PubSubClient, PubSubMessage, ReceivedMessage,
311311
};
312312
use anyhow::anyhow;
313313
use serde::Deserialize;
314314
use serde_json::{json, Value};
315315
use std::collections::HashMap;
316+
use std::error::Error as StdError;
316317
use std::time::Duration;
317318

318319
#[derive(Debug, Deserialize, PartialEq, Eq)]
@@ -428,7 +429,7 @@ mod tests {
428429
fn transform(
429430
received_message: &ReceivedMessage,
430431
mut value: Value,
431-
) -> Result<Value, BoxedStdError> {
432+
) -> Result<Value, Box<dyn StdError + Send + Sync + 'static>> {
432433
let attributes = &received_message.message.attributes;
433434
match attributes.get("version").map(|v| &v[..]).unwrap_or("v1") {
434435
"v1" => {

0 commit comments

Comments
 (0)