For example, from `edge_table.rs`: ```rust pub fn metadata<T: metadata::MetadataRoundtrip>( &'a self, row: EdgeId, ) -> Result<Option<T>, TskitError> { let buffer = metadata_to_vector!(self, row.0)?; decode_metadata_row!(T, buffer) } ``` The type of row should be `E: Into<EdgeId>`