История изменений
Исправление
kirk_johnson,
(текущая версия)
:
Заодно и от llvm и всех багов компилятора. Говорю же, Вы не понимаете гарантий, которые вам предлагают.
Мы опять о разных вещах говорим. Ты говоришь, что в safe Rust проблем с порченной памятью быть не должно. И, ВНЕЗАПНО, я с этим не спорю. Но при написании реального приложения для решения каких-то реальных задач, нам нужно учитывать баги сторонних библиотек, баги libc, llvm и компилятора. Потому что заказчику абсолютно плевать, почему ты потерял его данные.
Кто сказал, что ошибка логики должна приводить к сегфолту? Повторюсь: ошибка в коде != ошибка в дизайне языка. В C я должен написать тест, который проверит, что передавая в функцию NULL - она отработает верно.
Вообще нет. В идеале ты пишешь тест, который прогоняет функцию через все множество допустимых значений. И тут уж одним больше, одним меньше — пофиг. К тому же, функции крайне редко должны переживать принимаемый NULL.
В Rust вообще нет NULL, соответственно и тест такой не нужен. А значит и работы меньше.
Ну если ты проверяешь только NULL, то, наверное, меньше. Но я таких тестов как-то не особо видел. Разве что для free().
Исправление
kirk_johnson,
:
Заодно и от llvm и всех багов компилятора. Говорю же, Вы не понимаете гарантий, которые вам предлагают.
Мы опять о разных вещах говорим. Ты говоришь, что в safe Rust проблем с порченной памятью быть не должно. И, ВНЕЗАПНО, я с этим не спорю. Но при написании реального приложения для решения каких-то реальных задач, нам нужно учитывать баги сторонних библиотек, баги libc, llvm и компилятора. Потому что заказчику абсолютно плевать, почему ты потерял его данные.
Кто сказал, что ошибка логики должна приводить к сегфолту? Повторюсь: ошибка в коде != ошибка в дизайне языка. В C я должен написать тест, который проверит, что передавая в функцию NULL - она отработает верно.
Вообще нет. В идеале ты пишешь тест, который прогоняет функцию через все множество допустимых значений. И тут уж одним больше, одним меньше — пофиг.
В Rust вообще нет NULL, соответственно и тест такой не нужен. А значит и работы меньше.
Ну если ты проверяешь только NULL, то, наверное, меньше. Но я таких тестов как-то не особо видел. Разве что для free().
Исходная версия
kirk_johnson,
:
Заодно и от llvm и всех багов компилятора. Говорю же, Вы не понимаете гарантий, которые вам предлагают.
Мы опять о разных вещах говорим. Ты говоришь, что в safe Rust проблем быть не может. И, ВНЕЗАПНО, я с этим не спорю. Но при написании реального приложения для решения каких-то реальных задач, нам нужно учитывать баги сторонних библиотек, баги libc, llvm и компилятора. Потому что заказчику абсолютно плевать, почему ты потерял его данные.
Кто сказал, что ошибка логики должна приводить к сегфолту? Повторюсь: ошибка в коде != ошибка в дизайне языка. В C я должен написать тест, который проверит, что передавая в функцию NULL - она отработает верно.
Вообще нет. В идеале ты пишешь тест, который прогоняет функцию через все множество допустимых значений. И тут уж одним больше, одним меньше — пофиг.
В Rust вообще нет NULL, соответственно и тест такой не нужен. А значит и работы меньше.
Ну если ты проверяешь только NULL, то, наверное, меньше. Но я таких тестов как-то не особо видел. Разве что для free().