Если бы вы хоть раз заглянули в исходный код стандартной библиотеки, а не в рекламные проспекты, вы бы увидели, что сплошь и рядом там оборачивание в runtime проверки. Поэтому утверждение не ложное.
Если оптимизатору иногда удаётся их выбросить - отлично, ребята в LLVM хорошо поработали. Что никак не отменяет того факта, что моё высказывание истинно.
Спасибо, что нашли ещё одно подтверждение моих слов ;)
Мы собираемся внести в код два изменения, которые помогут оптимизатору понять
Оптимизатор, если ему подсказать, уберёт ненужные проверки, которые изначально там всё-таки были. А если не подсказать, то не уберёт. Простите, что с плохими новостями, но деда Мороза не существует.
Я так и думал, что вы верите в магию, и считаете, что unsafe можно превратить в safe без runtime проверок. И что вы никогда не заглядывали в godbolt, чтобы посмотреть, что там на самом деле получается.
Тут вопрос скорее в маркетинговой сфере. Громкие заявления: "У нас крутая система владения и заимствования, которая позволяет управлять памятью без GC." Реальность: "Утечки ищите и устраняйте сами."
Ещё где-то внизу маленькими буквами пишем: "утечки памяти не считаются UB, разбирайтесь с ними сами, но на сайте продукта всё равно поставьте шилдик Made with Rust"
Перекрёстные ссылки и Rust - взаимоисключающие понятия.
Чтобы сделал любую структуру данных сложнее массива, вам придётся использовать смарт поинтеры. Которые, сюрприз-сюрприз, заимствованы у С++. И это единственное заимствование, которое имеет практический смысл.
Все введения в Rust начинаются с рассказа о том, как прекрасная система заимствования помогает писать вам безопасный код, а компилятор, ваш лучший друг, найдёт все ошибки на этапе компиляции.
А про всякие сырые указатели и смарт указали расскажем как-нибудь потом, потому что если вы узнаете про них прямо сейчас, у вас возникнет недоумение, зачем вообще городили этот огород, если всё равно потом всё приходится делать через обёртки вокруг сырых указателей и UnsafeCell.
Порой мне кажется, что Safe Rust не обладает даже полнотой по Тьюрингу.
Самое прикольное, когда в интернациональной команде работает более одного русского, и все они используют таинственную "синюю программу". У иностранцев шок и недоумение.
Откуда вы узнали, что в /home есть файл fias.xml, какой у него размер, и что у него внутри? Откуда вы узнали, что есть папка /home/egrul и что в ней лежит?
Наверное, вы всё-таки сперва делали cd, ls и cat.
Так вот, ls, cd и cat гораздо быстрее и удобнее делать в файловом менеджере, чем в голом шелле.
А рандомное число из памяти я получил в safe коде.
Теперь представьте, что это было не в одном файле:
hackв каком-то крейтеmainу ничего не подозревающего программиста, использующего этот крейтЕсли бы вы хоть раз заглянули в исходный код стандартной библиотеки, а не в рекламные проспекты, вы бы увидели, что сплошь и рядом там оборачивание в runtime проверки. Поэтому утверждение не ложное.
Если оптимизатору иногда удаётся их выбросить - отлично, ребята в LLVM хорошо поработали. Что никак не отменяет того факта, что моё высказывание истинно.
Hold my beer
Я просто жду, когда вы возьмёте назад слова
и извинитесь ;)
Спасибо, что нашли ещё одно подтверждение моих слов ;)
Оптимизатор, если ему подсказать, уберёт ненужные проверки, которые изначально там всё-таки были. А если не подсказать, то не уберёт. Простите, что с плохими новостями, но деда Мороза не существует.
Для опровержения любой гипотезы достаточно одного контр-примера.
И я его привел. Моя позиция подтверждена конкретным фактом.
Вы же продолжаете демагогию в худших традициях маркетинга и пропаганды.
Я так и думал, что вы верите в магию, и считаете, что unsafe можно превратить в safe без runtime проверок. И что вы никогда не заглядывали в godbolt, чтобы посмотреть, что там на самом деле получается.
Тут вопрос скорее в маркетинговой сфере.
Громкие заявления: "У нас крутая система владения и заимствования, которая позволяет управлять памятью без GC."
Реальность: "Утечки ищите и устраняйте сами."
Ах да. Там же какая-то магическая сила превращает unsafe в safe всемогущей властью компилятора.
Тем временем, RefCell:
Код
try_borrowдаже постить не буду ;)Ещё где-то внизу маленькими буквами пишем: "утечки памяти не считаются UB, разбирайтесь с ними сами, но на сайте продукта всё равно поставьте шилдик Made with Rust"
То есть как бы говоришь: "Спасибо, Rust, но мы как-нибудь без тебя" ;)
Пишем unsafe код.
Оборачиваем его в runtime проверки.
Пишем в первой главе руководства, что всё за нас делает компилятор без оверхеда.
???
PROFIT!
Жёлтый ромб,
Белый круг
На растрескавшейся земле.
Перекрёстные ссылки и Rust - взаимоисключающие понятия.
Чтобы сделал любую структуру данных сложнее массива, вам придётся использовать смарт поинтеры. Которые, сюрприз-сюрприз, заимствованы у С++. И это единственное заимствование, которое имеет практический смысл.
Все введения в Rust начинаются с рассказа о том, как прекрасная система заимствования помогает писать вам безопасный код, а компилятор, ваш лучший друг, найдёт все ошибки на этапе компиляции.
А про всякие сырые указатели и смарт указали расскажем как-нибудь потом, потому что если вы узнаете про них прямо сейчас, у вас возникнет недоумение, зачем вообще городили этот огород, если всё равно потом всё приходится делать через обёртки вокруг сырых указателей и UnsafeCell.
Порой мне кажется, что Safe Rust не обладает даже полнотой по Тьюрингу.
Пробежать по двусвязному списку и в каждом узле прибавить единичку.
Элементарная задачка на любом языке, кроме Rust.
Сложно было с племянниками смотреть фильм и объяснять им, то 2015 год - это будущее.
Самое прикольное, когда в интернациональной команде работает более одного русского, и все они используют таинственную "синюю программу". У иностранцев шок и недоумение.
Прекрасно работает. После установки Far наконец-то смог нормально пользоваться этой шайтан-машиной.
Откуда вы узнали, что в /home есть файл fias.xml, какой у него размер, и что у него внутри? Откуда вы узнали, что есть папка /home/egrul и что в ней лежит?
Наверное, вы всё-таки сперва делали cd, ls и cat.
Так вот, ls, cd и cat гораздо быстрее и удобнее делать в файловом менеджере, чем в голом шелле.