заржавелли
Mar. 21st, 2026 12:34 amСтрадаю с программой на Рже с помошью двух эяев (один сам программу ковыряет, у другого я спрашиваю вопросы для ручных изменений). Я должен сказать, что их правила констанстности - это просто п.здец, без эяя за ними вручную усмотреть невозможно - постоянно какая-то херня ломается. Эяй - и тот иногда попадает только с третьей-четвертой-пятой попытки, и при этом иногда пытается нахерачить какие-то совсем ужасные изменения, от которых его приходится отговаривать вручную.
Более того, у них нельзя иметь несколько ссылок типа shared_ptr (Rc или Arc) на один и тот же объект, и при этом вызывать на нем неконстантные методы с внутренней синхронизацией. Нет, надо чтобы или была ровно одна ссылка, или мутексом синхронизировать вообще доступ к объекту. Вкладывание мутекса в Arc при этом портит свойства автоматического сравнения и их надо вручную заворачивать.
Ну, то есть, на самом деле по-нормальному делать можно, но только в режиме unsafe. Нет, ну я знаю, что на нем в безопасном режиме нельзя даже классические списки делать. Но чтоб запрещать доступ с нескольких ссылок - это вообще-вообще.
Между прочим, превращение Option<i32> в Option<i64> делается хитрым паттерном x.map(|v| v as i64), простого конструктора для этого недостаточно.
Невероятно дебильный, многословный, и уродливый язык. Хотя до джавной кривизны, может, и не совсем дотягивает. А может и дотягивает.
P.S. Я вот тут еще подумал, и на самом деле их критерий для Arc - не только утомительный, но и неправильный. Правильным критерием должно быть что во время доступа к объекту по ссылке эта ссылка не исчезнет.
Более того, у них нельзя иметь несколько ссылок типа shared_ptr (Rc или Arc) на один и тот же объект, и при этом вызывать на нем неконстантные методы с внутренней синхронизацией. Нет, надо чтобы или была ровно одна ссылка, или мутексом синхронизировать вообще доступ к объекту. Вкладывание мутекса в Arc при этом портит свойства автоматического сравнения и их надо вручную заворачивать.
Ну, то есть, на самом деле по-нормальному делать можно, но только в режиме unsafe. Нет, ну я знаю, что на нем в безопасном режиме нельзя даже классические списки делать. Но чтоб запрещать доступ с нескольких ссылок - это вообще-вообще.
Между прочим, превращение Option<i32> в Option<i64> делается хитрым паттерном x.map(|v| v as i64), простого конструктора для этого недостаточно.
Невероятно дебильный, многословный, и уродливый язык. Хотя до джавной кривизны, может, и не совсем дотягивает. А может и дотягивает.
P.S. Я вот тут еще подумал, и на самом деле их критерий для Arc - не только утомительный, но и неправильный. Правильным критерием должно быть что во время доступа к объекту по ссылке эта ссылка не исчезнет.