Skip to content

Commit 660cdf7

Browse files
authored
RUST-993 Implement Clone for Collection<T> (#454)
Because derive is too conservative, derive only implements Clone for Collection<T> if T is Clone. Collection<T> does not actually store any value of type T (so T does not need to be Clone).
1 parent b8a69af commit 660cdf7

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/coll/mod.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,23 @@ use crate::{
111111
/// # }
112112
/// ```
113113
114-
#[derive(Debug, Clone)]
114+
#[derive(Debug)]
115115
pub struct Collection<T> {
116116
inner: Arc<CollectionInner>,
117117
_phantom: std::marker::PhantomData<T>,
118118
}
119119

120+
// Because derive is too conservative, derive only implements Clone if T is Clone.
121+
// Collection<T> does not actually store any value of type T (so T does not need to be clone).
122+
impl<T> Clone for Collection<T> {
123+
fn clone(&self) -> Self {
124+
Self {
125+
inner: self.inner.clone(),
126+
_phantom: Default::default(),
127+
}
128+
}
129+
}
130+
120131
#[derive(Debug)]
121132
struct CollectionInner {
122133
client: Client,

0 commit comments

Comments
 (0)