Skip to content

Commit 9be5d80

Browse files
authored
Merge pull request #6 from Jules-Bertholet/less-clone
Eliminate a few `clone()`s
2 parents f45c281 + 985b786 commit 9be5d80

File tree

5 files changed

+18
-23
lines changed

5 files changed

+18
-23
lines changed

src/bin/bin.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ pub fn interpret(args: Args, compiled_data: CompiledData) {
6363
fn main() {
6464
let args: Args = Args::parse();
6565

66-
let geom = std::fs::read_to_string(args.geom.clone()).unwrap();
66+
let geom = std::fs::read_to_string(&args.geom).unwrap();
6767

68-
let (tokens, mut errs) = lexer::lexer().parse_recovery(geom.clone());
68+
let (tokens, mut errs) = lexer::lexer().parse_recovery(&*geom);
6969

7070
let parse_errs = if let Some(tokens) = &tokens {
7171
let (ast, parse_errs) = parser().parse_recovery(Stream::from_iter(

src/geometry/compile/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ pub fn compile(expr: Expr) -> Result<CompiledData, Error> {
8181
.collect::<Vec<_>>();
8282

8383
if let Some((transformation, map)) = compiled_transformation {
84-
let transformation = label_transformation(transformation, numbered_labels);
84+
let transformation = label_transformation(transformation, &numbered_labels);
8585

8686
let geometry = standardize_geometry(&mut map.clone(), geometry);
8787

src/geometry/compile/reads.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,20 @@ use std::{collections::HashMap, ops::Deref};
88
use crate::parser::{Expr, Function, IntervalShape, Spanned};
99

1010
pub fn validate_geometry(
11-
map: HashMap<String, GeometryMeta>,
12-
geom: Vec<(Interval, usize)>,
11+
map: &HashMap<String, GeometryMeta>,
12+
geom: &[(Interval, usize)],
1313
) -> Result<(), Error> {
1414
let mut expect_next = vec![
1515
ReturnType::FixedLen,
1616
ReturnType::FixedSeq,
1717
ReturnType::Unbounded,
1818
ReturnType::Ranged,
1919
];
20-
let mut iter = geom.iter();
2120

22-
loop {
23-
let Some(next) = iter.next() else {
24-
break;
25-
};
26-
27-
let gm = match next {
28-
(Interval::Named(l), _) => map.get(l).unwrap(),
29-
(Interval::Temporary(gp_), _) => gp_,
21+
for (interval, _) in geom {
22+
let gm = match interval {
23+
Interval::Named(l) => map.get(l).unwrap(),
24+
Interval::Temporary(gp_) => gp_,
3025
};
3126

3227
let (gp, span) = gm.expr.clone();
@@ -239,7 +234,7 @@ pub fn compile_reads(
239234
}
240235
}
241236

242-
if let Err(e) = validate_geometry(map.clone(), read_geom.clone()) {
237+
if let Err(e) = validate_geometry(map, &read_geom) {
243238
err = Some(e);
244239
break 'outer_outer;
245240
}

src/geometry/compile/transformation.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ fn compile(
124124
Ok((transformation, map))
125125
}
126126

127-
fn find_num(l: &str, list: Vec<(Interval, usize)>) -> String {
128-
for (interval, n) in &list {
127+
fn find_num(l: &str, list: &[(Interval, usize)]) -> String {
128+
for (interval, n) in list {
129129
if let Interval::Named(name) = interval {
130130
if name == l {
131131
return n.to_string();
@@ -138,15 +138,15 @@ fn find_num(l: &str, list: Vec<(Interval, usize)>) -> String {
138138

139139
pub fn label_transformation(
140140
transformation: Transformation,
141-
numbered_labels: Vec<(Interval, usize)>,
141+
numbered_labels: &[(Interval, usize)],
142142
) -> Transformation {
143143
let mut numbered_transformation: Transformation = Vec::new();
144144

145145
for t in transformation {
146146
let mut inner_transformation: Vec<String> = Vec::new();
147147

148148
for l in t {
149-
let num = find_num(&l, numbered_labels.clone());
149+
let num = find_num(&l, numbered_labels);
150150

151151
inner_transformation.push(format!("seq{num}.{}", l));
152152
}

src/geometry/interpret.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ impl CompiledData {
4343

4444
for (i, read_geometry) in geometry.iter().enumerate() {
4545
read = interpret_geometry(
46-
read_geometry.to_vec(),
46+
read_geometry,
4747
read,
4848
&format!("seq{}.", i + 1),
4949
"r",
@@ -79,14 +79,14 @@ impl CompiledData {
7979
}
8080

8181
fn interpret_geometry(
82-
geometry: Vec<GeometryMeta>,
82+
geometry: &[GeometryMeta],
8383
read: BoxedReads,
8484
init_label: &str,
8585
right: &str,
8686
left: &str,
8787
additional_args: &[String],
8888
) -> BoxedReads {
89-
let mut geometry_iter = geometry.into_iter();
89+
let mut geometry_iter = geometry.iter();
9090

9191
let mut read = read;
9292

@@ -308,7 +308,7 @@ impl GeometryMeta {
308308

309309
fn interpret_dual(
310310
&self,
311-
prev: Self,
311+
prev: &Self,
312312
read: BoxedReads,
313313
label: &[String],
314314
right: &str,

0 commit comments

Comments
 (0)