ну мб, ну честно сам то еще не боксил, у меня другой подход к обработке ероров чаще всего просто игнорю их и мапаю в вектор <T> (пустой) или опшен <T> (none) или deafult::default <T>
Да способов не то чтобы много. Ты либо обрабатываешь ошибку по месту, либо прикидываешь выше. С боксингом прокинуть выше — ноль дополнительных усилий. С енамами — надо добавить ошибку в енам и реализовать From.