@@ -232,7 +232,7 @@ mod node_metadata {
232
232
}
233
233
234
234
mod node_metadata_clone {
235
- #[ derive( Clone , serde:: Serialize , serde:: Deserialize ) ]
235
+ #[ derive( Debug , Eq , PartialEq , Clone , serde:: Serialize , serde:: Deserialize ) ]
236
236
pub struct NodeMetadata {
237
237
pub value : i32 ,
238
238
}
@@ -310,9 +310,8 @@ fn test_adding_node_table_row_with_defaults_and_metadata_requiring_clone() {
310
310
} ;
311
311
// ANCHOR_END: node_defaults_with_some_metadata_default
312
312
313
- // We can scoop all non-metadata fields even though
314
- // type is not Copy/Clone
315
- let _ = tables
313
+ // ANCHOR: node_defaults_with_some_metadata_default_add_first_row
314
+ let n0 = tables
316
315
. add_node_with_defaults (
317
316
0.0 ,
318
317
& DefaultsWithMetadata {
@@ -321,11 +320,21 @@ fn test_adding_node_table_row_with_defaults_and_metadata_requiring_clone() {
321
320
} ,
322
321
)
323
322
. unwrap ( ) ;
323
+ // ANCHOR_END: node_defaults_with_some_metadata_default_add_first_row
324
+ assert_eq ! (
325
+ tables
326
+ . nodes( )
327
+ . metadata:: <NodeMetadata >( n0)
328
+ . unwrap( )
329
+ . unwrap( ) ,
330
+ NodeMetadata { value: 2 * 42 }
331
+ ) ;
324
332
325
333
// But now, we start to cause a problem:
326
334
// If we don't clone here, our metadata type moves,
327
335
// so our defaults are moved.
328
- let _ = tables
336
+ // ANCHOR: node_defaults_with_some_metadata_default_add_second_row
337
+ let n1 = tables
329
338
. add_node_with_defaults (
330
339
0.0 ,
331
340
& DefaultsWithMetadata {
@@ -334,10 +343,20 @@ fn test_adding_node_table_row_with_defaults_and_metadata_requiring_clone() {
334
343
} ,
335
344
)
336
345
. unwrap ( ) ;
346
+ // ANCHOR_END: node_defaults_with_some_metadata_default_add_second_row
347
+ assert_eq ! (
348
+ tables
349
+ . nodes( )
350
+ . metadata:: <NodeMetadata >( n1)
351
+ . unwrap( )
352
+ . unwrap( ) ,
353
+ NodeMetadata { value: 42 }
354
+ ) ;
337
355
338
356
// Now, we have a use-after-move error
339
357
// if we hadn't cloned in the last step.
340
- let _ = tables
358
+ // ANCHOR: node_defaults_with_some_metadata_default_add_third_row
359
+ let n2 = tables
341
360
. add_node_with_defaults (
342
361
0.0 ,
343
362
& DefaultsWithMetadata {
@@ -346,4 +365,13 @@ fn test_adding_node_table_row_with_defaults_and_metadata_requiring_clone() {
346
365
} ,
347
366
)
348
367
. unwrap ( ) ;
368
+ // ANCHOR_END: node_defaults_with_some_metadata_default_add_third_row
369
+ assert_eq ! (
370
+ tables
371
+ . nodes( )
372
+ . metadata:: <NodeMetadata >( n2)
373
+ . unwrap( )
374
+ . unwrap( ) ,
375
+ NodeMetadata { value: 42 }
376
+ ) ;
349
377
}
0 commit comments