История изменений
Исправление red75prim, (текущая версия) :
Не смысла рассматривать механизм сам по-себе, если в разных языках он предназначен для разных задач.
по твоему нормально, если библиотечный код после перехваченной пользователем паники оказывается в невалидном состоянии?
В расте есть разные невалидные состояния. Невалидное состояние вызывающее undefined behavior, которого можно добиться только unsafe блоками (баги компилятора опустим), - недопустимо. Нарушение логических инвариантов, которые не проверяются библиотекой - очень плохо. Нарушение логических инвариантов, которые проверяются библиотекой и вызывают панику - это более-менее (невалидное состояние ненаблюдаемо).
Исходная версия red75prim, :
Не смысла рассматривать механизм сам по-себе, если в разных языках он предназначен для разных задач.
по твоему нормально, если библиотечный код после перехваченной пользователем паники оказывается в невалидном состоянии?
В расте есть разные невалидные состояния. Невалидное состояние вызывающее undefined behavior, которого можно добиться только unsafe блоками, - недопустимо. Нарушение логических инвариантов, которые не проверяются библиотекой - очень плохо. Нарушение логических инвариантов, которые проверяются библиотекой и вызывают панику - это более-менее (невалидное состояние ненаблюдаемо).