История изменений
Исправление Manhunt, (текущая версия) :
Ключевая идея в том, чтобы не замусоривать описание основного сценария постоянными упоминаниями того, что на любом шаге этого сценария может произойти какая-нибудь очередная ошибка. Дело в том, что обычно нет никакой разницы, на каком именно из шагов основного сценария ошибка произошла: всё равно в результате этой ошибки весь сценарий целиком считается проваленным, и содержательная обработка ошибки производится ВНЕ логики провалившегося сценария.
Проблема some_string.parse() состоит в том, что чтобы добраться до собственно int-а и дальше с ним работать по существу, придётся поднасрать в код упоминаниями того, что вместо int-а могла вернуться ошибка. Растоманы, после нескольких лет мучений (с unwrap и с try!), сократили это упоминание до единственной кракозябрины - "?". В результате код на расте испещрен бесполезными (с точки зрения той логики, которую код пытается реализовать) кракозябрами.
Но ещё хуже то, что постоянные приплясывания вокруг Result — это не единственный источник бойлерплейта и кракозябр в расте...
Исправление Manhunt, :
Ключевая идея в том, чтобы не замусоривать описание основного сценария постоянными упоминаниями того, что на любом шаге этого сценария может произойти какая-нибудь очередная ошибка. Дело в том, что обычно нет никакой разницы, на каком именно из шагов основного сценария ошибка произошла: всё равно в результате этой ошибки весь сценарий целиком считается проваленным, и содержательная обработка ошибки производится ВНЕ логики провалившегося сценария.
Проблема some_string.parse() состоит в том, что чтобы добраться до собственно int-а и дальше с ним работать по существу, придётся поднасрать в код упоминаниями того, что вместо int-а могла вернуться ошибка. Растоманы, после нескольких лет мучений (с unwrap и с try!), сократили это упоминание до единственной кракозябрины - "?". В результате код на расте испещрен бесполезными (с точки зрения той логики, которую код пытается реализовать) кракозябрами.
Но ещё хуже то, что постоянные приплясывания вокруг Result — это не еденственный источник бойлерплейта и кракозябр в расте...
Исходная версия Manhunt, :
Ключевая идея в том, чтобы не замусоривать описание основного сценария постоянными упоминаниями того, что на любом шаге этого сценария может произойти какая-нибудь очередная ошибка. Дело в том, что обычно нет никакой разницы, на каком именно из шагов основного сценария ошибка произошла: всё равно в результате этой ошибки весь сценарий целиком считается проваленным, и содержательная обработка ошибки производится ВНЕ логики провалившегося сценария.
Проблема some_string.parse() состоит в том, что чтобы добраться до собственно int-а и дальше с ним работать по существу, придётся поднасрать в код упоминаниями того, что вместо int-а могла вернуться ошибка. Растоманы, после нескольких лет мучений (с unwrap и с try!), сократили это упоминание до единственной кракозябрины - "?". В результате код на расте испещрен бесполезными (с точки зрения той логики, которую код пытается реализовать) кракозябрами.