Get rid of useless String copy.

This commit is contained in:
Patrick MARIE 2021-02-22 12:55:00 +01:00
parent 6e45b8145e
commit 87a3e5e865

View File

@ -9,9 +9,8 @@ use std::string::String;
use regex::Regex; use regex::Regex;
#[derive(Debug)] #[derive(Copy,Clone,Debug)]
pub struct Stage { pub struct Stage {
stage: String,
points: u32, points: u32,
precision: u32, precision: u32,
factor: char, factor: char,
@ -51,7 +50,6 @@ impl TryFrom<&str> for Stage {
let precision = captures.get(2).unwrap().as_str().parse::<u32>().unwrap(); let precision = captures.get(2).unwrap().as_str().parse::<u32>().unwrap();
Ok(Stage { Ok(Stage {
stage: String::from(stage),
points: points, points: points,
precision: precision, precision: precision,
factor: factor, factor: factor,
@ -74,6 +72,10 @@ impl Stage {
factor * self.precision as i64 factor * self.precision as i64
} }
pub fn to_string(self: &Self) -> String {
format!("{}*{}{}", self.points, self.precision, self.factor)
}
pub fn time_offset_ms(self: &Self, ts: i64) -> (i64, i64) { pub fn time_offset_ms(self: &Self, ts: i64) -> (i64, i64) {
let table_row_size_ms = self.table_row_size_ms(); let table_row_size_ms = self.table_row_size_ms();
let time_offset_ms = ts * 1000 % table_row_size_ms; let time_offset_ms = ts * 1000 % table_row_size_ms;
@ -106,15 +108,6 @@ impl Stage {
} }
} }
impl Clone for Stage {
fn clone(&self) -> Stage {
Stage {
stage: self.stage.to_string(),
..*self
}
}
}
impl PartialEq for Stage { impl PartialEq for Stage {
fn eq(&self, other: &Self) -> bool { fn eq(&self, other: &Self) -> bool {
self.points == other.points self.points == other.points
@ -127,6 +120,6 @@ impl Eq for Stage {}
impl fmt::Display for Stage { impl fmt::Display for Stage {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.table_name()) write!(f, "{}", self.to_string())
} }
} }