@@ -282,7 +282,7 @@ pub struct NodeDefaults {
282
282
///
283
283
/// See [the book](https://tskit-dev.github.io/tskit-rust/)
284
284
/// for details.
285
- #[ derive( Debug , Clone , Default ) ]
285
+ #[ derive( Debug , Clone ) ]
286
286
pub struct NodeDefaultsWithMetadata < M >
287
287
where
288
288
M : crate :: metadata:: NodeMetadata ,
@@ -293,6 +293,23 @@ where
293
293
pub metadata : Option < M > ,
294
294
}
295
295
296
+ // Manual implementation required so that
297
+ // we do not force client code to impl Default
298
+ // for metadata types.
299
+ impl < M > Default for NodeDefaultsWithMetadata < M >
300
+ where
301
+ M : crate :: metadata:: NodeMetadata ,
302
+ {
303
+ fn default ( ) -> Self {
304
+ Self {
305
+ flags : NodeFlags :: default ( ) ,
306
+ population : PopulationId :: default ( ) ,
307
+ individual : IndividualId :: default ( ) ,
308
+ metadata : None ,
309
+ }
310
+ }
311
+ }
312
+
296
313
mod private {
297
314
pub trait DefaultNodeDataMarker { }
298
315
@@ -362,12 +379,6 @@ where
362
379
/// value: i32,
363
380
/// }
364
381
///
365
- /// impl Default for NodeMetadata {
366
- /// fn default() -> Self {
367
- /// Self{value: 0}
368
- /// }
369
- /// }
370
- ///
371
382
/// impl tskit::metadata::MetadataRoundtrip for NodeMetadata {
372
383
/// fn encode(&self) -> Result<Vec<u8>, tskit::metadata::MetadataError> {
373
384
/// match serde_json::to_string(self) {
@@ -404,12 +415,6 @@ where
404
415
/// value: i32,
405
416
/// }
406
417
///
407
- /// impl Default for NodeMetadata {
408
- /// fn default() -> Self {
409
- /// Self{value: 0}
410
- /// }
411
- /// }
412
- ///
413
418
/// impl tskit::metadata::MetadataRoundtrip for NodeMetadata {
414
419
/// fn encode(&self) -> Result<Vec<u8>, tskit::metadata::MetadataError> {
415
420
/// match serde_json::to_string(self) {
0 commit comments