@@ -229,82 +229,7 @@ impl NodeTable {
229
229
)
230
230
}
231
231
232
- /// Mutable access to node flags.
233
- ///
234
- /// # Examples
235
- ///
236
- ///
237
- /// ```
238
- /// # use tskit::prelude::*;
239
- /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
240
- /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
241
- /// let flags = tables.nodes_mut().flags_array_mut();
242
- /// for flag in flags {
243
- /// // Can do something...
244
- /// # assert!(flag.is_sample());
245
- /// }
246
- /// ```
247
- ///
248
- /// ```
249
- /// # use tskit::prelude::*;
250
- /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
251
- /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
252
- /// for flag in tables.nodes_mut().flags_array_mut() {
253
- /// # assert!(flag.is_sample());
254
- /// }
255
- /// ```
256
- ///
257
- /// The returned slice is *mutable*, allowing one to do things like
258
- /// clear the sample status of all nodes:
259
- ///
260
- /// A copy of the flags can be obtained by collecting results into `Vec`:
261
- ///
262
- /// ```
263
- /// # use tskit::prelude::*;
264
- /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
265
- /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
266
- /// for flag in tables.nodes_mut().flags_array_mut() {
267
- /// flag.remove(tskit::NodeFlags::IS_SAMPLE);
268
- /// }
269
- /// assert!(!tables.nodes_mut().flags_array_mut().iter().any(|f| f.is_sample()));
270
- /// assert!(tables.nodes().samples_as_vector().is_empty());
271
- /// ```
272
- ///
273
- /// ```
274
- /// # use tskit::prelude::*;
275
- /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
276
- /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
277
- /// let flags = tables.nodes_mut().flags_array_mut().to_vec();
278
- /// # assert!(flags.iter().all(|f| f.is_sample()));
279
- /// ```
280
- ///
281
- /// ## Standalone tables
282
- ///
283
- /// The ownership semantics differ when tables are not part of a
284
- /// table collection:
285
- ///
286
- /// ```
287
- /// let mut nodes = tskit::OwnedNodeTable::default();
288
- /// assert!(nodes.add_row(tskit::NodeFlags::IS_SAMPLE, 10., -1, -1).is_ok());
289
- /// # assert_eq!(nodes.num_rows(), 1);
290
- /// let flags = nodes.flags_array_mut();
291
- /// # assert_eq!(flags.len(), 1);
292
- /// assert!(flags.iter().all(|f| f.is_sample()));
293
- ///
294
- /// // while we are at it, let's use our node
295
- /// // table to populate a table collection.
296
- /// #
297
- /// let mut tables = tskit::TableCollection::new(10.0).unwrap();
298
- /// tables.set_nodes(&nodes);
299
- /// assert_eq!(tables.nodes().num_rows(), 1);
300
- /// assert_eq!(tables.nodes_mut().flags_array_mut().iter().filter(|f| f.is_sample()).count(), 1);
301
- /// ```
302
- ///
303
- /// # Note
304
- ///
305
- /// Internally, we rely on a conversion of u64 to usize.
306
- /// This conversion is fallible on some platforms.
307
- /// If the conversion fails, an empty slice is returned.
232
+ #[ deprecated( since = "0.12.0" , note = "use flags_slice_mut instead" ) ]
308
233
pub fn flags_array_mut ( & mut self ) -> & mut [ NodeFlags ] {
309
234
unsafe {
310
235
std:: slice:: from_raw_parts_mut (
@@ -314,38 +239,7 @@ impl NodeTable {
314
239
}
315
240
}
316
241
317
- /// Mutable access to node times.
318
- ///
319
- /// # Examples
320
- ///
321
- /// For a [`crate::TableCollection`], accessing the table creates a temporary
322
- /// that will be dropped, causing this code to not compile:
323
- ///
324
- /// ```compile_fail
325
- /// # use tskit::prelude::*;
326
- /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
327
- /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
328
- /// let time = tables.nodes().time_array_mut();
329
- /// println!("{}", time.len()); // ERROR: the temporary node table is dropped by now
330
- /// ```
331
- ///
332
- /// Treating the returned slice as an iterable succeeds:
333
- ///
334
- /// ```
335
- /// # use tskit::prelude::*;
336
- /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
337
- /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
338
- /// for time in tables.nodes_mut().time_array_mut() {
339
- /// *time = 55.0.into(); // change each node's time value
340
- /// }
341
- /// assert!(tables.nodes_mut().time_array_mut().iter().all(|t| t == &55.0));
342
- /// ```
343
- ///
344
- /// # Note
345
- ///
346
- /// Internally, we rely on a conversion of u64 to usize.
347
- /// This conversion is fallible on some platforms.
348
- /// If the conversion fails, an empty slice is returned.
242
+ #[ deprecated( since = "0.12.0" , note = "use time_slice_mut instead" ) ]
349
243
pub fn time_array_mut ( & mut self ) -> & mut [ Time ] {
350
244
unsafe {
351
245
std:: slice:: from_raw_parts_mut (
@@ -528,7 +422,38 @@ impl NodeTable {
528
422
/// Get the time column as a slice
529
423
=> time, time_slice_raw, f64 ) ;
530
424
build_table_column_slice_mut_getter ! (
531
- /// Get the time column as a mutable slice
425
+ /// Get the time column as a mutable slice
426
+ ///
427
+ /// # Examples
428
+ ///
429
+ /// For a [`crate::TableCollection`], accessing the table creates a temporary
430
+ /// that will be dropped, causing this code to not compile:
431
+ ///
432
+ /// ```compile_fail
433
+ /// # use tskit::prelude::*;
434
+ /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
435
+ /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
436
+ /// let time = tables.nodes().time_slice_mut();
437
+ /// println!("{}", time.len()); // ERROR: the temporary node table is dropped by now
438
+ /// ```
439
+ ///
440
+ /// Treating the returned slice as an iterable succeeds:
441
+ ///
442
+ /// ```
443
+ /// # use tskit::prelude::*;
444
+ /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
445
+ /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
446
+ /// for time in tables.nodes_mut().time_slice_mut() {
447
+ /// *time = 55.0.into(); // change each node's time value
448
+ /// }
449
+ /// assert!(tables.nodes_mut().time_slice_mut().iter().all(|t| t == &55.0));
450
+ /// ```
451
+ ///
452
+ /// # Panics
453
+ ///
454
+ /// Internally, we rely on a conversion of u64 to usize.
455
+ /// This conversion is fallible on some platforms.
456
+ /// If the conversion fails, this function will panic.
532
457
=> time, time_slice_mut, Time ) ;
533
458
build_table_column_slice_mut_getter ! (
534
459
/// Get the time column as a mutable slice
@@ -540,7 +465,82 @@ impl NodeTable {
540
465
/// Get the flags column as a slice
541
466
=> flags, flags_slice_raw, ll_bindings:: tsk_flags_t) ;
542
467
build_table_column_slice_mut_getter ! (
543
- /// Get the flags column as a mutable slice
468
+ /// Get the flags column as a mutable slice
469
+ ///
470
+ /// # Examples
471
+ ///
472
+ ///
473
+ /// ```
474
+ /// # use tskit::prelude::*;
475
+ /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
476
+ /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
477
+ /// let flags = tables.nodes_mut().flags_slice_mut();
478
+ /// for flag in flags {
479
+ /// // Can do something...
480
+ /// # assert!(flag.is_sample());
481
+ /// }
482
+ /// ```
483
+ ///
484
+ /// ```
485
+ /// # use tskit::prelude::*;
486
+ /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
487
+ /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
488
+ /// for flag in tables.nodes_mut().flags_slice_mut() {
489
+ /// # assert!(flag.is_sample());
490
+ /// }
491
+ /// ```
492
+ ///
493
+ /// The returned slice is *mutable*, allowing one to do things like
494
+ /// clear the sample status of all nodes:
495
+ ///
496
+ /// A copy of the flags can be obtained by collecting results into `Vec`:
497
+ ///
498
+ /// ```
499
+ /// # use tskit::prelude::*;
500
+ /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
501
+ /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
502
+ /// for flag in tables.nodes_mut().flags_slice_mut() {
503
+ /// flag.remove(tskit::NodeFlags::IS_SAMPLE);
504
+ /// }
505
+ /// assert!(!tables.nodes_mut().flags_slice_mut().iter().any(|f| f.is_sample()));
506
+ /// assert!(tables.nodes().samples_as_vector().is_empty());
507
+ /// ```
508
+ ///
509
+ /// ```
510
+ /// # use tskit::prelude::*;
511
+ /// # let mut tables = tskit::TableCollection::new(10.).unwrap();
512
+ /// # tables.add_node(tskit::NodeFlags::IS_SAMPLE, 10.0, -1, -1).unwrap();
513
+ /// let flags = tables.nodes_mut().flags_slice_mut().to_vec();
514
+ /// # assert!(flags.iter().all(|f| f.is_sample()));
515
+ /// ```
516
+ ///
517
+ /// ## Standalone tables
518
+ ///
519
+ /// The ownership semantics differ when tables are not part of a
520
+ /// table collection:
521
+ ///
522
+ /// ```
523
+ /// let mut nodes = tskit::OwnedNodeTable::default();
524
+ /// assert!(nodes.add_row(tskit::NodeFlags::IS_SAMPLE, 10., -1, -1).is_ok());
525
+ /// # assert_eq!(nodes.num_rows(), 1);
526
+ /// let flags = nodes.flags_slice_mut();
527
+ /// # assert_eq!(flags.len(), 1);
528
+ /// assert!(flags.iter().all(|f| f.is_sample()));
529
+ ///
530
+ /// // while we are at it, let's use our node
531
+ /// // table to populate a table collection.
532
+ /// #
533
+ /// let mut tables = tskit::TableCollection::new(10.0).unwrap();
534
+ /// tables.set_nodes(&nodes);
535
+ /// assert_eq!(tables.nodes().num_rows(), 1);
536
+ /// assert_eq!(tables.nodes_mut().flags_slice_mut().iter().filter(|f| f.is_sample()).count(), 1);
537
+ /// ```
538
+ ///
539
+ /// # Panics
540
+ ///
541
+ /// Internally, we rely on a conversion of u64 to usize.
542
+ /// This conversion is fallible on some platforms.
543
+ /// If the conversion fails, this function will panic.
544
544
=> flags, flags_slice_mut, NodeFlags ) ;
545
545
build_table_column_slice_mut_getter ! (
546
546
/// Get the flags column as a mutable slice
0 commit comments