cycle detecion on cart print - no longer stack overflow

trunk
ondra05 2022-07-02 01:17:31 +02:00
parent 21ab9dbe8f
commit 628554df10
1 changed files with 6 additions and 7 deletions

View File

@ -148,13 +148,12 @@ impl Display for Value {
cart_vec.sort_by(|x, y| x.0.partial_cmp(y.0).unwrap_or(std::cmp::Ordering::Less)); cart_vec.sort_by(|x, y| x.0.partial_cmp(y.0).unwrap_or(std::cmp::Ordering::Less));
for (idx, (key, value)) in cart_vec.into_iter().enumerate() { for (idx, (key, value)) in cart_vec.into_iter().enumerate() {
write!( write!(f, "{}", if idx != 0 { ", " } else { "" },)?;
f, match &*value.borrow() {
"{}{} <= {}", x if std::ptr::eq(x, self) => write!(f, "<cycle>"),
if idx != 0 { ", " } else { "" }, x => write!(f, "{x}"),
value.borrow(), }?;
key write!(f, " <= {key}")?;
)?;
} }
write!(f, "]") write!(f, "]")