molframe_spatial/model/
columns.rs1use super::NeighborPair;
4use crate::CrossPair;
5
6#[derive(Clone, Debug, Default, PartialEq)]
8pub struct PairColumns {
9 pub first: Vec<u32>,
11 pub second: Vec<u32>,
13 pub distance: Vec<f32>,
15}
16
17impl PairColumns {
18 #[must_use]
20 pub fn from_pairs(pairs: &[NeighborPair]) -> Self {
21 let mut columns = Self {
22 first: Vec::with_capacity(pairs.len()),
23 second: Vec::with_capacity(pairs.len()),
24 distance: Vec::with_capacity(pairs.len()),
25 };
26 for pair in pairs {
27 columns.first.push(pair.first);
28 columns.second.push(pair.second);
29 columns.distance.push(pair.distance_squared.sqrt());
30 }
31 columns
32 }
33
34 #[must_use]
36 pub fn from_cross(pairs: &[CrossPair]) -> Self {
37 let mut columns = Self {
38 first: Vec::with_capacity(pairs.len()),
39 second: Vec::with_capacity(pairs.len()),
40 distance: Vec::with_capacity(pairs.len()),
41 };
42 for pair in pairs {
43 columns.first.push(pair.first);
44 columns.second.push(pair.second);
45 columns.distance.push(pair.distance_squared.sqrt());
46 }
47 columns
48 }
49}