From 6c219d40f6bab52b7a6feabb086acb53ee1007e2 Mon Sep 17 00:00:00 2001 From: "Kevin R. Thornton" Date: Fri, 3 Apr 2026 14:28:06 -0700 Subject: [PATCH] feat: ergonomic access to site table position column --- src/site_table.rs | 4 ++++ tests/test_tables.rs | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/site_table.rs b/src/site_table.rs index 30dfb2eef..abaa79c61 100644 --- a/src/site_table.rs +++ b/src/site_table.rs @@ -297,6 +297,10 @@ impl SiteTable { /// Get the position column as a slice => position, position_slice_raw, f64); + pub fn position_column(&self) -> impl crate::TableColumn + '_ { + crate::table_column::OpaqueTableColumn(self.position_slice()) + } + /// Clear all data from the table pub fn clear(&mut self) -> Result { handle_tsk_return_value!(self.table_.clear()) diff --git a/tests/test_tables.rs b/tests/test_tables.rs index da773e2c1..1f51a8e3a 100644 --- a/tests/test_tables.rs +++ b/tests/test_tables.rs @@ -622,3 +622,11 @@ fn test_edge_table_column_access() { assert_eq!(column[edge], tskit::NodeId::from(0)); } } + +#[test] +fn test_site_table_column_access() { + let mut table = tskit::SiteTable::default(); + let site = table.add_row(1.0, None).unwrap(); + let col = table.position_column(); + assert_eq!(col[site], 1.0); +}