Skip to content

Commit af6d4a3

Browse files
committed
Remove struct nonsense
1 parent 882e522 commit af6d4a3

File tree

1 file changed

+20
-30
lines changed

1 file changed

+20
-30
lines changed

src/singledispatch/mro.rs

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -60,38 +60,28 @@ fn find_merge_candidate(py: Python, seqs: &[&mut Vec<PyTypeReference>]) -> Optio
6060
candidate.map(|c| c.clone_ref(py))
6161
}
6262

63-
struct C3Mro<'a> {
64-
seqs: &'a mut Vec<&'a mut Vec<PyTypeReference>>,
65-
}
66-
67-
impl C3Mro<'_> {
68-
fn for_abcs<'a>(
69-
py: Python,
70-
abcs: &'a mut Vec<&'a mut Vec<PyTypeReference>>,
71-
) -> PyResult<Vec<PyTypeReference>> {
72-
C3Mro { seqs: abcs }.merge(py)
73-
}
74-
75-
fn merge(&mut self, py: Python) -> PyResult<Vec<PyTypeReference>> {
76-
let mut result: Vec<PyTypeReference> = Vec::new();
77-
loop {
78-
let seqs = &mut self.seqs;
79-
seqs.retain(|seq| !seq.is_empty());
80-
if seqs.is_empty() {
81-
return Ok(result);
82-
}
83-
match find_merge_candidate(py, seqs.as_slice()) {
84-
Some(c) => {
85-
for i in 0..seqs.len() {
86-
let seq = &mut self.seqs[i];
87-
if seq[0].eq(&c) {
88-
seq.remove(0);
89-
}
63+
fn merge_mro(
64+
seqs: &mut Vec<&mut Vec<PyTypeReference>>,
65+
py: Python,
66+
) -> PyResult<Vec<PyTypeReference>> {
67+
let mut result: Vec<PyTypeReference> = Vec::new();
68+
loop {
69+
//let seqs = seqs;
70+
seqs.retain(|seq| !seq.is_empty());
71+
if seqs.is_empty() {
72+
return Ok(result);
73+
}
74+
match find_merge_candidate(py, seqs.as_slice()) {
75+
Some(c) => {
76+
for i in 0..seqs.len() {
77+
let seq = &mut seqs[i];
78+
if seq[0].eq(&c) {
79+
seq.remove(0);
9080
}
91-
result.push(c);
9281
}
93-
None => return Err(PyRuntimeError::new_err("Inconsistent hierarchy")),
82+
result.push(c);
9483
}
84+
None => return Err(PyRuntimeError::new_err("Inconsistent hierarchy")),
9585
}
9686
}
9787
}
@@ -211,7 +201,7 @@ fn c3_mro(
211201
let mut other_bases_cloned = Vec::from_iter(other_bases.iter().map(|b| b.clone_ref(py)));
212202
mros.push(&mut other_bases_cloned);
213203

214-
C3Mro::for_abcs(py, &mut mros)
204+
merge_mro(&mut mros, py)
215205
}
216206

217207
pub(crate) fn compose_mro(

0 commit comments

Comments
 (0)