LINUX.ORG.RU

История изменений

Исправление red75prim, (текущая версия) :

Не смысла рассматривать механизм сам по-себе, если в разных языках он предназначен для разных задач.

по твоему нормально, если библиотечный код после перехваченной пользователем паники оказывается в невалидном состоянии?

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

Исходная версия red75prim, :

Не смысла рассматривать механизм сам по-себе, если в разных языках он предназначен для разных задач.

по твоему нормально, если библиотечный код после перехваченной пользователем паники оказывается в невалидном состоянии?

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