Он стал основным не просто потому, что автор так хотел, а потому, что он объективно выигрывал у конкурентов по неким важным для конечного юзера параметрам. А жизнь расставила, да — проекта больше нет, и кому от этого лучше? Хейтеркам-пуристам? Или тем, кто реально его использовал? Вопрос риторический.
RefCell использовать не просто скучно, но еще и небесплатно, так как это подразумевает определенные накладные расходы — там ЕМНИП есть счетчик, значение которого проверяется и инкрементируется/декрементируется а-ля shared_ptr в C++.
Автор мог сколько угодно «позиционировать свой фреймворк как основной для раста», но если бы его фреймворк не показывал отличных результатов в ряде публичных тестов, и если бы его не было объективно удобно использовать, то это «позиционирование» исключительно самим автором бы и ограничилось, исключительно среди самого себя :)
Просто людям важно не только да и не столько не то, «канонический» там код или не «канонический», а то, что продукт работает быстро, имеет широкий функционал и удобный API. Это не плохо и не хорошо, это реальность. Это код для продакшна, а не для выставки на ВДНХ в павильоне имени Раста. А то что автор пошел на некие компромиссы с идиоматичностью реализации в пользу скорости и, возможно, удобства — да, так бывает, что такой выбор приходится делать. Если кто-то может написать так же или лучше, но с сохранением идиоматичности — ну вперед, никто же не мешает.
Не волнуйтесь — она бы оказалась либо «не того цвета кожи», либо «не бодипозитивной» (поддерживает форму, занимается спортом), либо еще что-нибудь. Был бы человек, а статья найдется.
На мой взгляд, он действительно недостаточно толстокож, и это проблема. Другой вопрос, что набигающие с криками «тебе не следует писать на раст» непонятные граждане, чьи кривые патчи он отклонял — это отдельная проблема, не все способны это выдержать.
Ирония в том, что человек, о котором идет речь — это отнюдь не новичок, а автор «гордости растостроения», actix-web — чуть ли самого быстрого фреймворка из аналогичных существующих (и не только на расте ЕМНИП). А советующие ему «специалисты» в большинстве своем — в лучшем случае авторы патчей на пару десятков строк к проектам других людей, никогда и близко не писавшие в одно рыло проект такого уровня, как actix-web.
Ну изначально это было написано именно таким образом тоже наверное не просто так — возможно, этот код вызывался во всяких нагруженных местах, и лишние проверки в этом месте сильно просаживали производительность. В общем, клеймить автора за то что он хочет подумать и сделать как лучше, а не тяп-ляп залепить формально пластырем, я бы не стал.
Насколько я понял, все «негативные последствия» происходили исключительно в приватном API, которым никто извне пользоваться не должен, и то при условии, если его неправильно используют. Скажем, где-то глубоко внутри своих библиотек rust все равно использует те же malloc() и free() (или их аналоги), которые, если их вызывать в неправильном порядке, будут делать плохое. И что же? С этим ничего не поделать.
Я так понимаю про «скучный» код было написано в том смысле, что он «решал» проблему чисто формально — убирал unsafe ради убирания unsafe без учета причин, по которым unsafe в этом месте вообще изначально появился.
Ну, знаете, от того, что этому поведению навесили ярлычок «баг», оно не перестает быть, как я уже выше написал, по сути документированным компромиссом между безопасностью и скоростью в пользу скорости. И почему-то никакой травли разработчиков раста со стороны коммьюнити не возникает, хотя те стойко отклоняют предлагаемые «исправления» этого «бага» в стиле вышеупомянутого «задепрекейтить as».
<троллинг>А как иначе написать «самый быстрый веб-фреймворк»</троллинг>