Ну это такой трейдофф. Если тебе нужно делать опасные вещи пишешь unsafe и сам за всем следишь. Если нет, пишешь safe и не получаешь никаких ошибок.
Да, но я в safe не получаю итак никаких ошибок. Пойми разницу. Если мы ограничим любой язык теми возможностями, что даёт safe-раст, то там не будет ошибок. Т.е. чекер раста и модель безопасности раста не чекает ОШИБКИ - она чекает возможности, которые ты используешь.
И проблема в том, что те места, которые приводят к ошибкам - всегда написаны ЗА РАМКАМИ этого safe-языка. Давай проще, если ты перепишешь что-то дырявое и мира с/с++, то все места, которые там дырявые - будут у тебя под unsafe и не будут никак проверяться. И никакого преимущества ты не получишь.
Т.е. безопасность, которая нужна. И чекер который нужен - это то, что проверяет ПОТЕНЦИАЛЬНО опасную логику. И сообщает правильно ты её реализовал или нет. Раст работает не так. Он запрещает тебе любую потенциально опасную логику, даже если она не содержит ошибок