История изменений
Исправление DarkEld3r, (текущая версия) :
На самом деле раст нихрена не safe, чем кресты, но это никого не волнует. И «без потери скорости» - так же смешно.
Ты много говоришь, а конкретных аргументов так и не было.
С таким же успехом я могу помножить это на ноль использую твоё «unsafe» - видишь сишный каст - значит unsafe и всё наглядно.
Нет. В расте есть один конкретный unsafe, который легко обнаружить как глазами, так и автоматическими средствами. А в плюсах куча вещей, которыми можно выстрелить в ногу и это не всегда бросается в глаза.
Как ты собрался гарантировать проверку указателя в рантайме?
Не в рантайме, а во время компиляции. Да, (опуская подробности) просто нельзя «разыменовать» не проверив.
Ну это проблема твой реализации. Выкатывай.
Я не буду копипастить код из рабочего проекта. А если упрощать, то наверняка, ты скажешь, что это не конкретная задача и прочее бла бла бла. Если нет, то можешь посмотреть на такой пример:
enum Choice {
A,
B,
C,
D,
}
let c = ...
match c {
Choice::A => {},
Choice::B => {},
_ => {}
}
Нет, это решается вменяемыми подходами.
Не решается.
Исходная версия DarkEld3r, :
На самом деле раст нихрена не safe, чем кресты, но это никого не волнует. И «без потери скорости» - так же смешно.
Ты много говоришь, а конкретных аргументов так и не было.
С таким же успехом я могу помножить это на ноль использую твоё «unsafe» - видишь сишный каст - значит unsafe и всё наглядно.
Нет. В расте есть один конкретный unsafe, который легко обнаружить как глазами, так и автоматическими средствами. А в плюсах куча вещей, которыми можно выстрелить в ногу и это не всегда бросается в глаза.
Как ты собрался гарантировать проверку указателя в рантайме?
Не в рантайме, а во время компиляции. Да, (опуская подробности) просто нельзя «разыменовать» не проверив.
Ну это проблема твой реализации. Выкатывай.
Я не буду копипастить код из рабочего проекта. А если упрощать, то наверняка, ты скажешь, что это не конкретная задача и прочее бла бла бла. Если нет, то можешь посмотреть на такой пример:
enum Choice {
A,
B,
C,
D,
}
let c = ...
match c {
Choice::A => {},
Choice::B => {},
_ => {}
}