Skip to content

Commit feeeb5f

Browse files
committed
deref
1 parent 63b6a0a commit feeeb5f

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

svd-parser/src/expand.rs

+17-19
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
//! Provides [expand] method to convert arrays, clusters and derived items in regular instances
22
33
use anyhow::{anyhow, Result};
4-
use std::collections::HashMap;
5-
use std::fmt;
6-
use std::mem::take;
4+
use std::{collections::HashMap, fmt, mem::take, ops::Deref};
75
use svd_rs::{
86
array::names, cluster, field, peripheral, register, Cluster, ClusterInfo, DeriveFrom, Device,
97
EnumeratedValues, Field, Peripheral, Register, RegisterCluster, RegisterProperties,
@@ -63,11 +61,11 @@ impl PartialEq<str> for BlockPath {
6361
}
6462
let mut parts = other.split('.');
6563
if let Some(part1) = parts.next() {
66-
if self.peripheral != part1 {
64+
if self.peripheral.deref() != part1 {
6765
return false;
6866
}
6967
for p in parts.zip(self.path.iter()) {
70-
if p.0 != p.1 {
68+
if p.0 != p.1.deref() {
7169
return false;
7270
}
7371
}
@@ -120,7 +118,7 @@ impl RegisterPath {
120118
impl PartialEq<str> for RegisterPath {
121119
fn eq(&self, other: &str) -> bool {
122120
if let Some((block, reg)) = other.rsplit_once('.') {
123-
self.name == reg && &self.block == block
121+
self.name.deref() == reg && &self.block == block
124122
} else {
125123
false
126124
}
@@ -180,7 +178,7 @@ impl FieldPath {
180178
impl PartialEq<str> for FieldPath {
181179
fn eq(&self, other: &str) -> bool {
182180
if let Some((reg, field)) = other.rsplit_once('.') {
183-
self.name == field && &self.register == reg
181+
self.name.deref() == field && &self.register == reg
184182
} else {
185183
false
186184
}
@@ -224,7 +222,7 @@ impl EnumPath {
224222
impl PartialEq<str> for EnumPath {
225223
fn eq(&self, other: &str) -> bool {
226224
if let Some((field, evs)) = other.rsplit_once('.') {
227-
self.name == evs && &self.field == field
225+
self.name.deref() == evs && &self.field == field
228226
} else {
229227
false
230228
}
@@ -263,7 +261,7 @@ impl<'a> Index<'a> {
263261
self.peripherals.insert(path, p);
264262
}
265263
}
266-
let path = BlockPath::new(&p.name);
264+
let path = BlockPath::new(p.name.deref());
267265
for r in p.registers() {
268266
self.add_register(&path, r);
269267
}
@@ -286,7 +284,7 @@ impl<'a> Index<'a> {
286284
self.clusters.insert(cpath, c);
287285
}
288286
}
289-
let cpath = path.new_cluster(&c.name);
287+
let cpath = path.new_cluster(c.name.deref());
290288
for r in c.registers() {
291289
self.add_register(&cpath, r);
292290
}
@@ -305,7 +303,7 @@ impl<'a> Index<'a> {
305303
self.registers.insert(rpath, r);
306304
}
307305
}
308-
let rpath = path.new_register(&r.name);
306+
let rpath = path.new_register(r.name.deref());
309307
for f in r.fields() {
310308
self.add_field(&rpath, f);
311309
}
@@ -317,16 +315,16 @@ impl<'a> Index<'a> {
317315
let fpath = path.new_field(name);
318316
for evs in &f.enumerated_values {
319317
if let Some(name) = evs.name.as_ref() {
320-
self.evs.insert(fpath.new_enum(name), evs);
318+
self.evs.insert(fpath.new_enum(name.deref()), evs);
321319
}
322320
}
323321
self.fields.insert(fpath, f);
324322
}
325323
}
326-
let fpath = path.new_field(&f.name);
324+
let fpath = path.new_field(f.name.deref());
327325
for evs in &f.enumerated_values {
328326
if let Some(name) = evs.name.as_ref() {
329-
self.evs.insert(fpath.new_enum(name), evs);
327+
self.evs.insert(fpath.new_enum(name.deref()), evs);
330328
}
331329
}
332330
self.fields.insert(fpath, f);
@@ -365,7 +363,7 @@ fn expand_cluster_array(
365363
if let Some(dpath) = dpath {
366364
cpath = derive_cluster(&mut c, &dpath, path, index)?;
367365
}
368-
let cpath = cpath.unwrap_or_else(|| path.new_cluster(&c.name));
366+
let cpath = cpath.unwrap_or_else(|| path.new_cluster(c.name.deref()));
369367

370368
for rc in take(&mut c.children) {
371369
expand_register_cluster(&mut c.children, rc, &cpath, index)?;
@@ -499,7 +497,7 @@ fn expand_register_array(
499497
if let Some(dpath) = dpath {
500498
rpath = derive_register(&mut r, &dpath, path, index)?;
501499
}
502-
let rpath = rpath.unwrap_or_else(|| path.new_register(&r.name));
500+
let rpath = rpath.unwrap_or_else(|| path.new_register(r.name.deref()));
503501

504502
if let Some(field) = r.fields.as_mut() {
505503
for f in take(field) {
@@ -529,7 +527,7 @@ fn expand_field(
529527
if let Some(dpath) = dpath {
530528
fpath = derive_field(&mut f, &dpath, rpath, index)?;
531529
}
532-
let fpath = fpath.unwrap_or_else(|| rpath.new_field(&f.name));
530+
let fpath = fpath.unwrap_or_else(|| rpath.new_field(f.name.deref()));
533531

534532
for ev in &mut f.enumerated_values {
535533
let dpath = ev.derived_from.take();
@@ -564,7 +562,7 @@ pub fn derive_enumerated_values(
564562
if let Some(r) = index.registers.get(rdpath) {
565563
let mut found = None;
566564
for f in r.fields() {
567-
let epath = EnumPath::new(rdpath.new_field(&f.name), dname);
565+
let epath = EnumPath::new(rdpath.new_field(f.name.deref()), dname);
568566
if let Some(d) = index.evs.get(&epath) {
569567
found = Some((d, epath));
570568
break;
@@ -645,7 +643,7 @@ pub fn expand(indevice: &Device) -> Result<Device> {
645643
if let Some(dpath) = dpath {
646644
path = derive_peripheral(&mut p, &dpath, &index)?;
647645
}
648-
let path = path.unwrap_or_else(|| BlockPath::new(&p.name));
646+
let path = path.unwrap_or_else(|| BlockPath::new(p.name.deref()));
649647
if let Some(regs) = p.registers.as_mut() {
650648
for rc in take(regs) {
651649
expand_register_cluster(regs, rc, &path, &index)?;

0 commit comments

Comments
 (0)