diff --git a/src/server/mod.rs b/src/server/mod.rs index 192542b..53e9301 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -131,12 +131,12 @@ impl crate::protocol::queue::Server for Server { .map(|_| uuid::Uuid::now_v7().into_bytes()) .collect(); - let items_owned = items + let items_owned: Vec<(Arc<[u8]>, u64)> = items .iter() .map(|item| -> Result<_> { - let contents = item.get_contents()?.to_vec(); + let contents = item.get_contents()?; let vis = item.get_visibility_timeout_secs(); - Ok((contents, vis)) + Ok((Arc::<[u8]>::from(contents), vis)) }) .collect::>>() .map_err(Into::::into)?; @@ -151,7 +151,7 @@ impl crate::protocol::queue::Server for Server { let iter = ids .iter() .map(|id| id.as_slice()) - .zip(items_owned.iter().map(|(c, v)| (c.as_slice(), *v))); + .zip(items_owned.iter().map(|(c, v)| (c.as_ref(), *v))); storage.add_available_items_from_parts(iter).await?; if any_immediately_visible { diff --git a/src/storage.rs b/src/storage.rs index 61cb6af..d70431b 100644 --- a/src/storage.rs +++ b/src/storage.rs @@ -790,8 +790,8 @@ impl RetriedStorage { let mut guard = state_ref.lock().unwrap(); if guard.attempt > 0 && guard.owned.is_none() { guard.owned = Some(( - std::sync::Arc::<[u8]>::from(id.to_vec()), - std::sync::Arc::<[u8]>::from(contents.to_vec()), + std::sync::Arc::<[u8]>::from(id), + std::sync::Arc::<[u8]>::from(contents), )); } } @@ -995,7 +995,7 @@ impl RetriedStorage { { let mut guard = state_ref.lock().unwrap(); if guard.attempt > 0 && guard.owned_id.is_none() { - guard.owned_id = Some(std::sync::Arc::<[u8]>::from(id.to_vec())); + guard.owned_id = Some(std::sync::Arc::<[u8]>::from(id)); } }