Format with rustfmt

This commit is contained in:
Josh Mitchell
2020-11-07 20:03:05 +11:00
parent 042f0f82c6
commit e30a175d0d
9 changed files with 204 additions and 139 deletions

View File

@@ -12,37 +12,42 @@ pub struct Frame {
/// Time step (usually in picoseconds)
pub time: f32,
/// 3x3 box vector
/// 3x3 box vector
pub box_vector: [[f32; 3usize]; 3usize],
/// 3D coordinates for N atoms where N is num_atoms
/// 3D coordinates for N atoms where N is num_atoms
pub coords: Vec<[f32; 3usize]>,
}
impl Default for Frame {
fn default() -> Frame {
Frame {
Frame {
num_atoms: 0,
step: 0,
time: 0.0,
box_vector: [[0.0; 3]; 3],
coords: Vec::with_capacity(0)
coords: Vec::with_capacity(0),
}
}
}
impl fmt::Debug for Frame {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Frame {{ atoms: {}, step: {}, time: {}, \
box: {:?}, coords: {:?} }}", self.num_atoms, self.step, self.time,
self.box_vector, self.coords)
write!(
f,
"Frame {{ atoms: {}, step: {}, time: {}, \
box: {:?}, coords: {:?} }}",
self.num_atoms, self.step, self.time, self.box_vector, self.coords
)
}
}
impl Frame {
/// Creates an empty frame with a capacity of 0
pub fn new() -> Frame {
Frame{ ..Default::default() }
Frame {
..Default::default()
}
}
/// Creates a frame with the given capacity
@@ -52,28 +57,27 @@ impl Frame {
coords: vec![[0.0, 0.0, 0.0]; num_atoms as usize],
..Default::default()
}
}
/// Filters the frame by removing all atoms not matching the given indeces.
/// Filters the frame by removing all atoms not matching the given indeces.
pub fn filter_coords(self: &mut Frame, indeces: &[usize]) {
self.coords = self.coords.iter()
self.coords = self
.coords
.iter()
.map(|elem| elem.clone())
.enumerate()
.filter(|&(i, _)| indeces.contains(&i))
.map(|(_, elem)| elem)
.collect();
self.num_atoms = self.coords.len() as u32;
}
}
/// Length of the frame (number of atoms)
pub fn len(self: &Frame) -> usize {
self.num_atoms as usize
}
}
}
#[cfg(test)]
mod tests {
use super::*;
@@ -91,12 +95,12 @@ mod tests {
frame.coords[0] = [1.0, 2.0, 3.0];
frame.coords[1] = [4.0, 5.0, 6.0];
frame.coords[2] = [7.0, 8.0, 9.0];
let filter: Vec<usize> = vec![1,2];
let filter: Vec<usize> = vec![1, 2];
let mut frame_new = frame.clone();
frame_new.filter_coords(&filter);
assert!(frame_new.num_atoms as usize == filter.len());
assert!(frame_new.coords[0] == frame.coords[1]);
assert!(frame_new.coords[1] == frame.coords[2]);
assert!(frame_new.coords[1] == frame.coords[2]);
}
#[test]